Lines Matching refs:veb

38 static int i40e_add_veb(struct i40e_veb *veb, struct i40e_vsi *vsi);
53 static int i40e_veb_get_bw_info(struct i40e_veb *veb);
558 struct i40e_veb *veb; in i40e_pf_reset_stats() local
565 i40e_pf_for_each_veb(pf, i, veb) { in i40e_pf_reset_stats()
566 memset(&veb->stats, 0, sizeof(veb->stats)); in i40e_pf_reset_stats()
567 memset(&veb->stats_offsets, 0, sizeof(veb->stats_offsets)); in i40e_pf_reset_stats()
568 memset(&veb->tc_stats, 0, sizeof(veb->tc_stats)); in i40e_pf_reset_stats()
569 memset(&veb->tc_stats_offsets, 0, sizeof(veb->tc_stats_offsets)); in i40e_pf_reset_stats()
570 veb->stat_offsets_loaded = false; in i40e_pf_reset_stats()
778 void i40e_update_veb_stats(struct i40e_veb *veb) in i40e_update_veb_stats() argument
780 struct i40e_pf *pf = veb->pf; in i40e_update_veb_stats()
788 idx = veb->stats_idx; in i40e_update_veb_stats()
789 es = &veb->stats; in i40e_update_veb_stats()
790 oes = &veb->stats_offsets; in i40e_update_veb_stats()
791 veb_es = &veb->tc_stats; in i40e_update_veb_stats()
792 veb_oes = &veb->tc_stats_offsets; in i40e_update_veb_stats()
796 veb->stat_offsets_loaded, in i40e_update_veb_stats()
800 veb->stat_offsets_loaded, in i40e_update_veb_stats()
804 veb->stat_offsets_loaded, in i40e_update_veb_stats()
807 veb->stat_offsets_loaded, in i40e_update_veb_stats()
810 veb->stat_offsets_loaded, in i40e_update_veb_stats()
813 veb->stat_offsets_loaded, in i40e_update_veb_stats()
817 veb->stat_offsets_loaded, in i40e_update_veb_stats()
820 veb->stat_offsets_loaded, in i40e_update_veb_stats()
823 veb->stat_offsets_loaded, in i40e_update_veb_stats()
826 veb->stat_offsets_loaded, in i40e_update_veb_stats()
831 veb->stat_offsets_loaded, in i40e_update_veb_stats()
836 veb->stat_offsets_loaded, in i40e_update_veb_stats()
841 veb->stat_offsets_loaded, in i40e_update_veb_stats()
846 veb->stat_offsets_loaded, in i40e_update_veb_stats()
850 veb->stat_offsets_loaded = true; in i40e_update_veb_stats()
6712 int i40e_veb_config_tc(struct i40e_veb *veb, u8 enabled_tc) in i40e_veb_config_tc() argument
6715 struct i40e_pf *pf = veb->pf; in i40e_veb_config_tc()
6720 if (!enabled_tc || veb->enabled_tc == enabled_tc) in i40e_veb_config_tc()
6732 ret = i40e_aq_config_switch_comp_bw_config(&pf->hw, veb->seid, in i40e_veb_config_tc()
6742 ret = i40e_veb_get_bw_info(veb); in i40e_veb_config_tc()
6765 struct i40e_veb *veb; in i40e_dcb_reconfigure() local
6775 i40e_pf_for_each_veb(pf, v, veb) { in i40e_dcb_reconfigure()
6776 ret = i40e_veb_config_tc(veb, tc_map); in i40e_dcb_reconfigure()
6780 veb->seid); in i40e_dcb_reconfigure()
9858 static void i40e_veb_link_event(struct i40e_veb *veb, bool link_up) in i40e_veb_link_event() argument
9864 if (!veb || !veb->pf) in i40e_veb_link_event()
9866 pf = veb->pf; in i40e_veb_link_event()
9870 if (vsi->uplink_seid == veb->seid) in i40e_veb_link_event()
9881 struct i40e_veb *veb = i40e_pf_get_main_veb(pf); in i40e_link_event() local
9924 if (veb) in i40e_link_event()
9925 i40e_veb_link_event(veb, new_link); in i40e_link_event()
9968 struct i40e_veb *veb; in i40e_watchdog_subtask() local
9995 i40e_pf_for_each_veb(pf, i, veb) in i40e_watchdog_subtask()
9996 i40e_update_veb_stats(veb); in i40e_watchdog_subtask()
10322 static void i40e_config_bridge_mode(struct i40e_veb *veb) in i40e_config_bridge_mode() argument
10324 struct i40e_pf *pf = veb->pf; in i40e_config_bridge_mode()
10328 veb->bridge_mode == BRIDGE_MODE_VEPA ? "VEPA" : "VEB"); in i40e_config_bridge_mode()
10329 if (veb->bridge_mode & BRIDGE_MODE_VEPA) in i40e_config_bridge_mode()
10343 static int i40e_reconstitute_veb(struct i40e_veb *veb) in i40e_reconstitute_veb() argument
10346 struct i40e_pf *pf = veb->pf; in i40e_reconstitute_veb()
10354 if (WARN_ON(veb->uplink_seid && veb->uplink_seid != pf->mac_seid)) { in i40e_reconstitute_veb()
10356 "Invalid uplink SEID for VEB %d\n", veb->idx); in i40e_reconstitute_veb()
10360 if (veb->uplink_seid == pf->mac_seid) { in i40e_reconstitute_veb()
10364 if (WARN_ON(ctl_vsi->veb_idx != veb->idx || in i40e_reconstitute_veb()
10367 "Invalid control VSI for VEB %d\n", veb->idx); in i40e_reconstitute_veb()
10376 veb->idx, ret); in i40e_reconstitute_veb()
10384 ret = i40e_add_veb(veb, ctl_vsi); in i40e_reconstitute_veb()
10388 if (veb->uplink_seid) { in i40e_reconstitute_veb()
10390 veb->bridge_mode = BRIDGE_MODE_VEB; in i40e_reconstitute_veb()
10392 veb->bridge_mode = BRIDGE_MODE_VEPA; in i40e_reconstitute_veb()
10393 i40e_config_bridge_mode(veb); in i40e_reconstitute_veb()
10401 if (vsi->veb_idx == veb->idx) { in i40e_reconstitute_veb()
10402 vsi->uplink_seid = veb->seid; in i40e_reconstitute_veb()
10810 struct i40e_veb *veb; in i40e_rebuild() local
10952 i40e_pf_for_each_veb(pf, v, veb) { in i40e_rebuild()
10953 ret = i40e_reconstitute_veb(veb); in i40e_rebuild()
10963 if (veb->uplink_seid == pf->mac_seid) { in i40e_rebuild()
10969 } else if (veb->uplink_seid == 0) { in i40e_rebuild()
13066 struct i40e_veb *veb; in i40e_ndo_bridge_setlink() local
13074 veb = i40e_pf_get_veb_by_seid(pf, vsi->uplink_seid); in i40e_ndo_bridge_setlink()
13088 if (!veb) { in i40e_ndo_bridge_setlink()
13089 veb = i40e_veb_setup(pf, vsi->uplink_seid, vsi->seid, in i40e_ndo_bridge_setlink()
13091 if (veb) { in i40e_ndo_bridge_setlink()
13092 veb->bridge_mode = mode; in i40e_ndo_bridge_setlink()
13093 i40e_config_bridge_mode(veb); in i40e_ndo_bridge_setlink()
13099 } else if (mode != veb->bridge_mode) { in i40e_ndo_bridge_setlink()
13101 veb->bridge_mode = mode; in i40e_ndo_bridge_setlink()
13135 struct i40e_veb *veb; in i40e_ndo_bridge_getlink() local
13142 veb = i40e_pf_get_veb_by_seid(pf, vsi->uplink_seid); in i40e_ndo_bridge_getlink()
13143 if (!veb) in i40e_ndo_bridge_getlink()
13146 return ndo_dflt_bridge_getlink(skb, pid, seq, dev, veb->bridge_mode, in i40e_ndo_bridge_getlink()
13794 struct i40e_veb *veb; in i40e_is_vsi_uplink_mode_veb() local
13801 veb = pf->veb[vsi->veb_idx]; in i40e_is_vsi_uplink_mode_veb()
13802 if (!veb) { in i40e_is_vsi_uplink_mode_veb()
13809 if (veb->bridge_mode & BRIDGE_MODE_VEPA) { in i40e_is_vsi_uplink_mode_veb()
14071 struct i40e_veb *veb; in i40e_vsi_release() local
14140 veb = i40e_pf_get_veb_by_seid(pf, uplink_seid); in i40e_vsi_release()
14141 if (veb && veb->uplink_seid) { in i40e_vsi_release()
14154 i40e_veb_release(veb); in i40e_vsi_release()
14311 struct i40e_veb *veb = NULL; in i40e_vsi_setup() local
14329 veb = i40e_pf_get_veb_by_seid(pf, uplink_seid); in i40e_vsi_setup()
14330 if (!veb && uplink_seid != pf->mac_seid) { in i40e_vsi_setup()
14339 veb = i40e_veb_setup(pf, pf->mac_seid, vsi->seid, in i40e_vsi_setup()
14342 veb = i40e_veb_setup(pf, vsi->uplink_seid, vsi->seid, in i40e_vsi_setup()
14344 if (veb) { in i40e_vsi_setup()
14355 veb->bridge_mode = BRIDGE_MODE_VEPA; in i40e_vsi_setup()
14358 i40e_config_bridge_mode(veb); in i40e_vsi_setup()
14360 veb = i40e_pf_get_veb_by_seid(pf, vsi->uplink_seid); in i40e_vsi_setup()
14361 if (!veb) { in i40e_vsi_setup()
14367 uplink_seid = veb->seid; in i40e_vsi_setup()
14378 vsi->veb_idx = (veb ? veb->idx : I40E_NO_VEB); in i40e_vsi_setup()
14485 static int i40e_veb_get_bw_info(struct i40e_veb *veb) in i40e_veb_get_bw_info() argument
14489 struct i40e_pf *pf = veb->pf; in i40e_veb_get_bw_info()
14495 ret = i40e_aq_query_switch_comp_bw_config(hw, veb->seid, in i40e_veb_get_bw_info()
14504 ret = i40e_aq_query_switch_comp_ets_config(hw, veb->seid, in i40e_veb_get_bw_info()
14513 veb->bw_limit = le16_to_cpu(ets_data.port_bw_limit); in i40e_veb_get_bw_info()
14514 veb->bw_max_quanta = ets_data.tc_bw_max; in i40e_veb_get_bw_info()
14515 veb->is_abs_credits = bw_data.absolute_credits_enable; in i40e_veb_get_bw_info()
14516 veb->enabled_tc = ets_data.tc_valid_bits; in i40e_veb_get_bw_info()
14520 veb->bw_tc_share_credits[i] = bw_data.tc_bw_share_credits[i]; in i40e_veb_get_bw_info()
14521 veb->bw_tc_limit_credits[i] = in i40e_veb_get_bw_info()
14523 veb->bw_tc_max_quanta[i] = ((tc_bw_max >> (i*4)) & 0x7); in i40e_veb_get_bw_info()
14540 struct i40e_veb *veb; in i40e_veb_mem_alloc() local
14553 while ((i < I40E_MAX_VEB) && (pf->veb[i] != NULL)) in i40e_veb_mem_alloc()
14560 veb = kzalloc(sizeof(*veb), GFP_KERNEL); in i40e_veb_mem_alloc()
14561 if (!veb) { in i40e_veb_mem_alloc()
14565 veb->pf = pf; in i40e_veb_mem_alloc()
14566 veb->idx = i; in i40e_veb_mem_alloc()
14567 veb->enabled_tc = 1; in i40e_veb_mem_alloc()
14569 pf->veb[i] = veb; in i40e_veb_mem_alloc()
14589 struct i40e_veb *veb; in i40e_switch_branch_release() local
14593 i40e_pf_for_each_veb(pf, i, veb) in i40e_switch_branch_release()
14594 if (veb->uplink_seid == branch->seid) in i40e_switch_branch_release()
14595 i40e_switch_branch_release(veb); in i40e_switch_branch_release()
14612 if (pf->veb[veb_idx]) in i40e_switch_branch_release()
14613 i40e_veb_release(pf->veb[veb_idx]); in i40e_switch_branch_release()
14620 static void i40e_veb_clear(struct i40e_veb *veb) in i40e_veb_clear() argument
14622 if (!veb) in i40e_veb_clear()
14625 if (veb->pf) { in i40e_veb_clear()
14626 struct i40e_pf *pf = veb->pf; in i40e_veb_clear()
14629 if (pf->veb[veb->idx] == veb) in i40e_veb_clear()
14630 pf->veb[veb->idx] = NULL; in i40e_veb_clear()
14634 kfree(veb); in i40e_veb_clear()
14641 void i40e_veb_release(struct i40e_veb *veb) in i40e_veb_release() argument
14647 pf = veb->pf; in i40e_veb_release()
14651 if (vsi_it->uplink_seid == veb->seid) { in i40e_veb_release()
14660 if ((veb->uplink_seid && n != 1) || (!veb->uplink_seid && n != 0)) { in i40e_veb_release()
14663 veb->seid, n); in i40e_veb_release()
14668 if (veb->uplink_seid) { in i40e_veb_release()
14670 vsi->uplink_seid = veb->uplink_seid; in i40e_veb_release()
14674 i40e_aq_delete_element(&pf->hw, veb->seid, NULL); in i40e_veb_release()
14675 i40e_veb_clear(veb); in i40e_veb_release()
14683 static int i40e_add_veb(struct i40e_veb *veb, struct i40e_vsi *vsi) in i40e_add_veb() argument
14685 struct i40e_pf *pf = veb->pf; in i40e_add_veb()
14689 ret = i40e_aq_add_veb(&pf->hw, veb->uplink_seid, vsi ? vsi->seid : 0, in i40e_add_veb()
14690 veb->enabled_tc, vsi ? false : true, in i40e_add_veb()
14691 &veb->seid, enable_stats, NULL); in i40e_add_veb()
14702 ret = i40e_aq_get_veb_parameters(&pf->hw, veb->seid, NULL, NULL, in i40e_add_veb()
14703 &veb->stats_idx, NULL, NULL, NULL); in i40e_add_veb()
14710 ret = i40e_veb_get_bw_info(veb); in i40e_add_veb()
14715 i40e_aq_delete_element(&pf->hw, veb->seid, NULL); in i40e_add_veb()
14720 vsi->uplink_seid = veb->seid; in i40e_add_veb()
14721 vsi->veb_idx = veb->idx; in i40e_add_veb()
14747 struct i40e_veb *veb; in i40e_veb_setup() local
14774 veb = pf->veb[veb_idx]; in i40e_veb_setup()
14775 veb->uplink_seid = uplink_seid; in i40e_veb_setup()
14776 veb->enabled_tc = (enabled_tc ? enabled_tc : 0x1); in i40e_veb_setup()
14779 ret = i40e_add_veb(veb, vsi); in i40e_veb_setup()
14784 pf->lan_veb = veb->idx; in i40e_veb_setup()
14786 return veb; in i40e_veb_setup()
14789 i40e_veb_clear(veb); in i40e_veb_setup()
14811 struct i40e_veb *veb; in i40e_setup_pf_switch_element() local
14826 veb = i40e_pf_get_main_veb(pf); in i40e_setup_pf_switch_element()
14827 if (!veb) { in i40e_setup_pf_switch_element()
14831 veb = i40e_pf_get_veb_by_seid(pf, seid); in i40e_setup_pf_switch_element()
14832 if (veb) { in i40e_setup_pf_switch_element()
14833 pf->lan_veb = veb->idx; in i40e_setup_pf_switch_element()
14843 veb = i40e_pf_get_main_veb(pf); in i40e_setup_pf_switch_element()
14844 if (!veb) in i40e_setup_pf_switch_element()
14847 veb->seid = seid; in i40e_setup_pf_switch_element()
14848 veb->uplink_seid = pf->mac_seid; in i40e_setup_pf_switch_element()
14849 veb->pf = pf; in i40e_setup_pf_switch_element()
14990 struct i40e_veb *veb; in i40e_setup_pf_switch() local
14996 veb = i40e_pf_get_main_veb(pf); in i40e_setup_pf_switch()
14997 if (veb) in i40e_setup_pf_switch()
14998 uplink_seid = veb->seid; in i40e_setup_pf_switch()
16118 struct i40e_veb *veb; in i40e_remove() local
16176 i40e_pf_for_each_veb(pf, i, veb) in i40e_remove()
16177 if (veb->uplink_seid == pf->mac_seid || in i40e_remove()
16178 veb->uplink_seid == 0) in i40e_remove()
16179 i40e_switch_branch_release(veb); in i40e_remove()
16234 i40e_pf_for_each_veb(pf, i, veb) { in i40e_remove()
16235 kfree(veb); in i40e_remove()
16236 pf->veb[i] = NULL; in i40e_remove()