diff options
author | Sucheta Chakraborty <sucheta.chakraborty@qlogic.com> | 2010-03-07 19:14:46 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-08 13:45:29 -0500 |
commit | 8bfe8b91b8b877066c8ac788f59a40324eaac6d8 (patch) | |
tree | a2347ff6e35f69af10a673e9173630a5e7e7eebd /drivers/net/qlcnic/qlcnic_main.c | |
parent | 8bae5698616ac336938684ce7a7370299bd55d01 (diff) |
qlcnic: additional driver statistics.
Statistics added for lro/lso bytes, count for tx stop queue and
wake queue and skb alloc failure count.
Signed-off-by: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/qlcnic/qlcnic_main.c')
-rw-r--r-- | drivers/net/qlcnic/qlcnic_main.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/qlcnic/qlcnic_main.c b/drivers/net/qlcnic/qlcnic_main.c index 665e8e56b6a8..fc721564e69e 100644 --- a/drivers/net/qlcnic/qlcnic_main.c +++ b/drivers/net/qlcnic/qlcnic_main.c | |||
@@ -118,6 +118,7 @@ qlcnic_update_cmd_producer(struct qlcnic_adapter *adapter, | |||
118 | if (qlcnic_tx_avail(tx_ring) <= TX_STOP_THRESH) { | 118 | if (qlcnic_tx_avail(tx_ring) <= TX_STOP_THRESH) { |
119 | netif_stop_queue(adapter->netdev); | 119 | netif_stop_queue(adapter->netdev); |
120 | smp_mb(); | 120 | smp_mb(); |
121 | adapter->stats.xmit_off++; | ||
121 | } | 122 | } |
122 | } | 123 | } |
123 | 124 | ||
@@ -1385,6 +1386,7 @@ qlcnic_tso_check(struct net_device *netdev, | |||
1385 | int copied, offset, copy_len, hdr_len = 0, tso = 0, vlan_oob = 0; | 1386 | int copied, offset, copy_len, hdr_len = 0, tso = 0, vlan_oob = 0; |
1386 | struct cmd_desc_type0 *hwdesc; | 1387 | struct cmd_desc_type0 *hwdesc; |
1387 | struct vlan_ethhdr *vh; | 1388 | struct vlan_ethhdr *vh; |
1389 | struct qlcnic_adapter *adapter = netdev_priv(netdev); | ||
1388 | 1390 | ||
1389 | if (protocol == cpu_to_be16(ETH_P_8021Q)) { | 1391 | if (protocol == cpu_to_be16(ETH_P_8021Q)) { |
1390 | 1392 | ||
@@ -1494,6 +1496,7 @@ qlcnic_tso_check(struct net_device *netdev, | |||
1494 | 1496 | ||
1495 | tx_ring->producer = producer; | 1497 | tx_ring->producer = producer; |
1496 | barrier(); | 1498 | barrier(); |
1499 | adapter->stats.lso_frames++; | ||
1497 | } | 1500 | } |
1498 | 1501 | ||
1499 | static int | 1502 | static int |
@@ -1573,6 +1576,7 @@ qlcnic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1573 | 1576 | ||
1574 | if (unlikely(no_of_desc + 2 > qlcnic_tx_avail(tx_ring))) { | 1577 | if (unlikely(no_of_desc + 2 > qlcnic_tx_avail(tx_ring))) { |
1575 | netif_stop_queue(netdev); | 1578 | netif_stop_queue(netdev); |
1579 | adapter->stats.xmit_off++; | ||
1576 | return NETDEV_TX_BUSY; | 1580 | return NETDEV_TX_BUSY; |
1577 | } | 1581 | } |
1578 | 1582 | ||
@@ -1880,6 +1884,7 @@ static int qlcnic_process_cmd_ring(struct qlcnic_adapter *adapter) | |||
1880 | if (qlcnic_tx_avail(tx_ring) > TX_STOP_THRESH) { | 1884 | if (qlcnic_tx_avail(tx_ring) > TX_STOP_THRESH) { |
1881 | netif_wake_queue(netdev); | 1885 | netif_wake_queue(netdev); |
1882 | adapter->tx_timeo_cnt = 0; | 1886 | adapter->tx_timeo_cnt = 0; |
1887 | adapter->stats.xmit_on++; | ||
1883 | } | 1888 | } |
1884 | __netif_tx_unlock(tx_ring->txq); | 1889 | __netif_tx_unlock(tx_ring->txq); |
1885 | } | 1890 | } |