Lines Matching full:pf

15 	struct ice_pf *pf = vsi->back;  in ice_vsi_cfg_netdev_tc()  local
31 dcbcfg = &pf->hw.port_info->qos_cfg.local_dcbx_cfg; in ice_vsi_cfg_netdev_tc()
67 * @pf: pointer to PF structure
72 bool ice_is_pfc_causing_hung_q(struct ice_pf *pf, unsigned int txqueue) in ice_is_pfc_causing_hung_q() argument
79 vsi = ice_get_main_vsi(pf); in ice_is_pfc_causing_hung_q()
97 up2tc = rd32(&pf->hw, PRTDCB_TUP2TC); in ice_is_pfc_causing_hung_q()
111 ref_prio_xoff[i] = pf->stats.priority_xoff_rx[i]; in ice_is_pfc_causing_hung_q()
113 ice_update_dcb_stats(pf); in ice_is_pfc_causing_hung_q()
117 if (pf->stats.priority_xoff_rx[i] > ref_prio_xoff[i]) in ice_is_pfc_causing_hung_q()
231 * @pf: pointer to the PF struct
234 int ice_dcb_bwchk(struct ice_pf *pf, struct ice_dcbx_cfg *dcbcfg) in ice_dcb_bwchk() argument
259 dev_err(ice_pf_to_dev(pf), "Invalid config, total bandwidth must equal 100\n"); in ice_dcb_bwchk()
268 * @pf: pointer to the PF struct
272 int ice_pf_dcb_cfg(struct ice_pf *pf, struct ice_dcbx_cfg *new_cfg, bool locked) in ice_pf_dcb_cfg() argument
276 struct device *dev = ice_pf_to_dev(pf); in ice_pf_dcb_cfg()
281 curr_cfg = &pf->hw.port_info->qos_cfg.local_dcbx_cfg; in ice_pf_dcb_cfg()
284 if (!pf->hw.port_info->qos_cfg.is_sw_lldp) in ice_pf_dcb_cfg()
290 set_bit(ICE_FLAG_DCB_ENA, pf->flags); in ice_pf_dcb_cfg()
293 clear_bit(ICE_FLAG_DCB_ENA, pf->flags); in ice_pf_dcb_cfg()
301 if (ice_dcb_bwchk(pf, new_cfg)) in ice_pf_dcb_cfg()
310 pf_vsi = ice_get_main_vsi(pf); in ice_pf_dcb_cfg()
312 dev_dbg(dev, "PF VSI doesn't exist\n"); in ice_pf_dcb_cfg()
325 ice_send_event_to_aux(pf, event); in ice_pf_dcb_cfg()
342 if (pf->hw.port_info->qos_cfg.is_sw_lldp) { in ice_pf_dcb_cfg()
343 ret = ice_set_dcb_cfg(pf->hw.port_info); in ice_pf_dcb_cfg()
352 ret = ice_query_port_ets(pf->hw.port_info, &buf, sizeof(buf), NULL); in ice_pf_dcb_cfg()
358 ice_pf_dcb_recfg(pf); in ice_pf_dcb_cfg()
393 * @pf: board private structure
398 ice_dcb_need_recfg(struct ice_pf *pf, struct ice_dcbx_cfg *old_cfg, in ice_dcb_need_recfg() argument
401 struct device *dev = ice_pf_to_dev(pf); in ice_dcb_need_recfg()
444 * @pf: physical function instance
446 void ice_dcb_rebuild(struct ice_pf *pf) in ice_dcb_rebuild() argument
449 struct device *dev = ice_pf_to_dev(pf); in ice_dcb_rebuild()
453 ret = ice_query_port_ets(pf->hw.port_info, &buf, sizeof(buf), NULL); in ice_dcb_rebuild()
459 mutex_lock(&pf->tc_mutex); in ice_dcb_rebuild()
461 if (!pf->hw.port_info->qos_cfg.is_sw_lldp) in ice_dcb_rebuild()
462 ice_cfg_etsrec_defaults(pf->hw.port_info); in ice_dcb_rebuild()
464 ret = ice_set_dcb_cfg(pf->hw.port_info); in ice_dcb_rebuild()
470 if (!pf->hw.port_info->qos_cfg.is_sw_lldp) { in ice_dcb_rebuild()
471 ret = ice_cfg_lldp_mib_change(&pf->hw, true); in ice_dcb_rebuild()
472 if (ret && !pf->hw.port_info->qos_cfg.is_sw_lldp) { in ice_dcb_rebuild()
479 ret = ice_query_port_ets(pf->hw.port_info, &buf, sizeof(buf), NULL); in ice_dcb_rebuild()
485 mutex_unlock(&pf->tc_mutex); in ice_dcb_rebuild()
493 mutex_unlock(&pf->tc_mutex); in ice_dcb_rebuild()
507 ice_pf_dcb_cfg(pf, err_cfg, false); in ice_dcb_rebuild()
510 mutex_unlock(&pf->tc_mutex); in ice_dcb_rebuild()
515 * @pf: PF to apply config to
518 static int ice_dcb_init_cfg(struct ice_pf *pf, bool locked) in ice_dcb_init_cfg() argument
524 pi = pf->hw.port_info; in ice_dcb_init_cfg()
532 dev_info(ice_pf_to_dev(pf), "Configuring initial DCB values\n"); in ice_dcb_init_cfg()
533 if (ice_pf_dcb_cfg(pf, newcfg, locked)) in ice_dcb_init_cfg()
543 * @pf: PF to apply config to
547 static int ice_dcb_sw_dflt_cfg(struct ice_pf *pf, bool ets_willing, bool locked) in ice_dcb_sw_dflt_cfg() argument
555 hw = &pf->hw; in ice_dcb_sw_dflt_cfg()
580 ret = ice_pf_dcb_cfg(pf, dcbcfg, locked); in ice_dcb_sw_dflt_cfg()
618 * @pf: pointer to the PF struct
622 static int ice_dcb_noncontig_cfg(struct ice_pf *pf) in ice_dcb_noncontig_cfg() argument
624 struct ice_dcbx_cfg *dcbcfg = &pf->hw.port_info->qos_cfg.local_dcbx_cfg; in ice_dcb_noncontig_cfg()
625 struct device *dev = ice_pf_to_dev(pf); in ice_dcb_noncontig_cfg()
629 ret = ice_dcb_sw_dflt_cfg(pf, false, true); in ice_dcb_noncontig_cfg()
637 ret = ice_set_dcb_cfg(pf->hw.port_info); in ice_dcb_noncontig_cfg()
646 * @pf: pointer to the PF struct
652 void ice_pf_dcb_recfg(struct ice_pf *pf) in ice_pf_dcb_recfg() argument
654 struct ice_dcbx_cfg *dcbcfg = &pf->hw.port_info->qos_cfg.local_dcbx_cfg; in ice_pf_dcb_recfg()
660 ice_for_each_vsi(pf, v) { in ice_pf_dcb_recfg()
661 struct ice_vsi *vsi = pf->vsi[v]; in ice_pf_dcb_recfg()
674 ice_dcb_noncontig_cfg(pf); in ice_pf_dcb_recfg()
682 dev_err(ice_pf_to_dev(pf), "Failed to config TC for VSI index: %d\n", in ice_pf_dcb_recfg()
697 ice_send_event_to_aux(pf, event); in ice_pf_dcb_recfg()
702 * ice_init_pf_dcb - initialize DCB for a PF
703 * @pf: PF to initialize DCB for
706 int ice_init_pf_dcb(struct ice_pf *pf, bool locked) in ice_init_pf_dcb() argument
708 struct device *dev = ice_pf_to_dev(pf); in ice_init_pf_dcb()
710 struct ice_hw *hw = &pf->hw; in ice_init_pf_dcb()
722 pf->hw.func_caps.common_cap.maxtc); in ice_init_pf_dcb()
728 clear_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags); in ice_init_pf_dcb()
729 err = ice_dcb_sw_dflt_cfg(pf, true, locked); in ice_init_pf_dcb()
740 pf_vsi = ice_get_main_vsi(pf); in ice_init_pf_dcb()
749 pf->dcbx_cap = ice_dcb_get_mode(port_info, true); in ice_init_pf_dcb()
753 set_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags); in ice_init_pf_dcb()
756 pf->dcbx_cap = ice_dcb_get_mode(port_info, false); in ice_init_pf_dcb()
758 err = ice_dcb_init_cfg(pf, locked); in ice_init_pf_dcb()
771 * @pf: PF whose stats needs to be updated
773 void ice_update_dcb_stats(struct ice_pf *pf) in ice_update_dcb_stats() argument
776 struct ice_hw *hw = &pf->hw; in ice_update_dcb_stats()
781 prev_ps = &pf->stats_prev; in ice_update_dcb_stats()
782 cur_ps = &pf->stats; in ice_update_dcb_stats()
786 pf->stat_prev_loaded, in ice_update_dcb_stats()
790 pf->stat_prev_loaded, in ice_update_dcb_stats()
794 pf->stat_prev_loaded, in ice_update_dcb_stats()
798 pf->stat_prev_loaded, in ice_update_dcb_stats()
802 pf->stat_prev_loaded, in ice_update_dcb_stats()
841 * @pf: ptr to ice_pf
845 ice_dcb_process_lldp_set_mib_change(struct ice_pf *pf, in ice_dcb_process_lldp_set_mib_change() argument
849 struct device *dev = ice_pf_to_dev(pf); in ice_dcb_process_lldp_set_mib_change()
859 if (!(test_bit(ICE_FLAG_DCB_CAPABLE, pf->flags))) in ice_dcb_process_lldp_set_mib_change()
862 if (pf->dcbx_cap & DCB_CAP_DCBX_HOST) { in ice_dcb_process_lldp_set_mib_change()
867 pi = pf->hw.port_info; in ice_dcb_process_lldp_set_mib_change()
890 mutex_lock(&pf->tc_mutex); in ice_dcb_process_lldp_set_mib_change()
893 tmp_dcbx_cfg = pf->hw.port_info->qos_cfg.local_dcbx_cfg; in ice_dcb_process_lldp_set_mib_change()
900 ret = ice_get_dcb_cfg(pf->hw.port_info); in ice_dcb_process_lldp_set_mib_change()
913 pf->dcbx_cap = ice_dcb_get_mode(pi, false); in ice_dcb_process_lldp_set_mib_change()
915 need_reconfig = ice_dcb_need_recfg(pf, &tmp_dcbx_cfg, in ice_dcb_process_lldp_set_mib_change()
917 ice_dcbnl_flush_apps(pf, &tmp_dcbx_cfg, &pi->qos_cfg.local_dcbx_cfg); in ice_dcb_process_lldp_set_mib_change()
924 set_bit(ICE_FLAG_DCB_ENA, pf->flags); in ice_dcb_process_lldp_set_mib_change()
927 clear_bit(ICE_FLAG_DCB_ENA, pf->flags); in ice_dcb_process_lldp_set_mib_change()
930 pf_vsi = ice_get_main_vsi(pf); in ice_dcb_process_lldp_set_mib_change()
932 dev_dbg(dev, "PF VSI doesn't exist\n"); in ice_dcb_process_lldp_set_mib_change()
939 ret = ice_query_port_ets(pf->hw.port_info, &buf, sizeof(buf), NULL); in ice_dcb_process_lldp_set_mib_change()
946 ice_pf_dcb_recfg(pf); in ice_dcb_process_lldp_set_mib_change()
952 mutex_unlock(&pf->tc_mutex); in ice_dcb_process_lldp_set_mib_change()