Lines Matching refs:abm

52 	struct nfp_cpp *cpp = alink->abm->app->cpp;  in nfp_abm_ctrl_stat()
75 int __nfp_abm_ctrl_set_q_lvl(struct nfp_abm *abm, unsigned int id, u32 val) in __nfp_abm_ctrl_set_q_lvl() argument
77 struct nfp_cpp *cpp = abm->app->cpp; in __nfp_abm_ctrl_set_q_lvl()
81 __clear_bit(id, abm->threshold_undef); in __nfp_abm_ctrl_set_q_lvl()
82 if (abm->thresholds[id] == val) in __nfp_abm_ctrl_set_q_lvl()
86 err = __nfp_rtsym_writel(cpp, abm->q_lvls, 4, 0, sym_offset, val); in __nfp_abm_ctrl_set_q_lvl()
94 abm->thresholds[id] = val; in __nfp_abm_ctrl_set_q_lvl()
105 return __nfp_abm_ctrl_set_q_lvl(alink->abm, threshold, val); in nfp_abm_ctrl_set_q_lvl()
108 int __nfp_abm_ctrl_set_q_act(struct nfp_abm *abm, unsigned int id, in __nfp_abm_ctrl_set_q_act() argument
111 struct nfp_cpp *cpp = abm->app->cpp; in __nfp_abm_ctrl_set_q_act()
115 if (abm->actions[id] == act) in __nfp_abm_ctrl_set_q_act()
119 err = __nfp_rtsym_writel(cpp, abm->q_lvls, 4, 0, sym_offset, act); in __nfp_abm_ctrl_set_q_act()
127 abm->actions[id] = act; in __nfp_abm_ctrl_set_q_act()
138 return __nfp_abm_ctrl_set_q_act(alink->abm, qid, act); in nfp_abm_ctrl_set_q_act()
146 for (band = 0; band < alink->abm->num_bands; band++) { in nfp_abm_ctrl_stat_non_sto()
147 if (nfp_abm_ctrl_stat(alink, alink->abm->qm_stats, in nfp_abm_ctrl_stat_non_sto()
162 for (band = 0; band < alink->abm->num_bands; band++) { in nfp_abm_ctrl_stat_sto()
163 if (nfp_abm_ctrl_stat(alink, alink->abm->qm_stats, in nfp_abm_ctrl_stat_sto()
177 if (!nfp_abm_has_prio(alink->abm)) { in nfp_abm_ctrl_stat_basic()
189 return nfp_abm_ctrl_stat(alink, alink->abm->q_stats, in nfp_abm_ctrl_stat_basic()
210 err = nfp_abm_ctrl_stat(alink, alink->abm->q_lvls, NFP_QLVL_STRIDE, in nfp_abm_ctrl_read_q_stats()
216 err = nfp_abm_ctrl_stat(alink, alink->abm->q_lvls, in nfp_abm_ctrl_read_q_stats()
222 err = nfp_abm_ctrl_stat(alink, alink->abm->qm_stats, in nfp_abm_ctrl_read_q_stats()
228 return nfp_abm_ctrl_stat(alink, alink->abm->qm_stats, in nfp_abm_ctrl_read_q_stats()
239 err = nfp_abm_ctrl_stat(alink, alink->abm->qm_stats, in nfp_abm_ctrl_read_q_xstats()
245 return nfp_abm_ctrl_stat(alink, alink->abm->qm_stats, in nfp_abm_ctrl_read_q_xstats()
250 int nfp_abm_ctrl_qm_enable(struct nfp_abm *abm) in nfp_abm_ctrl_qm_enable() argument
252 return nfp_mbox_cmd(abm->app->pf, NFP_MBOX_PCIE_ABM_ENABLE, in nfp_abm_ctrl_qm_enable()
256 int nfp_abm_ctrl_qm_disable(struct nfp_abm *abm) in nfp_abm_ctrl_qm_disable() argument
258 return nfp_mbox_cmd(abm->app->pf, NFP_MBOX_PCIE_ABM_DISABLE, in nfp_abm_ctrl_qm_disable()
269 err = nfp_net_mbox_lock(nn, alink->abm->prio_map_len); in nfp_abm_ctrl_prio_map_update()
275 alink->abm->prio_map_len); in nfp_abm_ctrl_prio_map_update()
277 for (i = 0; i < alink->abm->prio_map_len; i += sizeof(u32)) in nfp_abm_ctrl_prio_map_update()
283 nfp_err(alink->abm->app->cpp, in nfp_abm_ctrl_prio_map_update()
290 struct nfp_abm *abm = alink->abm; in nfp_abm_ctrl_prio_check_params() local
294 if (!nfp_abm_has_prio(alink->abm)) in nfp_abm_ctrl_prio_check_params()
297 min_mbox_sz = NFP_NET_ABM_MBOX_DATA + alink->abm->prio_map_len; in nfp_abm_ctrl_prio_check_params()
299 nfp_err(abm->app->pf->cpp, "vNIC mailbox too small for prio offload: %u, need: %u\n", in nfp_abm_ctrl_prio_check_params()
315 static unsigned int nfp_abm_ctrl_prio_map_size(struct nfp_abm *abm) in nfp_abm_ctrl_prio_map_size() argument
319 size = roundup_pow_of_two(order_base_2(abm->num_bands)); in nfp_abm_ctrl_prio_map_size()
320 size = DIV_ROUND_UP(size * abm->num_prios, BITS_PER_BYTE); in nfp_abm_ctrl_prio_map_size()
347 nfp_abm_ctrl_find_q_rtsym(struct nfp_abm *abm, const char *name_fmt, in nfp_abm_ctrl_find_q_rtsym() argument
352 size = array3_size(size, abm->num_bands, NFP_NET_MAX_RX_RINGS); in nfp_abm_ctrl_find_q_rtsym()
354 abm->pf_id, nfp_abm_has_prio(abm) ? "_per_band" : ""); in nfp_abm_ctrl_find_q_rtsym()
356 return nfp_abm_ctrl_find_rtsym(abm->app->pf, pf_symbol, size); in nfp_abm_ctrl_find_q_rtsym()
359 int nfp_abm_ctrl_find_addrs(struct nfp_abm *abm) in nfp_abm_ctrl_find_addrs() argument
361 struct nfp_pf *pf = abm->app->pf; in nfp_abm_ctrl_find_addrs()
365 abm->pf_id = nfp_cppcore_pcie_unit(pf->cpp); in nfp_abm_ctrl_find_addrs()
371 abm->red_support = res; in nfp_abm_ctrl_find_addrs()
377 abm->num_bands = res; in nfp_abm_ctrl_find_addrs()
382 abm->num_prios = res; in nfp_abm_ctrl_find_addrs()
389 abm->action_mask = res; in nfp_abm_ctrl_find_addrs()
391 abm->prio_map_len = nfp_abm_ctrl_prio_map_size(abm); in nfp_abm_ctrl_find_addrs()
392 abm->dscp_mask = GENMASK(7, 8 - order_base_2(abm->num_prios)); in nfp_abm_ctrl_find_addrs()
395 if (!is_power_of_2(abm->num_bands) || !is_power_of_2(abm->num_prios) || in nfp_abm_ctrl_find_addrs()
396 abm->num_bands > U16_MAX || abm->num_prios > U16_MAX || in nfp_abm_ctrl_find_addrs()
397 (abm->num_bands == 1) != (abm->num_prios == 1)) { in nfp_abm_ctrl_find_addrs()
400 abm->num_bands, abm->num_prios); in nfp_abm_ctrl_find_addrs()
405 if (!abm->red_support) in nfp_abm_ctrl_find_addrs()
408 sym = nfp_abm_ctrl_find_q_rtsym(abm, NFP_QLVL_SYM_NAME, in nfp_abm_ctrl_find_addrs()
412 abm->q_lvls = sym; in nfp_abm_ctrl_find_addrs()
414 sym = nfp_abm_ctrl_find_q_rtsym(abm, NFP_QMSTAT_SYM_NAME, in nfp_abm_ctrl_find_addrs()
418 abm->qm_stats = sym; in nfp_abm_ctrl_find_addrs()
420 if (nfp_abm_has_prio(abm)) { in nfp_abm_ctrl_find_addrs()
421 sym = nfp_abm_ctrl_find_q_rtsym(abm, NFP_Q_STAT_SYM_NAME, in nfp_abm_ctrl_find_addrs()
425 abm->q_stats = sym; in nfp_abm_ctrl_find_addrs()