int bnxt_dev_xstats_get_op(struct rte_eth_dev *eth_dev, struct rte_eth_xstat *xstats, unsigned int n) { struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private; unsigned int count, i; uint64_t tx_drop_pkts; if (!(bp->flags & BNXT_FLAG_PORT_STATS)) { RTE_LOG(ERR, PMD, "xstats not supported for VF\n"); return 0; } bnxt_hwrm_port_qstats(bp); bnxt_hwrm_func_qstats_tx_drop(bp, 0xffff, &tx_drop_pkts); count = RTE_DIM(bnxt_rx_stats_strings) + RTE_DIM(bnxt_tx_stats_strings) + 1; /* For tx_drop_pkts */ if (n < count) return count; count = 0; for (i = 0; i < RTE_DIM(bnxt_rx_stats_strings); i++) { uint64_t *rx_stats = (uint64_t *)bp->hw_rx_port_stats; xstats[count].id = count; xstats[count].value = rte_le_to_cpu_64( *(uint64_t *)((char *)rx_stats + bnxt_rx_stats_strings[i].offset)); count++; } for (i = 0; i < RTE_DIM(bnxt_tx_stats_strings); i++) { uint64_t *tx_stats = (uint64_t *)bp->hw_tx_port_stats; xstats[count].id = count; xstats[count].value = rte_le_to_cpu_64( *(uint64_t *)((char *)tx_stats + bnxt_tx_stats_strings[i].offset)); count++; } /* The Tx drop pkts aka the Anti spoof coounter */ xstats[count].id = count; xstats[count].value = rte_le_to_cpu_64(tx_drop_pkts); count++; return count; }
struct nfp_nsp_identify * __nfp_nsp_identify(struct nfp_nsp *nsp) { struct nfp_nsp_identify *nspi = NULL; struct nsp_identify *ni; int ret; if (nfp_nsp_get_abi_ver_minor(nsp) < 15) return NULL; ni = malloc(sizeof(*ni)); if (!ni) return NULL; memset(ni, 0, sizeof(*ni)); ret = nfp_nsp_read_identify(nsp, ni, sizeof(*ni)); if (ret < 0) { printf("reading bsp version failed %d\n", ret); goto exit_free; } nspi = malloc(sizeof(*nspi)); if (!nspi) goto exit_free; memset(nspi, 0, sizeof(*nspi)); memcpy(nspi->version, ni->version, sizeof(nspi->version)); nspi->version[sizeof(nspi->version) - 1] = '\0'; nspi->flags = ni->flags; nspi->br_primary = ni->br_primary; nspi->br_secondary = ni->br_secondary; nspi->br_nsp = ni->br_nsp; nspi->primary = rte_le_to_cpu_16(ni->primary); nspi->secondary = rte_le_to_cpu_16(ni->secondary); nspi->nsp = rte_le_to_cpu_16(ni->nsp); nspi->sensor_mask = rte_le_to_cpu_64(ni->sensor_mask); exit_free: free(ni); return nspi; }