qlcnic: Fix ethtool statistics collection
authorShahed Shaikh <shahed.shaikh@qlogic.com>
Fri, 8 Mar 2013 09:53:52 +0000 (09:53 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 9 Mar 2013 21:09:19 +0000 (16:09 -0500)
o Properly fill statistics data into buffer.
  Update buffer pointer properly after filling statistics data into buffer.

Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c

index f687a6354e4a9effb26f5a13d551531b89f30747..f4f279d5cba455c09bbf3242644e5849970da0a3 100644 (file)
@@ -1071,8 +1071,7 @@ qlcnic_get_strings(struct net_device *dev, u32 stringset, u8 *data)
        }
 }
 
-static void
-qlcnic_fill_stats(u64 *data, void *stats, int type)
+static u64 *qlcnic_fill_stats(u64 *data, void *stats, int type)
 {
        if (type == QLCNIC_MAC_STATS) {
                struct qlcnic_mac_statistics *mac_stats =
@@ -1121,6 +1120,7 @@ qlcnic_fill_stats(u64 *data, void *stats, int type)
                *data++ = QLCNIC_FILL_STATS(esw_stats->local_frames);
                *data++ = QLCNIC_FILL_STATS(esw_stats->numbytes);
        }
+       return data;
 }
 
 static void qlcnic_get_ethtool_stats(struct net_device *dev,
@@ -1148,7 +1148,7 @@ static void qlcnic_get_ethtool_stats(struct net_device *dev,
                /* Retrieve MAC statistics from firmware */
                memset(&mac_stats, 0, sizeof(struct qlcnic_mac_statistics));
                qlcnic_get_mac_stats(adapter, &mac_stats);
-               qlcnic_fill_stats(data, &mac_stats, QLCNIC_MAC_STATS);
+               data = qlcnic_fill_stats(data, &mac_stats, QLCNIC_MAC_STATS);
        }
 
        if (!(adapter->flags & QLCNIC_ESWITCH_ENABLED))
@@ -1160,7 +1160,7 @@ static void qlcnic_get_ethtool_stats(struct net_device *dev,
        if (ret)
                return;
 
-       qlcnic_fill_stats(data, &port_stats.rx, QLCNIC_ESW_STATS);
+       data = qlcnic_fill_stats(data, &port_stats.rx, QLCNIC_ESW_STATS);
        ret = qlcnic_get_port_stats(adapter, adapter->ahw->pci_func,
                        QLCNIC_QUERY_TX_COUNTER, &port_stats.tx);
        if (ret)