> @@ -3830,12 +3844,22 @@ i40e_vsi_release(struct i40e_vsi *vsi)
>               i40e_veb_release(vsi->veb);
>       }
> 
> +     if (vsi->floating_veb) {
> +             TAILQ_FOREACH(vsi_list, &vsi->floating_veb->head, list) {
> +                     if (i40e_vsi_release(vsi_list->vsi) != I40E_SUCCESS)
> +                             return -1;
It will be better to continue but not return error.

> +                     TAILQ_REMOVE(&vsi->floating_veb->head, vsi_list,
> list);
> +             }
> +             i40e_veb_release(vsi->floating_veb);
> +     }
> +



> diff --git a/drivers/net/i40e/i40e_ethdev.h
> b/drivers/net/i40e/i40e_ethdev.h index 7dc6936..09fb6e2 100644
> --- a/drivers/net/i40e/i40e_ethdev.h
> +++ b/drivers/net/i40e/i40e_ethdev.h
> @@ -224,6 +224,7 @@ struct i40e_bw_info {  struct i40e_veb {
>       struct i40e_vsi_list_head head;
>       struct i40e_vsi *associate_vsi; /* Associate VSI who owns the VEB */
> +     struct i40e_pf *associate_pf; /* Associate PF who owns the VEB */
>       uint16_t seid; /* The seid of VEB itself */
>       uint16_t uplink_seid; /* The uplink seid of this VEB */
>       uint16_t stats_idx;
> @@ -264,6 +265,7 @@ struct i40e_vsi {
>       struct i40e_vsi_list sib_vsi_list; /* sibling vsi list */
>       struct i40e_vsi *parent_vsi;
>       struct i40e_veb *veb;    /* Associated veb, could be null */
> +     struct i40e_veb *floating_veb; /* Associated floating veb */

For vsi->veb, the VEB associated with uplink vsi, but as I know, floating_veb
Has no uplink vsis. Can I understand the floating_veb in vsi indicates floating 
veb
Of the device/pf, and only main vsi will have it? If so, why not put in in the 
pf structure?


Reply via email to