Lines Matching refs:nn
222 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_drvinfo() local
225 nn->fw_ver.resv, nn->fw_ver.class, in nfp_net_get_drvinfo()
226 nn->fw_ver.major, nn->fw_ver.minor); in nfp_net_get_drvinfo()
227 strlcpy(drvinfo->bus_info, pci_name(nn->pdev), in nfp_net_get_drvinfo()
230 nfp_get_drvinfo(nn->app, nn->pdev, vnic_version, drvinfo); in nfp_net_get_drvinfo()
290 struct nfp_net *nn; in nfp_net_get_link_ksettings() local
320 nn = netdev_priv(netdev); in nfp_net_get_link_ksettings()
322 sts = nn_readl(nn, NFP_NET_CFG_STS); in nfp_net_get_link_ksettings()
389 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_ringparam() local
393 ring->rx_pending = nn->dp.rxd_cnt; in nfp_net_get_ringparam()
394 ring->tx_pending = nn->dp.txd_cnt; in nfp_net_get_ringparam()
397 static int nfp_net_set_ring_size(struct nfp_net *nn, u32 rxd_cnt, u32 txd_cnt) in nfp_net_set_ring_size() argument
401 dp = nfp_net_clone_dp(nn); in nfp_net_set_ring_size()
408 return nfp_net_ring_reconfig(nn, dp, NULL); in nfp_net_set_ring_size()
414 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_set_ringparam() local
429 if (nn->dp.rxd_cnt == rxd_cnt && nn->dp.txd_cnt == txd_cnt) in nfp_net_set_ringparam()
432 nn_dbg(nn, "Change ring size: RxQ %u->%u, TxQ %u->%u\n", in nfp_net_set_ringparam()
433 nn->dp.rxd_cnt, rxd_cnt, nn->dp.txd_cnt, txd_cnt); in nfp_net_set_ringparam()
435 return nfp_net_set_ring_size(nn, rxd_cnt, txd_cnt); in nfp_net_set_ringparam()
451 struct nfp_net *nn = netdev_priv(netdev); in nfp_vnic_get_sw_stats_count() local
453 return NN_RVEC_GATHER_STATS + nn->max_r_vecs * NN_RVEC_PER_Q_STATS; in nfp_vnic_get_sw_stats_count()
458 struct nfp_net *nn = netdev_priv(netdev); in nfp_vnic_get_sw_stats_strings() local
461 for (i = 0; i < nn->max_r_vecs; i++) { in nfp_vnic_get_sw_stats_strings()
483 struct nfp_net *nn = netdev_priv(netdev); in nfp_vnic_get_sw_stats() local
487 for (i = 0; i < nn->max_r_vecs; i++) { in nfp_vnic_get_sw_stats()
491 start = u64_stats_fetch_begin(&nn->r_vecs[i].rx_sync); in nfp_vnic_get_sw_stats()
492 data[0] = nn->r_vecs[i].rx_pkts; in nfp_vnic_get_sw_stats()
493 tmp[0] = nn->r_vecs[i].hw_csum_rx_ok; in nfp_vnic_get_sw_stats()
494 tmp[1] = nn->r_vecs[i].hw_csum_rx_inner_ok; in nfp_vnic_get_sw_stats()
495 tmp[2] = nn->r_vecs[i].hw_csum_rx_complete; in nfp_vnic_get_sw_stats()
496 tmp[3] = nn->r_vecs[i].hw_csum_rx_error; in nfp_vnic_get_sw_stats()
497 tmp[4] = nn->r_vecs[i].rx_replace_buf_alloc_fail; in nfp_vnic_get_sw_stats()
498 } while (u64_stats_fetch_retry(&nn->r_vecs[i].rx_sync, start)); in nfp_vnic_get_sw_stats()
501 start = u64_stats_fetch_begin(&nn->r_vecs[i].tx_sync); in nfp_vnic_get_sw_stats()
502 data[1] = nn->r_vecs[i].tx_pkts; in nfp_vnic_get_sw_stats()
503 data[2] = nn->r_vecs[i].tx_busy; in nfp_vnic_get_sw_stats()
504 tmp[5] = nn->r_vecs[i].hw_csum_tx; in nfp_vnic_get_sw_stats()
505 tmp[6] = nn->r_vecs[i].hw_csum_tx_inner; in nfp_vnic_get_sw_stats()
506 tmp[7] = nn->r_vecs[i].tx_gather; in nfp_vnic_get_sw_stats()
507 tmp[8] = nn->r_vecs[i].tx_lso; in nfp_vnic_get_sw_stats()
508 } while (u64_stats_fetch_retry(&nn->r_vecs[i].tx_sync, start)); in nfp_vnic_get_sw_stats()
620 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_strings() local
625 data = nfp_vnic_get_hw_stats_strings(data, nn->max_r_vecs, in nfp_net_get_strings()
628 data = nfp_app_port_get_stats_strings(nn->port, data); in nfp_net_get_strings()
637 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_stats() local
640 data = nfp_vnic_get_hw_stats(data, nn->dp.ctrl_bar, nn->max_r_vecs); in nfp_net_get_stats()
642 data = nfp_app_port_get_stats(nn->port, data); in nfp_net_get_stats()
647 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_sset_count() local
652 nfp_vnic_get_hw_stats_count(nn->max_r_vecs) + in nfp_net_get_sset_count()
654 nfp_app_port_get_stats_count(nn->port); in nfp_net_get_sset_count()
811 static int nfp_net_get_rss_hash_opts(struct nfp_net *nn, in nfp_net_get_rss_hash_opts() argument
818 if (!(nn->cap & NFP_NET_CFG_CTRL_RSS_ANY)) in nfp_net_get_rss_hash_opts()
826 if (nn->rss_cfg & nfp_rss_flag) in nfp_net_get_rss_hash_opts()
835 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_rxnfc() local
839 cmd->data = nn->dp.num_rx_rings; in nfp_net_get_rxnfc()
842 return nfp_net_get_rss_hash_opts(nn, cmd); in nfp_net_get_rxnfc()
848 static int nfp_net_set_rss_hash_opt(struct nfp_net *nn, in nfp_net_set_rss_hash_opt() argument
851 u32 new_rss_cfg = nn->rss_cfg; in nfp_net_set_rss_hash_opt()
855 if (!(nn->cap & NFP_NET_CFG_CTRL_RSS_ANY)) in nfp_net_set_rss_hash_opt()
883 new_rss_cfg |= FIELD_PREP(NFP_NET_CFG_RSS_HFUNC, nn->rss_hfunc); in nfp_net_set_rss_hash_opt()
886 if (new_rss_cfg == nn->rss_cfg) in nfp_net_set_rss_hash_opt()
889 writel(new_rss_cfg, nn->dp.ctrl_bar + NFP_NET_CFG_RSS_CTRL); in nfp_net_set_rss_hash_opt()
890 err = nfp_net_reconfig(nn, NFP_NET_CFG_UPDATE_RSS); in nfp_net_set_rss_hash_opt()
894 nn->rss_cfg = new_rss_cfg; in nfp_net_set_rss_hash_opt()
896 nn_dbg(nn, "Changed RSS config to 0x%x\n", nn->rss_cfg); in nfp_net_set_rss_hash_opt()
903 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_set_rxnfc() local
907 return nfp_net_set_rss_hash_opt(nn, cmd); in nfp_net_set_rxnfc()
915 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_rxfh_indir_size() local
917 if (!(nn->cap & NFP_NET_CFG_CTRL_RSS_ANY)) in nfp_net_get_rxfh_indir_size()
920 return ARRAY_SIZE(nn->rss_itbl); in nfp_net_get_rxfh_indir_size()
925 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_rxfh_key_size() local
927 if (!(nn->cap & NFP_NET_CFG_CTRL_RSS_ANY)) in nfp_net_get_rxfh_key_size()
930 return nfp_net_rss_key_sz(nn); in nfp_net_get_rxfh_key_size()
936 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_rxfh() local
939 if (!(nn->cap & NFP_NET_CFG_CTRL_RSS_ANY)) in nfp_net_get_rxfh()
943 for (i = 0; i < ARRAY_SIZE(nn->rss_itbl); i++) in nfp_net_get_rxfh()
944 indir[i] = nn->rss_itbl[i]; in nfp_net_get_rxfh()
946 memcpy(key, nn->rss_key, nfp_net_rss_key_sz(nn)); in nfp_net_get_rxfh()
948 *hfunc = nn->rss_hfunc; in nfp_net_get_rxfh()
960 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_set_rxfh() local
963 if (!(nn->cap & NFP_NET_CFG_CTRL_RSS_ANY) || in nfp_net_set_rxfh()
964 !(hfunc == ETH_RSS_HASH_NO_CHANGE || hfunc == nn->rss_hfunc)) in nfp_net_set_rxfh()
971 memcpy(nn->rss_key, key, nfp_net_rss_key_sz(nn)); in nfp_net_set_rxfh()
972 nfp_net_rss_write_key(nn); in nfp_net_set_rxfh()
975 for (i = 0; i < ARRAY_SIZE(nn->rss_itbl); i++) in nfp_net_set_rxfh()
976 nn->rss_itbl[i] = indir[i]; in nfp_net_set_rxfh()
978 nfp_net_rss_write_itbl(nn); in nfp_net_set_rxfh()
981 return nfp_net_reconfig(nn, NFP_NET_CFG_UPDATE_RSS); in nfp_net_set_rxfh()
994 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_regs() local
998 regs->version = nn_readl(nn, NFP_NET_CFG_VERSION); in nfp_net_get_regs()
1001 regs_buf[i] = readl(nn->dp.ctrl_bar + (i * sizeof(u32))); in nfp_net_get_regs()
1007 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_coalesce() local
1009 if (!(nn->cap & NFP_NET_CFG_CTRL_IRQMOD)) in nfp_net_get_coalesce()
1012 ec->rx_coalesce_usecs = nn->rx_coalesce_usecs; in nfp_net_get_coalesce()
1013 ec->rx_max_coalesced_frames = nn->rx_coalesce_max_frames; in nfp_net_get_coalesce()
1014 ec->tx_coalesce_usecs = nn->tx_coalesce_usecs; in nfp_net_get_coalesce()
1015 ec->tx_max_coalesced_frames = nn->tx_coalesce_max_frames; in nfp_net_get_coalesce()
1132 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_set_coalesce() local
1159 factor = nn->me_freq_mhz / 16; in nfp_net_set_coalesce()
1174 if (!(nn->cap & NFP_NET_CFG_CTRL_IRQMOD)) in nfp_net_set_coalesce()
1197 nn->rx_coalesce_usecs = ec->rx_coalesce_usecs; in nfp_net_set_coalesce()
1198 nn->rx_coalesce_max_frames = ec->rx_max_coalesced_frames; in nfp_net_set_coalesce()
1199 nn->tx_coalesce_usecs = ec->tx_coalesce_usecs; in nfp_net_set_coalesce()
1200 nn->tx_coalesce_max_frames = ec->tx_max_coalesced_frames; in nfp_net_set_coalesce()
1203 nfp_net_coalesce_write_cfg(nn); in nfp_net_set_coalesce()
1204 return nfp_net_reconfig(nn, NFP_NET_CFG_UPDATE_IRQMOD); in nfp_net_set_coalesce()
1210 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_get_channels() local
1213 num_tx_rings = nn->dp.num_tx_rings; in nfp_net_get_channels()
1214 if (nn->dp.xdp_prog) in nfp_net_get_channels()
1215 num_tx_rings -= nn->dp.num_rx_rings; in nfp_net_get_channels()
1217 channel->max_rx = min(nn->max_rx_rings, nn->max_r_vecs); in nfp_net_get_channels()
1218 channel->max_tx = min(nn->max_tx_rings, nn->max_r_vecs); in nfp_net_get_channels()
1221 channel->combined_count = min(nn->dp.num_rx_rings, num_tx_rings); in nfp_net_get_channels()
1222 channel->rx_count = nn->dp.num_rx_rings - channel->combined_count; in nfp_net_get_channels()
1227 static int nfp_net_set_num_rings(struct nfp_net *nn, unsigned int total_rx, in nfp_net_set_num_rings() argument
1232 dp = nfp_net_clone_dp(nn); in nfp_net_set_num_rings()
1242 return nfp_net_ring_reconfig(nn, dp, NULL); in nfp_net_set_num_rings()
1248 struct nfp_net *nn = netdev_priv(netdev); in nfp_net_set_channels() local
1260 if (total_rx > min(nn->max_rx_rings, nn->max_r_vecs) || in nfp_net_set_channels()
1261 total_tx > min(nn->max_tx_rings, nn->max_r_vecs)) in nfp_net_set_channels()
1264 return nfp_net_set_num_rings(nn, total_rx, total_tx); in nfp_net_set_channels()