|
@@ -2121,18 +2121,16 @@ static int bnx2x_get_sset_count(struct net_device *dev, int stringset)
|
|
|
case ETH_SS_STATS:
|
|
|
if (is_multi(bp)) {
|
|
|
num_stats = bnx2x_num_stat_queues(bp) *
|
|
|
- BNX2X_NUM_Q_STATS;
|
|
|
- if (!IS_MF_MODE_STAT(bp))
|
|
|
- num_stats += BNX2X_NUM_STATS;
|
|
|
- } else {
|
|
|
- if (IS_MF_MODE_STAT(bp)) {
|
|
|
- num_stats = 0;
|
|
|
- for (i = 0; i < BNX2X_NUM_STATS; i++)
|
|
|
- if (IS_FUNC_STAT(i))
|
|
|
- num_stats++;
|
|
|
- } else
|
|
|
- num_stats = BNX2X_NUM_STATS;
|
|
|
- }
|
|
|
+ BNX2X_NUM_Q_STATS;
|
|
|
+ } else
|
|
|
+ num_stats = 0;
|
|
|
+ if (IS_MF_MODE_STAT(bp)) {
|
|
|
+ for (i = 0; i < BNX2X_NUM_STATS; i++)
|
|
|
+ if (IS_FUNC_STAT(i))
|
|
|
+ num_stats++;
|
|
|
+ } else
|
|
|
+ num_stats += BNX2X_NUM_STATS;
|
|
|
+
|
|
|
return num_stats;
|
|
|
|
|
|
case ETH_SS_TEST:
|
|
@@ -2151,8 +2149,8 @@ static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
|
|
|
|
|
|
switch (stringset) {
|
|
|
case ETH_SS_STATS:
|
|
|
+ k = 0;
|
|
|
if (is_multi(bp)) {
|
|
|
- k = 0;
|
|
|
for_each_eth_queue(bp, i) {
|
|
|
memset(queue_name, 0, sizeof(queue_name));
|
|
|
sprintf(queue_name, "%d", i);
|
|
@@ -2163,20 +2161,17 @@ static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
|
|
|
queue_name);
|
|
|
k += BNX2X_NUM_Q_STATS;
|
|
|
}
|
|
|
- if (IS_MF_MODE_STAT(bp))
|
|
|
- break;
|
|
|
- for (j = 0; j < BNX2X_NUM_STATS; j++)
|
|
|
- strcpy(buf + (k + j)*ETH_GSTRING_LEN,
|
|
|
- bnx2x_stats_arr[j].string);
|
|
|
- } else {
|
|
|
- for (i = 0, j = 0; i < BNX2X_NUM_STATS; i++) {
|
|
|
- if (IS_MF_MODE_STAT(bp) && IS_PORT_STAT(i))
|
|
|
- continue;
|
|
|
- strcpy(buf + j*ETH_GSTRING_LEN,
|
|
|
- bnx2x_stats_arr[i].string);
|
|
|
- j++;
|
|
|
- }
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ for (i = 0, j = 0; i < BNX2X_NUM_STATS; i++) {
|
|
|
+ if (IS_MF_MODE_STAT(bp) && IS_PORT_STAT(i))
|
|
|
+ continue;
|
|
|
+ strcpy(buf + (k + j)*ETH_GSTRING_LEN,
|
|
|
+ bnx2x_stats_arr[i].string);
|
|
|
+ j++;
|
|
|
+ }
|
|
|
+
|
|
|
break;
|
|
|
|
|
|
case ETH_SS_TEST:
|
|
@@ -2190,10 +2185,9 @@ static void bnx2x_get_ethtool_stats(struct net_device *dev,
|
|
|
{
|
|
|
struct bnx2x *bp = netdev_priv(dev);
|
|
|
u32 *hw_stats, *offset;
|
|
|
- int i, j, k;
|
|
|
+ int i, j, k = 0;
|
|
|
|
|
|
if (is_multi(bp)) {
|
|
|
- k = 0;
|
|
|
for_each_eth_queue(bp, i) {
|
|
|
hw_stats = (u32 *)&bp->fp[i].eth_q_stats;
|
|
|
for (j = 0; j < BNX2X_NUM_Q_STATS; j++) {
|
|
@@ -2214,46 +2208,28 @@ static void bnx2x_get_ethtool_stats(struct net_device *dev,
|
|
|
}
|
|
|
k += BNX2X_NUM_Q_STATS;
|
|
|
}
|
|
|
- if (IS_MF_MODE_STAT(bp))
|
|
|
- return;
|
|
|
- hw_stats = (u32 *)&bp->eth_stats;
|
|
|
- for (j = 0; j < BNX2X_NUM_STATS; j++) {
|
|
|
- if (bnx2x_stats_arr[j].size == 0) {
|
|
|
- /* skip this counter */
|
|
|
- buf[k + j] = 0;
|
|
|
- continue;
|
|
|
- }
|
|
|
- offset = (hw_stats + bnx2x_stats_arr[j].offset);
|
|
|
- if (bnx2x_stats_arr[j].size == 4) {
|
|
|
- /* 4-byte counter */
|
|
|
- buf[k + j] = (u64) *offset;
|
|
|
- continue;
|
|
|
- }
|
|
|
- /* 8-byte counter */
|
|
|
- buf[k + j] = HILO_U64(*offset, *(offset + 1));
|
|
|
+ }
|
|
|
+
|
|
|
+ hw_stats = (u32 *)&bp->eth_stats;
|
|
|
+ for (i = 0, j = 0; i < BNX2X_NUM_STATS; i++) {
|
|
|
+ if (IS_MF_MODE_STAT(bp) && IS_PORT_STAT(i))
|
|
|
+ continue;
|
|
|
+ if (bnx2x_stats_arr[i].size == 0) {
|
|
|
+ /* skip this counter */
|
|
|
+ buf[k + j] = 0;
|
|
|
+ j++;
|
|
|
+ continue;
|
|
|
}
|
|
|
- } else {
|
|
|
- hw_stats = (u32 *)&bp->eth_stats;
|
|
|
- for (i = 0, j = 0; i < BNX2X_NUM_STATS; i++) {
|
|
|
- if (IS_MF_MODE_STAT(bp) && IS_PORT_STAT(i))
|
|
|
- continue;
|
|
|
- if (bnx2x_stats_arr[i].size == 0) {
|
|
|
- /* skip this counter */
|
|
|
- buf[j] = 0;
|
|
|
- j++;
|
|
|
- continue;
|
|
|
- }
|
|
|
- offset = (hw_stats + bnx2x_stats_arr[i].offset);
|
|
|
- if (bnx2x_stats_arr[i].size == 4) {
|
|
|
- /* 4-byte counter */
|
|
|
- buf[j] = (u64) *offset;
|
|
|
- j++;
|
|
|
- continue;
|
|
|
- }
|
|
|
- /* 8-byte counter */
|
|
|
- buf[j] = HILO_U64(*offset, *(offset + 1));
|
|
|
+ offset = (hw_stats + bnx2x_stats_arr[i].offset);
|
|
|
+ if (bnx2x_stats_arr[i].size == 4) {
|
|
|
+ /* 4-byte counter */
|
|
|
+ buf[k + j] = (u64) *offset;
|
|
|
j++;
|
|
|
+ continue;
|
|
|
}
|
|
|
+ /* 8-byte counter */
|
|
|
+ buf[k + j] = HILO_U64(*offset, *(offset + 1));
|
|
|
+ j++;
|
|
|
}
|
|
|
}
|
|
|
|