Commit 5ba15264 authored by Ben Collins's avatar Ben Collins

[PATCH] Update IEEE1394 (r952)

 OHCI1394: Merge CONFIG_PPC_ALL changes.
 DV1394  : Fix broken endian conversions.
 ETH1394 : Fix oopses due to non-linear sk_buff's.
parent 4eb7de4f
...@@ -2289,16 +2289,15 @@ static void ir_tasklet_func(unsigned long data) ...@@ -2289,16 +2289,15 @@ static void ir_tasklet_func(unsigned long data)
/* get the descriptor based on packet_buffer cursor */ /* get the descriptor based on packet_buffer cursor */
f = video->frames[video->current_packet / MAX_PACKETS]; f = video->frames[video->current_packet / MAX_PACKETS];
block = &(f->descriptor_pool[video->current_packet % MAX_PACKETS]); block = &(f->descriptor_pool[video->current_packet % MAX_PACKETS]);
xferstatus = le16_to_cpu(block->u.in.il.q[3] >> 16); xferstatus = le32_to_cpu(block->u.in.il.q[3]) >> 16;
xferstatus &= 0x1F; xferstatus &= 0x1F;
irq_printk("ir_tasklet_func: xferStatus/resCount [%d] = 0x%08x\n", i, le32_to_cpu(block->u.in.il.q[3]) );
/* get the current frame */ /* get the current frame */
f = video->frames[video->active_frame]; f = video->frames[video->active_frame];
/* exclude empty packet */ /* exclude empty packet */
if (packet_length > 8 && xferstatus == 0x11) { if (packet_length > 8 && xferstatus == 0x11) {
irq_printk("ir_tasklet_func: xferStatus/resCount [%d] = 0x%08x\n", i, le32_to_cpu(block->u.in.il.q[3]) );
/* check for start of frame */ /* check for start of frame */
/* DRD> Changed to check section type ([0]>>5==0) /* DRD> Changed to check section type ([0]>>5==0)
and dif sequence ([1]>>4==0) */ and dif sequence ([1]>>4==0) */
...@@ -2380,7 +2379,7 @@ static void ir_tasklet_func(unsigned long data) ...@@ -2380,7 +2379,7 @@ static void ir_tasklet_func(unsigned long data)
} else { } else {
prev->u.in.il.q[0] |= 3 << 20; /* enable interrupt */ prev->u.in.il.q[0] |= 3 << 20; /* enable interrupt */
} }
prev->u.in.il.q[2] = (cpu_to_le32(next_dma) | 1); /* set Z=1 */ prev->u.in.il.q[2] = cpu_to_le32(next_dma | 1); /* set Z=1 */
wmb(); wmb();
/* wake up DMA in case it fell asleep */ /* wake up DMA in case it fell asleep */
......
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
#define TRACE() printk(KERN_ERR "eth1394:%s[%d] ---- TRACE\n", __FUNCTION__, __LINE__) #define TRACE() printk(KERN_ERR "eth1394:%s[%d] ---- TRACE\n", __FUNCTION__, __LINE__)
static char version[] __devinitdata = static char version[] __devinitdata =
"$Rev: 945 $ Ben Collins <bcollins@debian.org>"; "$Rev: 951 $ Ben Collins <bcollins@debian.org>";
struct fragment_info { struct fragment_info {
struct list_head list; struct list_head list;
...@@ -1424,6 +1424,12 @@ static int ether1394_tx (struct sk_buff *skb, struct net_device *dev) ...@@ -1424,6 +1424,12 @@ static int ether1394_tx (struct sk_buff *skb, struct net_device *dev)
struct packet_task *ptask; struct packet_task *ptask;
struct node_entry *ne; struct node_entry *ne;
if (skb_is_nonlinear(skb)) {
ret = skb_linearize(skb, kmflags);
if(ret)
goto fail;
}
ptask = kmem_cache_alloc(packet_task_cache, kmflags); ptask = kmem_cache_alloc(packet_task_cache, kmflags);
if(ptask == NULL) { if(ptask == NULL) {
ret = -ENOMEM; ret = -ENOMEM;
......
...@@ -164,7 +164,7 @@ printk(level "%s: " fmt "\n" , OHCI1394_DRIVER_NAME , ## args) ...@@ -164,7 +164,7 @@ printk(level "%s: " fmt "\n" , OHCI1394_DRIVER_NAME , ## args)
printk(level "%s_%d: " fmt "\n" , OHCI1394_DRIVER_NAME, card , ## args) printk(level "%s_%d: " fmt "\n" , OHCI1394_DRIVER_NAME, card , ## args)
static char version[] __devinitdata = static char version[] __devinitdata =
"$Rev: 938 $ Ben Collins <bcollins@debian.org>"; "$Rev: 948 $ Ben Collins <bcollins@debian.org>";
/* Module Parameters */ /* Module Parameters */
static int phys_dma = 1; static int phys_dma = 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment