diff options
author | David S. Miller <davem@davemloft.net> | 2011-09-22 03:23:13 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-09-22 03:23:13 -0400 |
commit | 8decf868790b48a727d7e7ca164f2bcd3c1389c0 (patch) | |
tree | b759a5f861f842af7ea76f9011b579d06e9d5508 /drivers/net/ethernet/aeroflex/greth.c | |
parent | 3fc72370186be2f9d4d6ef06d99e1caa5d92c564 (diff) | |
parent | d93dc5c4478c1fd5de85a3e8aece9aad7bbae044 (diff) |
Merge branch 'master' of github.com:davem330/net
Conflicts:
MAINTAINERS
drivers/net/Kconfig
drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
drivers/net/ethernet/broadcom/tg3.c
drivers/net/wireless/iwlwifi/iwl-pci.c
drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c
drivers/net/wireless/rt2x00/rt2800usb.c
drivers/net/wireless/wl12xx/main.c
Diffstat (limited to 'drivers/net/ethernet/aeroflex/greth.c')
-rw-r--r-- | drivers/net/ethernet/aeroflex/greth.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/ethernet/aeroflex/greth.c b/drivers/net/ethernet/aeroflex/greth.c index bc3bd34c43f1..6715bf54f04e 100644 --- a/drivers/net/ethernet/aeroflex/greth.c +++ b/drivers/net/ethernet/aeroflex/greth.c | |||
@@ -427,6 +427,7 @@ greth_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
427 | dma_sync_single_for_device(greth->dev, dma_addr, skb->len, DMA_TO_DEVICE); | 427 | dma_sync_single_for_device(greth->dev, dma_addr, skb->len, DMA_TO_DEVICE); |
428 | 428 | ||
429 | status = GRETH_BD_EN | GRETH_BD_IE | (skb->len & GRETH_BD_LEN); | 429 | status = GRETH_BD_EN | GRETH_BD_IE | (skb->len & GRETH_BD_LEN); |
430 | greth->tx_bufs_length[greth->tx_next] = skb->len & GRETH_BD_LEN; | ||
430 | 431 | ||
431 | /* Wrap around descriptor ring */ | 432 | /* Wrap around descriptor ring */ |
432 | if (greth->tx_next == GRETH_TXBD_NUM_MASK) { | 433 | if (greth->tx_next == GRETH_TXBD_NUM_MASK) { |
@@ -489,7 +490,8 @@ greth_start_xmit_gbit(struct sk_buff *skb, struct net_device *dev) | |||
489 | if (nr_frags != 0) | 490 | if (nr_frags != 0) |
490 | status = GRETH_TXBD_MORE; | 491 | status = GRETH_TXBD_MORE; |
491 | 492 | ||
492 | status |= GRETH_TXBD_CSALL; | 493 | if (skb->ip_summed == CHECKSUM_PARTIAL) |
494 | status |= GRETH_TXBD_CSALL; | ||
493 | status |= skb_headlen(skb) & GRETH_BD_LEN; | 495 | status |= skb_headlen(skb) & GRETH_BD_LEN; |
494 | if (greth->tx_next == GRETH_TXBD_NUM_MASK) | 496 | if (greth->tx_next == GRETH_TXBD_NUM_MASK) |
495 | status |= GRETH_BD_WR; | 497 | status |= GRETH_BD_WR; |
@@ -512,7 +514,9 @@ greth_start_xmit_gbit(struct sk_buff *skb, struct net_device *dev) | |||
512 | greth->tx_skbuff[curr_tx] = NULL; | 514 | greth->tx_skbuff[curr_tx] = NULL; |
513 | bdp = greth->tx_bd_base + curr_tx; | 515 | bdp = greth->tx_bd_base + curr_tx; |
514 | 516 | ||
515 | status = GRETH_TXBD_CSALL | GRETH_BD_EN; | 517 | status = GRETH_BD_EN; |
518 | if (skb->ip_summed == CHECKSUM_PARTIAL) | ||
519 | status |= GRETH_TXBD_CSALL; | ||
516 | status |= frag->size & GRETH_BD_LEN; | 520 | status |= frag->size & GRETH_BD_LEN; |
517 | 521 | ||
518 | /* Wrap around descriptor ring */ | 522 | /* Wrap around descriptor ring */ |
@@ -637,6 +641,7 @@ static void greth_clean_tx(struct net_device *dev) | |||
637 | dev->stats.tx_fifo_errors++; | 641 | dev->stats.tx_fifo_errors++; |
638 | } | 642 | } |
639 | dev->stats.tx_packets++; | 643 | dev->stats.tx_packets++; |
644 | dev->stats.tx_bytes += greth->tx_bufs_length[greth->tx_last]; | ||
640 | greth->tx_last = NEXT_TX(greth->tx_last); | 645 | greth->tx_last = NEXT_TX(greth->tx_last); |
641 | greth->tx_free++; | 646 | greth->tx_free++; |
642 | } | 647 | } |
@@ -691,6 +696,7 @@ static void greth_clean_tx_gbit(struct net_device *dev) | |||
691 | greth->tx_skbuff[greth->tx_last] = NULL; | 696 | greth->tx_skbuff[greth->tx_last] = NULL; |
692 | 697 | ||
693 | greth_update_tx_stats(dev, stat); | 698 | greth_update_tx_stats(dev, stat); |
699 | dev->stats.tx_bytes += skb->len; | ||
694 | 700 | ||
695 | bdp = greth->tx_bd_base + greth->tx_last; | 701 | bdp = greth->tx_bd_base + greth->tx_last; |
696 | 702 | ||
@@ -792,6 +798,7 @@ static int greth_rx(struct net_device *dev, int limit) | |||
792 | memcpy(skb_put(skb, pkt_len), phys_to_virt(dma_addr), pkt_len); | 798 | memcpy(skb_put(skb, pkt_len), phys_to_virt(dma_addr), pkt_len); |
793 | 799 | ||
794 | skb->protocol = eth_type_trans(skb, dev); | 800 | skb->protocol = eth_type_trans(skb, dev); |
801 | dev->stats.rx_bytes += pkt_len; | ||
795 | dev->stats.rx_packets++; | 802 | dev->stats.rx_packets++; |
796 | netif_receive_skb(skb); | 803 | netif_receive_skb(skb); |
797 | } | 804 | } |
@@ -906,6 +913,7 @@ static int greth_rx_gbit(struct net_device *dev, int limit) | |||
906 | 913 | ||
907 | skb->protocol = eth_type_trans(skb, dev); | 914 | skb->protocol = eth_type_trans(skb, dev); |
908 | dev->stats.rx_packets++; | 915 | dev->stats.rx_packets++; |
916 | dev->stats.rx_bytes += pkt_len; | ||
909 | netif_receive_skb(skb); | 917 | netif_receive_skb(skb); |
910 | 918 | ||
911 | greth->rx_skbuff[greth->rx_cur] = newskb; | 919 | greth->rx_skbuff[greth->rx_cur] = newskb; |