liquidio: fix wrong information about channels reported to ethtool
authorWeilin Chang <weilin.chang@cavium.com>
Thu, 5 Jan 2017 00:18:50 +0000 (16:18 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Jan 2017 20:44:19 +0000 (15:44 -0500)
Information reported to ethtool about channels is sometimes wrong for PF,
and always wrong for VF.  Fix them by getting the information from the
right fields from the right structs.

Signed-off-by: Weilin Chang <weilin.chang@cavium.com>
Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: Derek Chickles <derek.chickles@cavium.com>
Signed-off-by: Satanand Burla <satananda.burla@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cavium/liquidio/lio_ethtool.c

index b00c3002360e6725f2b8ffef51535ce957f79bbc..50384cede8be9b84431690074022bbff4bbc9199 100644 (file)
@@ -296,12 +296,16 @@ lio_ethtool_get_channels(struct net_device *dev,
                rx_count = CFG_GET_NUM_RXQS_NIC_IF(conf6x, lio->ifidx);
                tx_count = CFG_GET_NUM_TXQS_NIC_IF(conf6x, lio->ifidx);
        } else if (OCTEON_CN23XX_PF(oct)) {
-               struct octeon_config *conf23 = CHIP_CONF(oct, cn23xx_pf);
 
-               max_rx = CFG_GET_OQ_MAX_Q(conf23);
-               max_tx = CFG_GET_IQ_MAX_Q(conf23);
-               rx_count = CFG_GET_NUM_RXQS_NIC_IF(conf23, lio->ifidx);
-               tx_count = CFG_GET_NUM_TXQS_NIC_IF(conf23, lio->ifidx);
+               max_rx = oct->sriov_info.num_pf_rings;
+               max_tx = oct->sriov_info.num_pf_rings;
+               rx_count = lio->linfo.num_rxpciq;
+               tx_count = lio->linfo.num_txpciq;
+       } else if (OCTEON_CN23XX_VF(oct)) {
+               max_tx = oct->sriov_info.rings_per_vf;
+               max_rx = oct->sriov_info.rings_per_vf;
+               rx_count = lio->linfo.num_rxpciq;
+               tx_count = lio->linfo.num_txpciq;
        }
 
        channel->max_rx = max_rx;