diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/sungem.c | 8 | ||||
-rw-r--r-- | drivers/net/sungem.h | 8 |
2 files changed, 9 insertions, 7 deletions
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c index 68872142530b..467d80dc3b33 100644 --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c | |||
@@ -758,6 +758,7 @@ static int gem_rx(struct gem *gp, int work_to_do) | |||
758 | { | 758 | { |
759 | int entry, drops, work_done = 0; | 759 | int entry, drops, work_done = 0; |
760 | u32 done; | 760 | u32 done; |
761 | __sum16 csum; | ||
761 | 762 | ||
762 | if (netif_msg_rx_status(gp)) | 763 | if (netif_msg_rx_status(gp)) |
763 | printk(KERN_DEBUG "%s: rx interrupt, done: %d, rx_new: %d\n", | 764 | printk(KERN_DEBUG "%s: rx interrupt, done: %d, rx_new: %d\n", |
@@ -769,7 +770,7 @@ static int gem_rx(struct gem *gp, int work_to_do) | |||
769 | for (;;) { | 770 | for (;;) { |
770 | struct gem_rxd *rxd = &gp->init_block->rxd[entry]; | 771 | struct gem_rxd *rxd = &gp->init_block->rxd[entry]; |
771 | struct sk_buff *skb; | 772 | struct sk_buff *skb; |
772 | u64 status = cpu_to_le64(rxd->status_word); | 773 | u64 status = le64_to_cpu(rxd->status_word); |
773 | dma_addr_t dma_addr; | 774 | dma_addr_t dma_addr; |
774 | int len; | 775 | int len; |
775 | 776 | ||
@@ -811,7 +812,7 @@ static int gem_rx(struct gem *gp, int work_to_do) | |||
811 | goto next; | 812 | goto next; |
812 | } | 813 | } |
813 | 814 | ||
814 | dma_addr = cpu_to_le64(rxd->buffer); | 815 | dma_addr = le64_to_cpu(rxd->buffer); |
815 | if (len > RX_COPY_THRESHOLD) { | 816 | if (len > RX_COPY_THRESHOLD) { |
816 | struct sk_buff *new_skb; | 817 | struct sk_buff *new_skb; |
817 | 818 | ||
@@ -853,7 +854,8 @@ static int gem_rx(struct gem *gp, int work_to_do) | |||
853 | skb = copy_skb; | 854 | skb = copy_skb; |
854 | } | 855 | } |
855 | 856 | ||
856 | skb->csum = ntohs((status & RXDCTRL_TCPCSUM) ^ 0xffff); | 857 | csum = (__force __sum16)htons((status & RXDCTRL_TCPCSUM) ^ 0xffff); |
858 | skb->csum = csum_unfold(csum); | ||
857 | skb->ip_summed = CHECKSUM_COMPLETE; | 859 | skb->ip_summed = CHECKSUM_COMPLETE; |
858 | skb->protocol = eth_type_trans(skb, gp->dev); | 860 | skb->protocol = eth_type_trans(skb, gp->dev); |
859 | 861 | ||
diff --git a/drivers/net/sungem.h b/drivers/net/sungem.h index 76d760acc9e2..f7a02917ce5e 100644 --- a/drivers/net/sungem.h +++ b/drivers/net/sungem.h | |||
@@ -828,8 +828,8 @@ | |||
828 | * DMA mappings for a transmitted packet. | 828 | * DMA mappings for a transmitted packet. |
829 | */ | 829 | */ |
830 | struct gem_txd { | 830 | struct gem_txd { |
831 | u64 control_word; | 831 | __le64 control_word; |
832 | u64 buffer; | 832 | __le64 buffer; |
833 | }; | 833 | }; |
834 | 834 | ||
835 | #define TXDCTRL_BUFSZ 0x0000000000007fffULL /* Buffer Size */ | 835 | #define TXDCTRL_BUFSZ 0x0000000000007fffULL /* Buffer Size */ |
@@ -863,8 +863,8 @@ struct gem_txd { | |||
863 | * by the host driver just as in the TX descriptor case above. | 863 | * by the host driver just as in the TX descriptor case above. |
864 | */ | 864 | */ |
865 | struct gem_rxd { | 865 | struct gem_rxd { |
866 | u64 status_word; | 866 | __le64 status_word; |
867 | u64 buffer; | 867 | __le64 buffer; |
868 | }; | 868 | }; |
869 | 869 | ||
870 | #define RXDCTRL_TCPCSUM 0x000000000000ffffULL /* TCP Pseudo-CSUM */ | 870 | #define RXDCTRL_TCPCSUM 0x000000000000ffffULL /* TCP Pseudo-CSUM */ |