* @rx_drops:      Number of packets dropped on RX due to lack of resources
  * @hw_csum_rx_ok:  Counter of packets where the HW checksum was OK
  * @hw_csum_rx_inner_ok: Counter of packets where the inner HW checksum was OK
+ * @hw_csum_rx_complete: Counter of packets with CHECKSUM_COMPLETE reported
  * @hw_csum_rx_error:   Counter of packets with bad checksums
  * @tx_sync:       Seqlock for atomic updates of TX stats
  * @tx_pkts:       Number of Transmitted packets
        u64 rx_drops;
        u64 hw_csum_rx_ok;
        u64 hw_csum_rx_inner_ok;
-       u64 hw_csum_rx_error;
+       u64 hw_csum_rx_complete;
 
        struct nfp_net_tx_ring *xdp_ring;
 
        u64 tx_gather;
        u64 tx_lso;
 
+       u64 hw_csum_rx_error;
        u64 rx_replace_buf_alloc_fail;
        u64 tx_errors;
        u64 tx_busy;
 
 
 #define NN_ET_GLOBAL_STATS_LEN ARRAY_SIZE(nfp_net_et_stats)
 #define NN_ET_SWITCH_STATS_LEN 9
-#define NN_RVEC_GATHER_STATS   8
+#define NN_RVEC_GATHER_STATS   9
 #define NN_RVEC_PER_Q_STATS    3
 
 static void nfp_net_get_nspinfo(struct nfp_app *app, char *version)
 
        data = nfp_pr_et(data, "hw_rx_csum_ok");
        data = nfp_pr_et(data, "hw_rx_csum_inner_ok");
+       data = nfp_pr_et(data, "hw_rx_csum_complete");
        data = nfp_pr_et(data, "hw_rx_csum_err");
        data = nfp_pr_et(data, "rx_replace_buf_alloc_fail");
        data = nfp_pr_et(data, "hw_tx_csum");
                        data[0] = nn->r_vecs[i].rx_pkts;
                        tmp[0] = nn->r_vecs[i].hw_csum_rx_ok;
                        tmp[1] = nn->r_vecs[i].hw_csum_rx_inner_ok;
-                       tmp[2] = nn->r_vecs[i].hw_csum_rx_error;
-                       tmp[3] = nn->r_vecs[i].rx_replace_buf_alloc_fail;
+                       tmp[2] = nn->r_vecs[i].hw_csum_rx_complete;
+                       tmp[3] = nn->r_vecs[i].hw_csum_rx_error;
+                       tmp[4] = nn->r_vecs[i].rx_replace_buf_alloc_fail;
                } while (u64_stats_fetch_retry(&nn->r_vecs[i].rx_sync, start));
 
                do {
                        start = u64_stats_fetch_begin(&nn->r_vecs[i].tx_sync);
                        data[1] = nn->r_vecs[i].tx_pkts;
                        data[2] = nn->r_vecs[i].tx_busy;
-                       tmp[4] = nn->r_vecs[i].hw_csum_tx;
-                       tmp[5] = nn->r_vecs[i].hw_csum_tx_inner;
-                       tmp[6] = nn->r_vecs[i].tx_gather;
-                       tmp[7] = nn->r_vecs[i].tx_lso;
+                       tmp[5] = nn->r_vecs[i].hw_csum_tx;
+                       tmp[6] = nn->r_vecs[i].hw_csum_tx_inner;
+                       tmp[7] = nn->r_vecs[i].tx_gather;
+                       tmp[8] = nn->r_vecs[i].tx_lso;
                } while (u64_stats_fetch_retry(&nn->r_vecs[i].tx_sync, start));
 
                data += NN_RVEC_PER_Q_STATS;