"tx_packets",
        "rx_bytes",
        "tx_bytes",
-       "rx_errors",    /*jabber_err+l2_err+frame_err */
-       "tx_errors",    /*fw_err_pko+fw_err_link+fw_err_drop */
-       "rx_dropped",   /*st->fromwire.total_rcvd - st->fromwire.fw_total_rcvd +
-                        *st->fromwire.dmac_drop + st->fromwire.fw_err_drop
-                        */
+       "rx_errors",
+       "tx_errors",
+       "rx_dropped",
        "tx_dropped",
 
        "tx_total_sent",
        "mac_tx_total_bytes",
        "mac_tx_mcast_pkts",
        "mac_tx_bcast_pkts",
-       "mac_tx_ctl_packets",   /*oct->link_stats.fromhost.ctl_sent */
+       "mac_tx_ctl_packets",
        "mac_tx_total_collisions",
        "mac_tx_one_collision",
        "mac_tx_multi_collison",
        "tx_packets",
        "rx_bytes",
        "tx_bytes",
-       "rx_errors", /* jabber_err + l2_err+frame_err */
-       "tx_errors", /* fw_err_pko + fw_err_link+fw_err_drop */
-       "rx_dropped", /* total_rcvd - fw_total_rcvd + dmac_drop + fw_err_drop */
+       "rx_errors",
+       "tx_errors",
+       "rx_dropped",
        "tx_dropped",
        "link_state_changes",
 };
 
 /* statistics of host tx queue */
 static const char oct_iq_stats_strings[][ETH_GSTRING_LEN] = {
-       "packets",              /*oct->instr_queue[iq_no]->stats.tx_done*/
-       "bytes",                /*oct->instr_queue[iq_no]->stats.tx_tot_bytes*/
+       "packets",
+       "bytes",
        "dropped",
        "iq_busy",
        "sgentry_sent",
 
 /* statistics of host rx queue */
 static const char oct_droq_stats_strings[][ETH_GSTRING_LEN] = {
-       "packets",              /*oct->droq[oq_no]->stats.rx_pkts_received */
-       "bytes",                /*oct->droq[oq_no]->stats.rx_bytes_received */
-       "dropped",              /*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
-                                */
+       "packets",
+       "bytes",
+       "dropped",
        "dropped_nomem",
        "dropped_toomany",
        "fw_dropped",
        data[i++] = CVM_CAST64(netstats->rx_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->rx_errors +
+                              oct_dev->link_stats.fromwire.fcs_err +
+                              oct_dev->link_stats.fromwire.jabber_err +
+                              oct_dev->link_stats.fromwire.l2_err +
+                              oct_dev->link_stats.fromwire.frame_err);
        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
         */
-       data[i++] = CVM_CAST64(netstats->rx_dropped);
+       data[i++] = CVM_CAST64(netstats->rx_dropped +
+                              oct_dev->link_stats.fromwire.fifo_err +
+                              oct_dev->link_stats.fromwire.dmac_drop +
+                              oct_dev->link_stats.fromwire.red_drops +
+                              oct_dev->link_stats.fromwire.fw_err_pko +
+                              oct_dev->link_stats.fromwire.fw_err_link +
+                              oct_dev->link_stats.fromwire.fw_err_drop);
        /*sum of oct->instr_queue[iq_no]->stats.tx_dropped */
-       data[i++] = CVM_CAST64(netstats->tx_dropped);
+       data[i++] = CVM_CAST64(netstats->tx_dropped +
+                              oct_dev->link_stats.fromhost.max_collision_fail +
+                              oct_dev->link_stats.fromhost.max_deferral_fail +
+                              oct_dev->link_stats.fromhost.total_collisions +
+                              oct_dev->link_stats.fromhost.fw_err_pko +
+                              oct_dev->link_stats.fromhost.fw_err_link +
+                              oct_dev->link_stats.fromhost.fw_err_drop +
+                              oct_dev->link_stats.fromhost.fw_err_pki);
 
        /* firmware tx stats */
        /*per_core_stats[cvmx_get_core_num()].link_stats[mdata->from_ifidx].
                rstats->jabber_err = rsp_rstats->jabber_err;
                rstats->l2_err    = rsp_rstats->l2_err;
                rstats->frame_err = rsp_rstats->frame_err;
+               rstats->red_drops = rsp_rstats->red_drops;
 
                /* RX firmware stats */
                rstats->fw_total_rcvd = rsp_rstats->fw_total_rcvd;
 
                if (dma_mapping_error(&oct->pci_dev->dev, dptr)) {
                        dev_err(&oct->pci_dev->dev, "%s DMA mapping error 1\n",
                                __func__);
+                       stats->tx_dmamap_fail++;
                        return NETDEV_TX_BUSY;
                }
 
                if (dma_mapping_error(&oct->pci_dev->dev, g->sg[0].ptr[0])) {
                        dev_err(&oct->pci_dev->dev, "%s DMA mapping error 2\n",
                                __func__);
+                       stats->tx_dmamap_fail++;
                        return NETDEV_TX_BUSY;
                }
                add_sg_size(&g->sg[0], (skb->len - skb->data_len), 0);
 
 /** Stats for each NIC port in RX direction. */
 struct nic_rx_stats {
        /* link-level stats */
-       u64 total_rcvd;
-       u64 bytes_rcvd;
-       u64 total_bcst;
-       u64 total_mcst;
-       u64 runts;
-       u64 ctl_rcvd;
-       u64 fifo_err;      /* Accounts for over/under-run of buffers */
-       u64 dmac_drop;
-       u64 fcs_err;
-       u64 jabber_err;
-       u64 l2_err;
-       u64 frame_err;
+       u64 total_rcvd;         /* Received packets */
+       u64 bytes_rcvd;         /* Octets of received packets */
+       u64 total_bcst;         /* Number of non-dropped L2 broadcast packets */
+       u64 total_mcst;         /* Number of non-dropped L2 multicast packets */
+       u64 runts;              /* Packets shorter than allowed */
+       u64 ctl_rcvd;           /* Received PAUSE packets */
+       u64 fifo_err;           /* Packets dropped due to RX FIFO full */
+       u64 dmac_drop;          /* Packets dropped by the DMAC filter */
+       u64 fcs_err;            /* Sum of fragment, overrun, and FCS errors */
+       u64 jabber_err;         /* Packets larger than allowed */
+       u64 l2_err;             /* Sum of DMA, parity, PCAM access, no memory,
+                                * buffer overflow, malformed L2 header or
+                                * length, oversize errors
+                                **/
+       u64 frame_err;          /* Sum of IPv4 and L4 checksum errors */
+       u64 red_drops;          /* Packets dropped by RED due to buffer
+                                * exhaustion
+                                **/
 
        /* firmware stats */
        u64 fw_total_rcvd;
        u64 fw_lro_pkts;   /* Number of packets that are LROed      */
        u64 fw_lro_octs;   /* Number of octets that are LROed       */
        u64 fw_total_lro;  /* Number of LRO packets formed          */
-       u64 fw_lro_aborts; /* Number of times lRO of packet aborted */
+       u64 fw_lro_aborts; /* Number of times LRO of packet aborted */
        u64 fw_lro_aborts_port;
        u64 fw_lro_aborts_seq;
        u64 fw_lro_aborts_tsval;
-       u64 fw_lro_aborts_timer;
+       u64 fw_lro_aborts_timer;        /* Timer setting error */
        /* intrmod: packet forward rate */
        u64 fwd_rate;
 };
 /** Stats for each NIC port in RX direction. */
 struct nic_tx_stats {
        /* link-level stats */
-       u64 total_pkts_sent;
-       u64 total_bytes_sent;
-       u64 mcast_pkts_sent;
-       u64 bcast_pkts_sent;
-       u64 ctl_sent;
-       u64 one_collision_sent;   /* Packets sent after one collision*/
-       u64 multi_collision_sent; /* Packets sent after multiple collision*/
-       u64 max_collision_fail;   /* Packets not sent due to max collisions */
-       u64 max_deferral_fail;   /* Packets not sent due to max deferrals */
-       u64 fifo_err;       /* Accounts for over/under-run of buffers */
-       u64 runts;
-       u64 total_collisions; /* Total number of collisions detected */
+       u64 total_pkts_sent;            /* Total frames sent on the interface */
+       u64 total_bytes_sent;           /* Total octets sent on the interface */
+       u64 mcast_pkts_sent;            /* Packets sent to the multicast DMAC */
+       u64 bcast_pkts_sent;            /* Packets sent to a broadcast DMAC */
+       u64 ctl_sent;                   /* Control/PAUSE packets sent */
+       u64 one_collision_sent;         /* Packets sent that experienced a
+                                        * single collision before successful
+                                        * transmission
+                                        **/
+       u64 multi_collision_sent;       /* Packets sent that experienced
+                                        * multiple collisions before successful
+                                        * transmission
+                                        **/
+       u64 max_collision_fail;         /* Packets dropped due to excessive
+                                        * collisions
+                                        **/
+       u64 max_deferral_fail;          /* Packets not sent due to max
+                                        * deferrals
+                                        **/
+       u64 fifo_err;                   /* Packets sent that experienced a
+                                        * transmit underflow and were
+                                        * truncated
+                                        **/
+       u64 runts;                      /* Packets sent with an octet count
+                                        * lessthan 64
+                                        **/
+       u64 total_collisions;           /* Packets dropped due to excessive
+                                        * collisions
+                                        **/
 
        /* firmware stats */
        u64 fw_total_sent;
 
        u64 tx_tot_bytes;/**< Total count of bytes sento to network. */
        u64 tx_gso;  /* count of tso */
        u64 tx_vxlan; /* tunnel */
-       u64 tx_dmamap_fail;
-       u64 tx_restart;
+       u64 tx_dmamap_fail; /* Number of times dma mapping failed */
+       u64 tx_restart; /* Number of times this queue restarted */
 };
 
 #define OCT_IQ_STATS_SIZE   (sizeof(struct oct_iq_stats))