On Wed, 2017-05-31 at 10:45 -0700, Felix Manlunas wrote:
> > From: Satanand Burla <satananda.bu...@cavium.com>
> 
> > Signed-off-by: Satanand Burla <satananda.bu...@cavium.com>
> > Signed-off-by: Derek Chickles <derek.chick...@cavium.com>
> > Signed-off-by: Felix Manlunas <felix.manlu...@cavium.com>
> ---
>  drivers/net/ethernet/cavium/liquidio/lio_ethtool.c     |  8 ++++----

Much better would be not to separate out the object onto
multiple lines, but use temporaries to make the code "volume"
much smaller and it also saves a bit of object code.

For this file, perhaps

Subject: [PATCH] liquidio: Reduce dereferences

Multiple dereferences of the same object are hard to read.

Use temporaries to reduce the code volume and also reduce
overall object size a bit.

$ size drivers/net/ethernet/cavium/liquidio/lio_ethtool.o*
   text    data     bss     dec     hex filename
  22038       0       0   22038    5616 
drivers/net/ethernet/cavium/liquidio/lio_ethtool.o.new
  22246       0       0   22246    56e6 
drivers/net/ethernet/cavium/liquidio/lio_ethtool.o.old

Signed-off-by: Joe Perches <j...@perches.com>
---
 drivers/net/ethernet/cavium/liquidio/lio_ethtool.c | 450 ++++++++++-----------
 1 file changed, 215 insertions(+), 235 deletions(-)

diff --git a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c 
b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
index 579dc7336f58..bd2db6382377 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
@@ -786,257 +786,245 @@ lio_get_ethtool_stats(struct net_device *netdev,
        struct lio *lio = GET_LIO(netdev);
        struct octeon_device *oct_dev = lio->oct_dev;
        struct net_device_stats *netstats = &netdev->stats;
+       struct nic_tx_stats *tstats = &oct_dev->link_stats.fromhost;
+       struct nic_rx_stats *rstats = &oct_dev->link_stats.fromwire;
        int i = 0, j;
 
        netdev->netdev_ops->ndo_get_stats(netdev);
        octnet_get_link_stats(netdev);
 
-       /*sum of oct->droq[oq_no]->stats->rx_pkts_received */
+       /* sum of oct->droq[oq_no]->stats->rx_pkts_received */
        data[i++] = CVM_CAST64(netstats->rx_packets);
-       /*sum of oct->instr_queue[iq_no]->stats.tx_done */
+       /* sum of oct->instr_queue[iq_no]->stats.tx_done */
        data[i++] = CVM_CAST64(netstats->tx_packets);
-       /*sum of oct->droq[oq_no]->stats->rx_bytes_received */
+       /* sum of oct->droq[oq_no]->stats->rx_bytes_received */
        data[i++] = CVM_CAST64(netstats->rx_bytes);
-       /*sum of oct->instr_queue[iq_no]->stats.tx_tot_bytes */
+       /* sum of oct->instr_queue[iq_no]->stats.tx_tot_bytes */
        data[i++] = CVM_CAST64(netstats->tx_bytes);
        data[i++] = CVM_CAST64(netstats->rx_errors);
        data[i++] = CVM_CAST64(netstats->tx_errors);
-       /*sum of oct->droq[oq_no]->stats->rx_dropped +
-        *oct->droq[oq_no]->stats->dropped_nodispatch +
-        *oct->droq[oq_no]->stats->dropped_toomany +
-        *oct->droq[oq_no]->stats->dropped_nomem
+       /* sum of oct->droq[oq_no]->stats->rx_dropped +
+        * oct->droq[oq_no]->stats->dropped_nodispatch +
+        * oct->droq[oq_no]->stats->dropped_toomany +
+        * oct->droq[oq_no]->stats->dropped_nomem
         */
        data[i++] = CVM_CAST64(netstats->rx_dropped);
-       /*sum of oct->instr_queue[iq_no]->stats.tx_dropped */
+       /* sum of oct->instr_queue[iq_no]->stats.tx_dropped */
        data[i++] = CVM_CAST64(netstats->tx_dropped);
 
        /* firmware tx stats */
-       /*per_core_stats[cvmx_get_core_num()].link_stats[mdata->from_ifidx].
-        *fromhost.fw_total_sent
+       /* per_core_stats[cvmx_get_core_num()].link_stats[mdata->from_ifidx].
+        * fromhost.fw_total_sent
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fw_total_sent);
-       /*per_core_stats[i].link_stats[port].fromwire.fw_total_fwd */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fw_total_fwd);
-       /*per_core_stats[j].link_stats[i].fromhost.fw_err_pko */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fw_err_pko);
-       /*per_core_stats[j].link_stats[i].fromhost.fw_err_link */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fw_err_link);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.
-        *fw_err_drop
+       data[i++] = CVM_CAST64(tstats->fw_total_sent);
+       /* per_core_stats[i].link_stats[port].fromwire.fw_total_fwd */
+       data[i++] = CVM_CAST64(tstats->fw_total_fwd);
+       /* per_core_stats[j].link_stats[i].fromhost.fw_err_pko */
+       data[i++] = CVM_CAST64(tstats->fw_err_pko);
+       /* per_core_stats[j].link_stats[i].fromhost.fw_err_link */
+       data[i++] = CVM_CAST64(tstats->fw_err_link);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.
+        * fw_err_drop
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fw_err_drop);
+       data[i++] = CVM_CAST64(tstats->fw_err_drop);
 
-       /*per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.fw_tso */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fw_tso);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.
-        *fw_tso_fwd
+       /* per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.fw_tso 
*/
+       data[i++] = CVM_CAST64(tstats->fw_tso);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.
+        * fw_tso_fwd
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fw_tso_fwd);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.
-        *fw_err_tso
+       data[i++] = CVM_CAST64(tstats->fw_tso_fwd);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.
+        * fw_err_tso
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fw_err_tso);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.
-        *fw_tx_vxlan
+       data[i++] = CVM_CAST64(tstats->fw_err_tso);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[idx].fromhost.
+        * fw_tx_vxlan
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fw_tx_vxlan);
+       data[i++] = CVM_CAST64(tstats->fw_tx_vxlan);
 
        /* mac tx statistics */
-       /*CVMX_BGXX_CMRX_TX_STAT5 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.total_pkts_sent);
-       /*CVMX_BGXX_CMRX_TX_STAT4 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.total_bytes_sent);
-       /*CVMX_BGXX_CMRX_TX_STAT15 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.mcast_pkts_sent);
-       /*CVMX_BGXX_CMRX_TX_STAT14 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.bcast_pkts_sent);
-       /*CVMX_BGXX_CMRX_TX_STAT17 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.ctl_sent);
-       /*CVMX_BGXX_CMRX_TX_STAT0 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.total_collisions);
-       /*CVMX_BGXX_CMRX_TX_STAT3 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.one_collision_sent);
-       /*CVMX_BGXX_CMRX_TX_STAT2 */
-       data[i++] =
-               CVM_CAST64(oct_dev->link_stats.fromhost.multi_collision_sent);
-       /*CVMX_BGXX_CMRX_TX_STAT0 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.max_collision_fail);
-       /*CVMX_BGXX_CMRX_TX_STAT1 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.max_deferral_fail);
-       /*CVMX_BGXX_CMRX_TX_STAT16 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.fifo_err);
-       /*CVMX_BGXX_CMRX_TX_STAT6 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromhost.runts);
+       /* CVMX_BGXX_CMRX_TX_STAT5 */
+       data[i++] = CVM_CAST64(tstats->total_pkts_sent);
+       /* CVMX_BGXX_CMRX_TX_STAT4 */
+       data[i++] = CVM_CAST64(tstats->total_bytes_sent);
+       /* CVMX_BGXX_CMRX_TX_STAT15 */
+       data[i++] = CVM_CAST64(tstats->mcast_pkts_sent);
+       /* CVMX_BGXX_CMRX_TX_STAT14 */
+       data[i++] = CVM_CAST64(tstats->bcast_pkts_sent);
+       /* CVMX_BGXX_CMRX_TX_STAT17 */
+       data[i++] = CVM_CAST64(tstats->ctl_sent);
+       /* CVMX_BGXX_CMRX_TX_STAT0 */
+       data[i++] = CVM_CAST64(tstats->total_collisions);
+       /* CVMX_BGXX_CMRX_TX_STAT3 */
+       data[i++] = CVM_CAST64(tstats->one_collision_sent);
+       /* CVMX_BGXX_CMRX_TX_STAT2 */
+       data[i++] = CVM_CAST64(tstats->multi_collision_sent);
+       /* CVMX_BGXX_CMRX_TX_STAT0 */
+       data[i++] = CVM_CAST64(tstats->max_collision_fail);
+       /* CVMX_BGXX_CMRX_TX_STAT1 */
+       data[i++] = CVM_CAST64(tstats->max_deferral_fail);
+       /* CVMX_BGXX_CMRX_TX_STAT16 */
+       data[i++] = CVM_CAST64(tstats->fifo_err);
+       /* CVMX_BGXX_CMRX_TX_STAT6 */
+       data[i++] = CVM_CAST64(tstats->runts);
 
        /* RX firmware stats */
-       /*per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
-        *fw_total_rcvd
+       /* per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
+        * fw_total_rcvd
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_total_rcvd);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
-        *fw_total_fwd
+       data[i++] = CVM_CAST64(rstats->fw_total_rcvd);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
+        * fw_total_fwd
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_total_fwd);
-       /*per_core_stats[core_id].link_stats[ifidx].fromwire.jabber_err */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.jabber_err);
-       /*per_core_stats[core_id].link_stats[ifidx].fromwire.l2_err */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.l2_err);
-       /*per_core_stats[core_id].link_stats[ifidx].fromwire.frame_err */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.frame_err);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
-        *fw_err_pko
+       data[i++] = CVM_CAST64(rstats->fw_total_fwd);
+       /* per_core_stats[core_id].link_stats[ifidx].fromwire.jabber_err */
+       data[i++] = CVM_CAST64(rstats->jabber_err);
+       /* per_core_stats[core_id].link_stats[ifidx].fromwire.l2_err */
+       data[i++] = CVM_CAST64(rstats->l2_err);
+       /* per_core_stats[core_id].link_stats[ifidx].fromwire.frame_err */
+       data[i++] = CVM_CAST64(rstats->frame_err);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
+        * fw_err_pko
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_err_pko);
-       /*per_core_stats[j].link_stats[i].fromwire.fw_err_link */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_err_link);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[lro_ctx->ifidx].
-        *fromwire.fw_err_drop
+       data[i++] = CVM_CAST64(rstats->fw_err_pko);
+       /* per_core_stats[j].link_stats[i].fromwire.fw_err_link */
+       data[i++] = CVM_CAST64(rstats->fw_err_link);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[lro_ctx->ifidx].
+        * fromwire.fw_err_drop
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_err_drop);
+       data[i++] = CVM_CAST64(rstats->fw_err_drop);
 
-       /*per_core_stats[cvmx_get_core_num()].link_stats[lro_ctx->ifidx].
-        *fromwire.fw_rx_vxlan
+       /* per_core_stats[cvmx_get_core_num()].link_stats[lro_ctx->ifidx].
+        * fromwire.fw_rx_vxlan
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_rx_vxlan);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[lro_ctx->ifidx].
-        *fromwire.fw_rx_vxlan_err
+       data[i++] = CVM_CAST64(rstats->fw_rx_vxlan);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[lro_ctx->ifidx].
+        * fromwire.fw_rx_vxlan_err
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_rx_vxlan_err);
+       data[i++] = CVM_CAST64(rstats->fw_rx_vxlan_err);
 
        /* LRO */
-       /*per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
-        *fw_lro_pkts
+       /* per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
+        * fw_lro_pkts
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_lro_pkts);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
-        *fw_lro_octs
+       data[i++] = CVM_CAST64(rstats->fw_lro_pkts);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
+        * fw_lro_octs
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_lro_octs);
-       /*per_core_stats[j].link_stats[i].fromwire.fw_total_lro */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_total_lro);
-       /*per_core_stats[j].link_stats[i].fromwire.fw_lro_aborts */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_lro_aborts);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
-        *fw_lro_aborts_port
+       data[i++] = CVM_CAST64(rstats->fw_lro_octs);
+       /* per_core_stats[j].link_stats[i].fromwire.fw_total_lro */
+       data[i++] = CVM_CAST64(rstats->fw_total_lro);
+       /* per_core_stats[j].link_stats[i].fromwire.fw_lro_aborts */
+       data[i++] = CVM_CAST64(rstats->fw_lro_aborts);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
+        * fw_lro_aborts_port
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_lro_aborts_port);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
-        *fw_lro_aborts_seq
+       data[i++] = CVM_CAST64(rstats->fw_lro_aborts_port);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
+        * fw_lro_aborts_seq
         */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fw_lro_aborts_seq);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
-        *fw_lro_aborts_tsval
+       data[i++] = CVM_CAST64(rstats->fw_lro_aborts_seq);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
+        * fw_lro_aborts_tsval
         */
-       data[i++] =
-               CVM_CAST64(oct_dev->link_stats.fromwire.fw_lro_aborts_tsval);
-       /*per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
-        *fw_lro_aborts_timer
+       data[i++] = CVM_CAST64(rstats->fw_lro_aborts_tsval);
+       /* per_core_stats[cvmx_get_core_num()].link_stats[ifidx].fromwire.
+        * fw_lro_aborts_timer
         */
        /* intrmod: packet forward rate */
-       data[i++] =
-               CVM_CAST64(oct_dev->link_stats.fromwire.fw_lro_aborts_timer);
-       /*per_core_stats[j].link_stats[i].fromwire.fw_lro_aborts */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fwd_rate);
+       data[i++] = CVM_CAST64(rstats->fw_lro_aborts_timer);
+       /* per_core_stats[j].link_stats[i].fromwire.fw_lro_aborts */
+       data[i++] = CVM_CAST64(rstats->fwd_rate);
 
        /* mac: link-level stats */
-       /*CVMX_BGXX_CMRX_RX_STAT0 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.total_rcvd);
-       /*CVMX_BGXX_CMRX_RX_STAT1 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.bytes_rcvd);
-       /*CVMX_PKI_STATX_STAT5 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.total_bcst);
-       /*CVMX_PKI_STATX_STAT5 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.total_mcst);
-       /*wqe->word2.err_code or wqe->word2.err_level */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.runts);
-       /*CVMX_BGXX_CMRX_RX_STAT2 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.ctl_rcvd);
-       /*CVMX_BGXX_CMRX_RX_STAT6 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fifo_err);
-       /*CVMX_BGXX_CMRX_RX_STAT4 */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.dmac_drop);
-       /*wqe->word2.err_code or wqe->word2.err_level */
-       data[i++] = CVM_CAST64(oct_dev->link_stats.fromwire.fcs_err);
-       /*lio->link_changes*/
+       /* CVMX_BGXX_CMRX_RX_STAT0 */
+       data[i++] = CVM_CAST64(rstats->total_rcvd);
+       /* CVMX_BGXX_CMRX_RX_STAT1 */
+       data[i++] = CVM_CAST64(rstats->bytes_rcvd);
+       /* CVMX_PKI_STATX_STAT5 */
+       data[i++] = CVM_CAST64(rstats->total_bcst);
+       /* CVMX_PKI_STATX_STAT5 */
+       data[i++] = CVM_CAST64(rstats->total_mcst);
+       /* wqe->word2.err_code or wqe->word2.err_level */
+       data[i++] = CVM_CAST64(rstats->runts);
+       /* CVMX_BGXX_CMRX_RX_STAT2 */
+       data[i++] = CVM_CAST64(rstats->ctl_rcvd);
+       /* CVMX_BGXX_CMRX_RX_STAT6 */
+       data[i++] = CVM_CAST64(rstats->fifo_err);
+       /* CVMX_BGXX_CMRX_RX_STAT4 */
+       data[i++] = CVM_CAST64(rstats->dmac_drop);
+       /* wqe->word2.err_code or wqe->word2.err_level */
+       data[i++] = CVM_CAST64(rstats->fcs_err);
+       /* lio->link_changes*/
        data[i++] = CVM_CAST64(lio->link_changes);
 
        for (j = 0; j < MAX_OCTEON_INSTR_QUEUES(oct_dev); j++) {
+               struct oct_iq_stats *stats;
+
                if (!(oct_dev->io_qmask.iq & BIT_ULL(j)))
                        continue;
-               /*packets to network port*/
-               /*# of packets tx to network */
-               data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_done);
-               /*# of bytes tx to network */
-               data[i++] =
-                       CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_tot_bytes);
-               /*# of packets dropped */
-               data[i++] =
-                       CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_dropped);
-               /*# of tx fails due to queue full */
-               data[i++] =
-                       CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_iq_busy);
-               /*XXX gather entries sent */
-               data[i++] =
-                       CVM_CAST64(oct_dev->instr_queue[j]->stats.sgentry_sent);
-
-               /*instruction to firmware: data and control */
-               /*# of instructions to the queue */
-               data[i++] =
-                       CVM_CAST64(oct_dev->instr_queue[j]->stats.instr_posted);
-               /*# of instructions processed */
-               data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->
-                                      stats.instr_processed);
-               /*# of instructions could not be processed */
-               data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->
-                                      stats.instr_dropped);
-               /*bytes sent through the queue */
-               data[i++] =
-                       CVM_CAST64(oct_dev->instr_queue[j]->stats.bytes_sent);
-
-               /*tso request*/
-               data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_gso);
-               /*vxlan request*/
-               data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_vxlan);
-               /*txq restart*/
-               data[i++] =
-                       CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_restart);
+
+               stats = &oct_dev->instr_queue[j]->stats;
+
+               /* packets to network port */
+               /* # of packets tx to network */
+               data[i++] = CVM_CAST64(stats->tx_done);
+               /* # of bytes tx to network */
+               data[i++] = CVM_CAST64(stats->tx_tot_bytes);
+               /* # of packets dropped */
+               data[i++] = CVM_CAST64(stats->tx_dropped);
+               /* # of tx fails due to queue full */
+               data[i++] = CVM_CAST64(stats->tx_iq_busy);
+               /* XXX gather entries sent */
+               data[i++] = CVM_CAST64(stats->sgentry_sent);
+
+               /* instruction to firmware: data and control */
+               /* # of instructions to the queue */
+               data[i++] = CVM_CAST64(stats->instr_posted);
+               /* # of instructions processed */
+               data[i++] = CVM_CAST64(stats->instr_processed);
+               /* # of instructions could not be processed */
+               data[i++] = CVM_CAST64(stats->instr_dropped);
+               /* bytes sent through the queue */
+               data[i++] = CVM_CAST64(stats->bytes_sent);
+
+               /* tso request */
+               data[i++] = CVM_CAST64(stats->tx_gso);
+               /* vxlan request */
+               data[i++] = CVM_CAST64(stats->tx_vxlan);
+               /* txq restart */
+               data[i++] = CVM_CAST64(stats->tx_restart);
        }
 
        /* RX */
        for (j = 0; j < MAX_OCTEON_OUTPUT_QUEUES(oct_dev); j++) {
+               struct oct_droq_stats *stats;
+
                if (!(oct_dev->io_qmask.oq & BIT_ULL(j)))
                        continue;
 
-               /*packets send to TCP/IP network stack */
-               /*# of packets to network stack */
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.rx_pkts_received);
-               /*# of bytes to network stack */
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.rx_bytes_received);
-               /*# of packets dropped */
-               data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.dropped_nomem +
-                                      oct_dev->droq[j]->stats.dropped_toomany +
-                                      oct_dev->droq[j]->stats.rx_dropped);
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.dropped_nomem);
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.dropped_toomany);
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.rx_dropped);
-
-               /*control and data path*/
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.pkts_received);
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.bytes_received);
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.dropped_nodispatch);
-
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.rx_vxlan);
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.rx_alloc_failure);
+               stats = &oct_dev->droq[j]->stats;
+               /* packets send to TCP/IP network stack */
+               /* # of packets to network stack */
+               data[i++] = CVM_CAST64(stats->rx_pkts_received);
+               /* # of bytes to network stack */
+               data[i++] = CVM_CAST64(stats->rx_bytes_received);
+               /* # of packets dropped */
+               data[i++] = CVM_CAST64(stats->dropped_nomem +
+                                      stats->dropped_toomany +
+                                      stats->rx_dropped);
+               data[i++] = CVM_CAST64(stats->dropped_nomem);
+               data[i++] = CVM_CAST64(stats->dropped_toomany);
+               data[i++] = CVM_CAST64(stats->rx_dropped);
+
+               /* control and data path */
+               data[i++] = CVM_CAST64(stats->pkts_received);
+               data[i++] = CVM_CAST64(stats->bytes_received);
+               data[i++] = CVM_CAST64(stats->dropped_nodispatch);
+
+               data[i++] = CVM_CAST64(stats->rx_vxlan);
+               data[i++] = CVM_CAST64(stats->rx_alloc_failure);
        }
 }
 
@@ -1073,73 +1061,65 @@ static void lio_vf_get_ethtool_stats(struct net_device 
*netdev,
        data[i++] = CVM_CAST64(lio->link_changes);
 
        for (vj = 0; vj < lio->linfo.num_txpciq; vj++) {
+               struct oct_iq_stats *stats;
+
                j = lio->linfo.txpciq[vj].s.q_no;
 
+               stats = &oct_dev->instr_queue[j]->stats;
                /* packets to network port */
                /* # of packets tx to network */
-               data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_done);
+               data[i++] = CVM_CAST64(stats->tx_done);
                 /* # of bytes tx to network */
-               data[i++] = CVM_CAST64(
-                               oct_dev->instr_queue[j]->stats.tx_tot_bytes);
+               data[i++] = CVM_CAST64(stats->tx_tot_bytes);
                /* # of packets dropped */
-               data[i++] = CVM_CAST64(
-                               oct_dev->instr_queue[j]->stats.tx_dropped);
+               data[i++] = CVM_CAST64(stats->tx_dropped);
                /* # of tx fails due to queue full */
-               data[i++] = CVM_CAST64(
-                               oct_dev->instr_queue[j]->stats.tx_iq_busy);
+               data[i++] = CVM_CAST64(stats->tx_iq_busy);
                /* XXX gather entries sent */
-               data[i++] = CVM_CAST64(
-                               oct_dev->instr_queue[j]->stats.sgentry_sent);
+               data[i++] = CVM_CAST64(stats->sgentry_sent);
 
                /* instruction to firmware: data and control */
                /* # of instructions to the queue */
-               data[i++] = CVM_CAST64(
-                               oct_dev->instr_queue[j]->stats.instr_posted);
+               data[i++] = CVM_CAST64(stats->instr_posted);
                /* # of instructions processed */
-               data[i++] =
-                   CVM_CAST64(oct_dev->instr_queue[j]->stats.instr_processed);
+               data[i++] = CVM_CAST64(stats->instr_processed);
                /* # of instructions could not be processed */
-               data[i++] =
-                   CVM_CAST64(oct_dev->instr_queue[j]->stats.instr_dropped);
+               data[i++] = CVM_CAST64(stats->instr_dropped);
                /* bytes sent through the queue */
-               data[i++] = CVM_CAST64(
-                               oct_dev->instr_queue[j]->stats.bytes_sent);
+               data[i++] = CVM_CAST64(stats->bytes_sent);
                /* tso request */
-               data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_gso);
+               data[i++] = CVM_CAST64(stats->tx_gso);
                /* vxlan request */
-               data[i++] = CVM_CAST64(oct_dev->instr_queue[j]->stats.tx_vxlan);
+               data[i++] = CVM_CAST64(stats->tx_vxlan);
                /* txq restart */
-               data[i++] = CVM_CAST64(
-                               oct_dev->instr_queue[j]->stats.tx_restart);
+               data[i++] = CVM_CAST64(stats->tx_restart);
        }
 
        /* RX */
        for (vj = 0; vj < lio->linfo.num_rxpciq; vj++) {
-               j = lio->linfo.rxpciq[vj].s.q_no;
+               struct oct_droq_stats *stats;
 
+               j = lio->linfo.rxpciq[vj].s.q_no;
+               stats = &oct_dev->droq[j]->stats;
                /* packets send to TCP/IP network stack */
                /* # of packets to network stack */
-               data[i++] = CVM_CAST64(
-                               oct_dev->droq[j]->stats.rx_pkts_received);
+               data[i++] = CVM_CAST64(stats->rx_pkts_received);
                /* # of bytes to network stack */
-               data[i++] = CVM_CAST64(
-                               oct_dev->droq[j]->stats.rx_bytes_received);
-               data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.dropped_nomem +
-                                      oct_dev->droq[j]->stats.dropped_toomany +
-                                      oct_dev->droq[j]->stats.rx_dropped);
-               data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.dropped_nomem);
-               data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.dropped_toomany);
-               data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.rx_dropped);
+               data[i++] = CVM_CAST64(stats->rx_bytes_received);
+               data[i++] = CVM_CAST64(stats->dropped_nomem +
+                                      stats->dropped_toomany +
+                                      stats->rx_dropped);
+               data[i++] = CVM_CAST64(stats->dropped_nomem);
+               data[i++] = CVM_CAST64(stats->dropped_toomany);
+               data[i++] = CVM_CAST64(stats->rx_dropped);
 
                /* control and data path */
-               data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.pkts_received);
-               data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.bytes_received);
-               data[i++] =
-                       CVM_CAST64(oct_dev->droq[j]->stats.dropped_nodispatch);
-
-               data[i++] = CVM_CAST64(oct_dev->droq[j]->stats.rx_vxlan);
-               data[i++] =
-                   CVM_CAST64(oct_dev->droq[j]->stats.rx_alloc_failure);
+               data[i++] = CVM_CAST64(stats->pkts_received);
+               data[i++] = CVM_CAST64(stats->bytes_received);
+               data[i++] = CVM_CAST64(stats->dropped_nodispatch);
+
+               data[i++] = CVM_CAST64(stats->rx_vxlan);
+               data[i++] = CVM_CAST64(stats->rx_alloc_failure);
        }
 }
 

Reply via email to