aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/sungem.c8
-rw-r--r--drivers/net/sungem.h8
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 */
830struct gem_txd { 830struct 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 */
865struct gem_rxd { 865struct 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 */