diff options
author | Michal Swiatkowski <michal.swiatkowski@linux.intel.com> | 2023-10-24 14:09:27 +0300 |
---|---|---|
committer | Tony Nguyen <anthony.l.nguyen@intel.com> | 2023-11-13 22:42:14 +0300 |
commit | fff292b47ac19258381fea50c9dfd26091ef7fbc (patch) | |
tree | d4619b71b519e7f523a6616189144b56ff2c8223 /drivers/net/ethernet/intel/ice/ice_repr.h | |
parent | 5995ef88e3a8c2b014f51256a88be8e336532ce7 (diff) | |
download | linux-fff292b47ac19258381fea50c9dfd26091ef7fbc.tar.xz |
ice: add VF representors one by one
Implement adding representors one by one. Always set switchdev
environment when first representor is being added and clear environment
when last one is being removed.
Basic switchdev configuration remains the same. Code related to creating
and configuring representor was changed.
Instead of setting whole representors in one function handle only one
representor in setup function. The same with removing representors.
Stop representors when new one is being added or removed. Stop means,
disabling napi, stopping traffic and removing slow path rule. It is
needed because ::q_id will change after remapping, so each representor
will need new rule.
When representor are stopped rebuild control plane VSI with one more or
one less queue. One more if new representor is being added, one less if
representor is being removed.
Bridge port is removed during unregister_netdev() call on PR, so there
is no need to call it from driver side.
After that do remap new queues to correct vector. At the end start all
representors (napi enable, start queues, add slow path rule).
Reviewed-by: Piotr Raczynski <piotr.raczynski@intel.com>
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Tested-by: Sujai Buvaneswaran <sujai.buvaneswaran@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_repr.h')
-rw-r--r-- | drivers/net/ethernet/intel/ice/ice_repr.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_repr.h b/drivers/net/ethernet/intel/ice/ice_repr.h index a3cd256d82b7..f9aede315716 100644 --- a/drivers/net/ethernet/intel/ice/ice_repr.h +++ b/drivers/net/ethernet/intel/ice/ice_repr.h @@ -22,8 +22,8 @@ struct ice_repr { #endif }; -int ice_repr_add_for_all_vfs(struct ice_pf *pf); -void ice_repr_rem_from_all_vfs(struct ice_pf *pf); +struct ice_repr *ice_repr_add_vf(struct ice_vf *vf); +void ice_repr_rem_vf(struct ice_repr *repr); void ice_repr_start_tx_queues(struct ice_repr *repr); void ice_repr_stop_tx_queues(struct ice_repr *repr); |