Lines Matching refs:veb
37 static int i40e_add_veb(struct i40e_veb *veb, struct i40e_vsi *vsi);
52 static int i40e_veb_get_bw_info(struct i40e_veb *veb);
561 if (pf->veb[i]) { in i40e_pf_reset_stats()
562 memset(&pf->veb[i]->stats, 0, in i40e_pf_reset_stats()
563 sizeof(pf->veb[i]->stats)); in i40e_pf_reset_stats()
564 memset(&pf->veb[i]->stats_offsets, 0, in i40e_pf_reset_stats()
565 sizeof(pf->veb[i]->stats_offsets)); in i40e_pf_reset_stats()
566 memset(&pf->veb[i]->tc_stats, 0, in i40e_pf_reset_stats()
567 sizeof(pf->veb[i]->tc_stats)); in i40e_pf_reset_stats()
568 memset(&pf->veb[i]->tc_stats_offsets, 0, in i40e_pf_reset_stats()
569 sizeof(pf->veb[i]->tc_stats_offsets)); in i40e_pf_reset_stats()
570 pf->veb[i]->stat_offsets_loaded = false; in i40e_pf_reset_stats()
786 void i40e_update_veb_stats(struct i40e_veb *veb) in i40e_update_veb_stats() argument
788 struct i40e_pf *pf = veb->pf; in i40e_update_veb_stats()
796 idx = veb->stats_idx; in i40e_update_veb_stats()
797 es = &veb->stats; in i40e_update_veb_stats()
798 oes = &veb->stats_offsets; in i40e_update_veb_stats()
799 veb_es = &veb->tc_stats; in i40e_update_veb_stats()
800 veb_oes = &veb->tc_stats_offsets; in i40e_update_veb_stats()
804 veb->stat_offsets_loaded, in i40e_update_veb_stats()
808 veb->stat_offsets_loaded, in i40e_update_veb_stats()
812 veb->stat_offsets_loaded, in i40e_update_veb_stats()
815 veb->stat_offsets_loaded, in i40e_update_veb_stats()
818 veb->stat_offsets_loaded, in i40e_update_veb_stats()
821 veb->stat_offsets_loaded, in i40e_update_veb_stats()
825 veb->stat_offsets_loaded, in i40e_update_veb_stats()
828 veb->stat_offsets_loaded, in i40e_update_veb_stats()
831 veb->stat_offsets_loaded, in i40e_update_veb_stats()
834 veb->stat_offsets_loaded, in i40e_update_veb_stats()
839 veb->stat_offsets_loaded, in i40e_update_veb_stats()
844 veb->stat_offsets_loaded, in i40e_update_veb_stats()
849 veb->stat_offsets_loaded, in i40e_update_veb_stats()
854 veb->stat_offsets_loaded, in i40e_update_veb_stats()
858 veb->stat_offsets_loaded = true; in i40e_update_veb_stats()
6754 int i40e_veb_config_tc(struct i40e_veb *veb, u8 enabled_tc) in i40e_veb_config_tc() argument
6757 struct i40e_pf *pf = veb->pf; in i40e_veb_config_tc()
6762 if (!enabled_tc || veb->enabled_tc == enabled_tc) in i40e_veb_config_tc()
6774 ret = i40e_aq_config_switch_comp_bw_config(&pf->hw, veb->seid, in i40e_veb_config_tc()
6785 ret = i40e_veb_get_bw_info(veb); in i40e_veb_config_tc()
6818 if (!pf->veb[v]) in i40e_dcb_reconfigure()
6820 ret = i40e_veb_config_tc(pf->veb[v], tc_map); in i40e_dcb_reconfigure()
6824 pf->veb[v]->seid); in i40e_dcb_reconfigure()
9918 static void i40e_veb_link_event(struct i40e_veb *veb, bool link_up) in i40e_veb_link_event() argument
9923 if (!veb || !veb->pf) in i40e_veb_link_event()
9925 pf = veb->pf; in i40e_veb_link_event()
9929 if (pf->veb[i] && (pf->veb[i]->uplink_seid == veb->seid)) in i40e_veb_link_event()
9930 i40e_veb_link_event(pf->veb[i], link_up); in i40e_veb_link_event()
9934 if (pf->vsi[i] && (pf->vsi[i]->uplink_seid == veb->seid)) in i40e_veb_link_event()
9984 if (pf->lan_veb < I40E_MAX_VEB && pf->veb[pf->lan_veb]) in i40e_link_event()
9985 i40e_veb_link_event(pf->veb[pf->lan_veb], new_link); in i40e_link_event()
10054 if (pf->veb[i]) in i40e_watchdog_subtask()
10055 i40e_update_veb_stats(pf->veb[i]); in i40e_watchdog_subtask()
10386 static void i40e_config_bridge_mode(struct i40e_veb *veb) in i40e_config_bridge_mode() argument
10388 struct i40e_pf *pf = veb->pf; in i40e_config_bridge_mode()
10392 veb->bridge_mode == BRIDGE_MODE_VEPA ? "VEPA" : "VEB"); in i40e_config_bridge_mode()
10393 if (veb->bridge_mode & BRIDGE_MODE_VEPA) in i40e_config_bridge_mode()
10408 static int i40e_reconstitute_veb(struct i40e_veb *veb) in i40e_reconstitute_veb() argument
10411 struct i40e_pf *pf = veb->pf; in i40e_reconstitute_veb()
10418 pf->vsi[v]->veb_idx == veb->idx && in i40e_reconstitute_veb()
10426 "missing owner VSI for veb_idx %d\n", veb->idx); in i40e_reconstitute_veb()
10436 veb->idx, ret); in i40e_reconstitute_veb()
10442 ret = i40e_add_veb(veb, ctl_vsi); in i40e_reconstitute_veb()
10447 veb->bridge_mode = BRIDGE_MODE_VEB; in i40e_reconstitute_veb()
10449 veb->bridge_mode = BRIDGE_MODE_VEPA; in i40e_reconstitute_veb()
10450 i40e_config_bridge_mode(veb); in i40e_reconstitute_veb()
10457 if (pf->vsi[v]->veb_idx == veb->idx) { in i40e_reconstitute_veb()
10460 vsi->uplink_seid = veb->seid; in i40e_reconstitute_veb()
10474 if (pf->veb[veb_idx] && pf->veb[veb_idx]->veb_idx == veb->idx) { in i40e_reconstitute_veb()
10475 pf->veb[veb_idx]->uplink_seid = veb->seid; in i40e_reconstitute_veb()
10476 ret = i40e_reconstitute_veb(pf->veb[veb_idx]); in i40e_reconstitute_veb()
11023 if (!pf->veb[v]) in i40e_rebuild()
11026 if (pf->veb[v]->uplink_seid == pf->mac_seid || in i40e_rebuild()
11027 pf->veb[v]->uplink_seid == 0) { in i40e_rebuild()
11028 ret = i40e_reconstitute_veb(pf->veb[v]); in i40e_rebuild()
11039 if (pf->veb[v]->uplink_seid == pf->mac_seid) { in i40e_rebuild()
11045 } else if (pf->veb[v]->uplink_seid == 0) { in i40e_rebuild()
13214 struct i40e_veb *veb = NULL; in i40e_ndo_bridge_setlink() local
13223 for (i = 0; i < I40E_MAX_VEB && !veb; i++) { in i40e_ndo_bridge_setlink()
13224 if (pf->veb[i] && pf->veb[i]->seid == vsi->uplink_seid) in i40e_ndo_bridge_setlink()
13225 veb = pf->veb[i]; in i40e_ndo_bridge_setlink()
13244 if (!veb) { in i40e_ndo_bridge_setlink()
13245 veb = i40e_veb_setup(pf, 0, vsi->uplink_seid, vsi->seid, in i40e_ndo_bridge_setlink()
13247 if (veb) { in i40e_ndo_bridge_setlink()
13248 veb->bridge_mode = mode; in i40e_ndo_bridge_setlink()
13249 i40e_config_bridge_mode(veb); in i40e_ndo_bridge_setlink()
13255 } else if (mode != veb->bridge_mode) { in i40e_ndo_bridge_setlink()
13257 veb->bridge_mode = mode; in i40e_ndo_bridge_setlink()
13291 struct i40e_veb *veb = NULL; in i40e_ndo_bridge_getlink() local
13299 for (i = 0; i < I40E_MAX_VEB && !veb; i++) { in i40e_ndo_bridge_getlink()
13300 if (pf->veb[i] && pf->veb[i]->seid == vsi->uplink_seid) in i40e_ndo_bridge_getlink()
13301 veb = pf->veb[i]; in i40e_ndo_bridge_getlink()
13304 if (!veb) in i40e_ndo_bridge_getlink()
13307 return ndo_dflt_bridge_getlink(skb, pid, seq, dev, veb->bridge_mode, in i40e_ndo_bridge_getlink()
13953 struct i40e_veb *veb; in i40e_is_vsi_uplink_mode_veb() local
13960 veb = pf->veb[vsi->veb_idx]; in i40e_is_vsi_uplink_mode_veb()
13961 if (!veb) { in i40e_is_vsi_uplink_mode_veb()
13968 if (veb->bridge_mode & BRIDGE_MODE_VEPA) { in i40e_is_vsi_uplink_mode_veb()
14236 struct i40e_veb *veb = NULL; in i40e_vsi_release() local
14310 if (!pf->veb[i]) in i40e_vsi_release()
14312 if (pf->veb[i]->uplink_seid == uplink_seid) in i40e_vsi_release()
14314 if (pf->veb[i]->seid == uplink_seid) in i40e_vsi_release()
14315 veb = pf->veb[i]; in i40e_vsi_release()
14317 if (n == 0 && veb && veb->uplink_seid != 0) in i40e_vsi_release()
14318 i40e_veb_release(veb); in i40e_vsi_release()
14472 struct i40e_veb *veb = NULL; in i40e_vsi_setup() local
14491 if (pf->veb[i] && pf->veb[i]->seid == uplink_seid) { in i40e_vsi_setup()
14492 veb = pf->veb[i]; in i40e_vsi_setup()
14497 if (!veb && uplink_seid != pf->mac_seid) { in i40e_vsi_setup()
14512 veb = i40e_veb_setup(pf, 0, pf->mac_seid, vsi->seid, in i40e_vsi_setup()
14515 veb = i40e_veb_setup(pf, 0, vsi->uplink_seid, vsi->seid, in i40e_vsi_setup()
14517 if (veb) { in i40e_vsi_setup()
14528 veb->bridge_mode = BRIDGE_MODE_VEPA; in i40e_vsi_setup()
14531 i40e_config_bridge_mode(veb); in i40e_vsi_setup()
14533 for (i = 0; i < I40E_MAX_VEB && !veb; i++) { in i40e_vsi_setup()
14534 if (pf->veb[i] && pf->veb[i]->seid == vsi->uplink_seid) in i40e_vsi_setup()
14535 veb = pf->veb[i]; in i40e_vsi_setup()
14537 if (!veb) { in i40e_vsi_setup()
14543 uplink_seid = veb->seid; in i40e_vsi_setup()
14554 vsi->veb_idx = (veb ? veb->idx : I40E_NO_VEB); in i40e_vsi_setup()
14648 static int i40e_veb_get_bw_info(struct i40e_veb *veb) in i40e_veb_get_bw_info() argument
14652 struct i40e_pf *pf = veb->pf; in i40e_veb_get_bw_info()
14658 ret = i40e_aq_query_switch_comp_bw_config(hw, veb->seid, in i40e_veb_get_bw_info()
14668 ret = i40e_aq_query_switch_comp_ets_config(hw, veb->seid, in i40e_veb_get_bw_info()
14678 veb->bw_limit = le16_to_cpu(ets_data.port_bw_limit); in i40e_veb_get_bw_info()
14679 veb->bw_max_quanta = ets_data.tc_bw_max; in i40e_veb_get_bw_info()
14680 veb->is_abs_credits = bw_data.absolute_credits_enable; in i40e_veb_get_bw_info()
14681 veb->enabled_tc = ets_data.tc_valid_bits; in i40e_veb_get_bw_info()
14685 veb->bw_tc_share_credits[i] = bw_data.tc_bw_share_credits[i]; in i40e_veb_get_bw_info()
14686 veb->bw_tc_limit_credits[i] = in i40e_veb_get_bw_info()
14688 veb->bw_tc_max_quanta[i] = ((tc_bw_max >> (i*4)) & 0x7); in i40e_veb_get_bw_info()
14705 struct i40e_veb *veb; in i40e_veb_mem_alloc() local
14718 while ((i < I40E_MAX_VEB) && (pf->veb[i] != NULL)) in i40e_veb_mem_alloc()
14725 veb = kzalloc(sizeof(*veb), GFP_KERNEL); in i40e_veb_mem_alloc()
14726 if (!veb) { in i40e_veb_mem_alloc()
14730 veb->pf = pf; in i40e_veb_mem_alloc()
14731 veb->idx = i; in i40e_veb_mem_alloc()
14732 veb->enabled_tc = 1; in i40e_veb_mem_alloc()
14734 pf->veb[i] = veb; in i40e_veb_mem_alloc()
14757 if (!pf->veb[i]) in i40e_switch_branch_release()
14759 if (pf->veb[i]->uplink_seid == branch->seid) in i40e_switch_branch_release()
14760 i40e_switch_branch_release(pf->veb[i]); in i40e_switch_branch_release()
14782 if (pf->veb[veb_idx]) in i40e_switch_branch_release()
14783 i40e_veb_release(pf->veb[veb_idx]); in i40e_switch_branch_release()
14790 static void i40e_veb_clear(struct i40e_veb *veb) in i40e_veb_clear() argument
14792 if (!veb) in i40e_veb_clear()
14795 if (veb->pf) { in i40e_veb_clear()
14796 struct i40e_pf *pf = veb->pf; in i40e_veb_clear()
14799 if (pf->veb[veb->idx] == veb) in i40e_veb_clear()
14800 pf->veb[veb->idx] = NULL; in i40e_veb_clear()
14804 kfree(veb); in i40e_veb_clear()
14811 void i40e_veb_release(struct i40e_veb *veb) in i40e_veb_release() argument
14817 pf = veb->pf; in i40e_veb_release()
14821 if (pf->vsi[i] && pf->vsi[i]->uplink_seid == veb->seid) { in i40e_veb_release()
14829 veb->seid, n); in i40e_veb_release()
14835 if (veb->uplink_seid) { in i40e_veb_release()
14836 vsi->uplink_seid = veb->uplink_seid; in i40e_veb_release()
14837 if (veb->uplink_seid == pf->mac_seid) in i40e_veb_release()
14840 vsi->veb_idx = veb->veb_idx; in i40e_veb_release()
14847 i40e_aq_delete_element(&pf->hw, veb->seid, NULL); in i40e_veb_release()
14848 i40e_veb_clear(veb); in i40e_veb_release()
14856 static int i40e_add_veb(struct i40e_veb *veb, struct i40e_vsi *vsi) in i40e_add_veb() argument
14858 struct i40e_pf *pf = veb->pf; in i40e_add_veb()
14862 ret = i40e_aq_add_veb(&pf->hw, veb->uplink_seid, vsi->seid, in i40e_add_veb()
14863 veb->enabled_tc, false, in i40e_add_veb()
14864 &veb->seid, enable_stats, NULL); in i40e_add_veb()
14876 ret = i40e_aq_get_veb_parameters(&pf->hw, veb->seid, NULL, NULL, in i40e_add_veb()
14877 &veb->stats_idx, NULL, NULL, NULL); in i40e_add_veb()
14885 ret = i40e_veb_get_bw_info(veb); in i40e_add_veb()
14891 i40e_aq_delete_element(&pf->hw, veb->seid, NULL); in i40e_add_veb()
14895 vsi->uplink_seid = veb->seid; in i40e_add_veb()
14896 vsi->veb_idx = veb->idx; in i40e_add_veb()
14922 struct i40e_veb *veb, *uplink_veb = NULL; in i40e_veb_setup() local
14947 if (pf->veb[veb_idx] && in i40e_veb_setup()
14948 pf->veb[veb_idx]->seid == uplink_seid) { in i40e_veb_setup()
14949 uplink_veb = pf->veb[veb_idx]; in i40e_veb_setup()
14964 veb = pf->veb[veb_idx]; in i40e_veb_setup()
14965 veb->flags = flags; in i40e_veb_setup()
14966 veb->uplink_seid = uplink_seid; in i40e_veb_setup()
14967 veb->veb_idx = (uplink_veb ? uplink_veb->idx : I40E_NO_VEB); in i40e_veb_setup()
14968 veb->enabled_tc = (enabled_tc ? enabled_tc : 0x1); in i40e_veb_setup()
14971 ret = i40e_add_veb(veb, pf->vsi[vsi_idx]); in i40e_veb_setup()
14975 pf->lan_veb = veb->idx; in i40e_veb_setup()
14977 return veb; in i40e_veb_setup()
14980 i40e_veb_clear(veb); in i40e_veb_setup()
15021 if (pf->veb[v] && (pf->veb[v]->seid == seid)) { in i40e_setup_pf_switch_element()
15036 pf->veb[pf->lan_veb]->seid = seid; in i40e_setup_pf_switch_element()
15037 pf->veb[pf->lan_veb]->uplink_seid = pf->mac_seid; in i40e_setup_pf_switch_element()
15038 pf->veb[pf->lan_veb]->pf = pf; in i40e_setup_pf_switch_element()
15039 pf->veb[pf->lan_veb]->veb_idx = I40E_NO_VEB; in i40e_setup_pf_switch_element()
15189 if (pf->lan_veb < I40E_MAX_VEB && pf->veb[pf->lan_veb]) in i40e_setup_pf_switch()
15190 uplink_seid = pf->veb[pf->lan_veb]->seid; in i40e_setup_pf_switch()
16366 if (!pf->veb[i]) in i40e_remove()
16369 if (pf->veb[i]->uplink_seid == pf->mac_seid || in i40e_remove()
16370 pf->veb[i]->uplink_seid == 0) in i40e_remove()
16371 i40e_switch_branch_release(pf->veb[i]); in i40e_remove()
16430 kfree(pf->veb[i]); in i40e_remove()
16431 pf->veb[i] = NULL; in i40e_remove()