diff options
author | Dhananjay Phadke <dhananjay@netxen.com> | 2007-09-03 01:03:35 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:51:52 -0400 |
commit | 200eef20db6de7535438c9af9becc8169c6cb6c0 (patch) | |
tree | 119bd4a21e176dfaf7a0b58687ad84c57fe79799 /drivers | |
parent | 1d3bb996481e116f5f2b127cbd29b83365d2cf62 (diff) |
netxen: ethtool fixes
Resubmitting the patch.
This patch improves ethtool support for printing correct ring statistics,
segmentation offload status, etc.
Signed-off by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/netxen/netxen_nic.h | 2 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_ethtool.c | 27 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_init.c | 7 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 1 |
4 files changed, 28 insertions, 9 deletions
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 7bbd5d14175f..fbc2553275dc 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h | |||
@@ -919,7 +919,7 @@ struct netxen_adapter { | |||
919 | u16 link_duplex; | 919 | u16 link_duplex; |
920 | u16 state; | 920 | u16 state; |
921 | u16 link_autoneg; | 921 | u16 link_autoneg; |
922 | int rcsum; | 922 | int rx_csum; |
923 | int status; | 923 | int status; |
924 | spinlock_t stats_lock; | 924 | spinlock_t stats_lock; |
925 | 925 | ||
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c index 78e42316e70f..cfb847b0cae3 100644 --- a/drivers/net/netxen/netxen_nic_ethtool.c +++ b/drivers/net/netxen/netxen_nic_ethtool.c | |||
@@ -516,17 +516,17 @@ netxen_nic_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring) | |||
516 | ring->rx_jumbo_pending = 0; | 516 | ring->rx_jumbo_pending = 0; |
517 | for (i = 0; i < MAX_RCV_CTX; ++i) { | 517 | for (i = 0; i < MAX_RCV_CTX; ++i) { |
518 | ring->rx_pending += adapter->recv_ctx[i]. | 518 | ring->rx_pending += adapter->recv_ctx[i]. |
519 | rcv_desc[RCV_DESC_NORMAL_CTXID].rcv_pending; | 519 | rcv_desc[RCV_DESC_NORMAL_CTXID].max_rx_desc_count; |
520 | ring->rx_jumbo_pending += adapter->recv_ctx[i]. | 520 | ring->rx_jumbo_pending += adapter->recv_ctx[i]. |
521 | rcv_desc[RCV_DESC_JUMBO_CTXID].rcv_pending; | 521 | rcv_desc[RCV_DESC_JUMBO_CTXID].max_rx_desc_count; |
522 | } | 522 | } |
523 | ring->tx_pending = adapter->max_tx_desc_count; | ||
523 | 524 | ||
524 | ring->rx_max_pending = adapter->max_rx_desc_count; | 525 | ring->rx_max_pending = MAX_RCV_DESCRIPTORS; |
525 | ring->tx_max_pending = adapter->max_tx_desc_count; | 526 | ring->tx_max_pending = MAX_CMD_DESCRIPTORS_HOST; |
526 | ring->rx_jumbo_max_pending = adapter->max_jumbo_rx_desc_count; | 527 | ring->rx_jumbo_max_pending = MAX_JUMBO_RCV_DESCRIPTORS; |
527 | ring->rx_mini_max_pending = 0; | 528 | ring->rx_mini_max_pending = 0; |
528 | ring->rx_mini_pending = 0; | 529 | ring->rx_mini_pending = 0; |
529 | ring->rx_jumbo_pending = 0; | ||
530 | } | 530 | } |
531 | 531 | ||
532 | static void | 532 | static void |
@@ -731,6 +731,19 @@ netxen_nic_get_ethtool_stats(struct net_device *dev, | |||
731 | } | 731 | } |
732 | } | 732 | } |
733 | 733 | ||
734 | static u32 netxen_nic_get_rx_csum(struct net_device *dev) | ||
735 | { | ||
736 | struct netxen_adapter *adapter = netdev_priv(dev); | ||
737 | return adapter->rx_csum; | ||
738 | } | ||
739 | |||
740 | static int netxen_nic_set_rx_csum(struct net_device *dev, u32 data) | ||
741 | { | ||
742 | struct netxen_adapter *adapter = netdev_priv(dev); | ||
743 | adapter->rx_csum = !!data; | ||
744 | return 0; | ||
745 | } | ||
746 | |||
734 | struct ethtool_ops netxen_nic_ethtool_ops = { | 747 | struct ethtool_ops netxen_nic_ethtool_ops = { |
735 | .get_settings = netxen_nic_get_settings, | 748 | .get_settings = netxen_nic_get_settings, |
736 | .set_settings = netxen_nic_set_settings, | 749 | .set_settings = netxen_nic_set_settings, |
@@ -751,4 +764,6 @@ struct ethtool_ops netxen_nic_ethtool_ops = { | |||
751 | .get_strings = netxen_nic_get_strings, | 764 | .get_strings = netxen_nic_get_strings, |
752 | .get_ethtool_stats = netxen_nic_get_ethtool_stats, | 765 | .get_ethtool_stats = netxen_nic_get_ethtool_stats, |
753 | .get_sset_count = netxen_get_sset_count, | 766 | .get_sset_count = netxen_get_sset_count, |
767 | .get_rx_csum = netxen_nic_get_rx_csum, | ||
768 | .set_rx_csum = netxen_nic_set_rx_csum, | ||
754 | }; | 769 | }; |
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index 1811bcb8c380..37589265297e 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
@@ -1118,10 +1118,13 @@ netxen_process_rcv(struct netxen_adapter *adapter, int ctxid, | |||
1118 | 1118 | ||
1119 | skb = (struct sk_buff *)buffer->skb; | 1119 | skb = (struct sk_buff *)buffer->skb; |
1120 | 1120 | ||
1121 | if (likely(netxen_get_sts_status(desc) == STATUS_CKSUM_OK)) { | 1121 | if (likely(adapter->rx_csum && |
1122 | netxen_get_sts_status(desc) == STATUS_CKSUM_OK)) { | ||
1122 | adapter->stats.csummed++; | 1123 | adapter->stats.csummed++; |
1123 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1124 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
1124 | } | 1125 | } else |
1126 | skb->ip_summed = CHECKSUM_NONE; | ||
1127 | |||
1125 | skb->dev = netdev; | 1128 | skb->dev = netdev; |
1126 | if (desc_ctx == RCV_DESC_LRO_CTXID) { | 1129 | if (desc_ctx == RCV_DESC_LRO_CTXID) { |
1127 | /* True length was only available on the last pkt */ | 1130 | /* True length was only available on the last pkt */ |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index b9cde65e7f31..2a1d6d7ec351 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -409,6 +409,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
409 | /* This will be reset for mezz cards */ | 409 | /* This will be reset for mezz cards */ |
410 | adapter->portnum = pci_func_id; | 410 | adapter->portnum = pci_func_id; |
411 | adapter->status &= ~NETXEN_NETDEV_STATUS; | 411 | adapter->status &= ~NETXEN_NETDEV_STATUS; |
412 | adapter->rx_csum = 1; | ||
412 | 413 | ||
413 | netdev->open = netxen_nic_open; | 414 | netdev->open = netxen_nic_open; |
414 | netdev->stop = netxen_nic_close; | 415 | netdev->stop = netxen_nic_close; |