MCPcopy Create free account
hub / github.com/F-Stack/f-stack / i40e_vsi_add_vlan

Function i40e_vsi_add_vlan

dpdk/drivers/net/i40e/i40e_ethdev.c:7339–7384  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7337}
7338
7339int
7340i40e_vsi_add_vlan(struct i40e_vsi *vsi, uint16_t vlan)
7341{
7342 struct i40e_macvlan_filter *mv_f;
7343 int mac_num;
7344 int ret = I40E_SUCCESS;
7345
7346 if (!vsi || vlan > RTE_ETHER_MAX_VLAN_ID)
7347 return I40E_ERR_PARAM;
7348
7349 /* If it's already set, just return */
7350 if (i40e_find_vlan_filter(vsi,vlan))
7351 return I40E_SUCCESS;
7352
7353 mac_num = vsi->mac_num;
7354
7355 if (mac_num == 0) {
7356 PMD_DRV_LOG(ERR, "Error! VSI doesn't have a mac addr");
7357 return I40E_ERR_PARAM;
7358 }
7359
7360 mv_f = rte_zmalloc("macvlan_data", mac_num * sizeof(*mv_f), 0);
7361
7362 if (mv_f == NULL) {
7363 PMD_DRV_LOG(ERR, "failed to allocate memory");
7364 return I40E_ERR_NO_MEMORY;
7365 }
7366
7367 ret = i40e_find_all_mac_for_vlan(vsi, mv_f, mac_num, vlan);
7368
7369 if (ret != I40E_SUCCESS)
7370 goto DONE;
7371
7372 ret = i40e_add_macvlan_filters(vsi, mv_f, mac_num);
7373
7374 if (ret != I40E_SUCCESS)
7375 goto DONE;
7376
7377 i40e_set_vlan_filter(vsi, vlan, 1);
7378
7379 vsi->vlan_num++;
7380 ret = I40E_SUCCESS;
7381DONE:
7382 rte_free(mv_f);
7383 return ret;
7384}
7385
7386int
7387i40e_vsi_delete_vlan(struct i40e_vsi *vsi, uint16_t vlan)

Callers 4

i40e_vlan_filter_setFunction · 0.85
i40e_vmdq_setupFunction · 0.85

Calls 6

i40e_find_vlan_filterFunction · 0.85
rte_zmallocFunction · 0.85
i40e_add_macvlan_filtersFunction · 0.85
i40e_set_vlan_filterFunction · 0.85
rte_freeFunction · 0.85

Tested by

no test coverage detected