ice: refactor struct ice_vsi_cfg_params to be inside of struct ice_vsi
Refactor struct ice_vsi_cfg_params to be embedded into struct ice_vsi. Prior to that the members of the struct were scattered around ice_vsi, and were copy-pasted for purposes of reinit. Now we have struct handy, and it is easier to have something sticky in the flags field. Suggested-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> Reviewed-by: Vaishnavi Tipireddy <vaishnavi.tipireddy@intel.com> Signed-off-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com> Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel) Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
c5e6bd977d
commit
deea427ffc
@ -1193,18 +1193,16 @@ static int ice_devlink_set_parent(struct devlink_rate *devlink_rate,
|
||||
static int ice_devlink_reinit_up(struct ice_pf *pf)
|
||||
{
|
||||
struct ice_vsi *vsi = ice_get_main_vsi(pf);
|
||||
struct ice_vsi_cfg_params params;
|
||||
int err;
|
||||
|
||||
err = ice_init_dev(pf);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
params = ice_vsi_to_params(vsi);
|
||||
params.flags = ICE_VSI_FLAG_INIT;
|
||||
vsi->flags = ICE_VSI_FLAG_INIT;
|
||||
|
||||
rtnl_lock();
|
||||
err = ice_vsi_cfg(vsi, ¶ms);
|
||||
err = ice_vsi_cfg(vsi);
|
||||
rtnl_unlock();
|
||||
if (err)
|
||||
goto err_vsi_cfg;
|
||||
|
@ -331,7 +331,6 @@ struct ice_vsi {
|
||||
struct net_device *netdev;
|
||||
struct ice_sw *vsw; /* switch this VSI is on */
|
||||
struct ice_pf *back; /* back pointer to PF */
|
||||
struct ice_port_info *port_info; /* back pointer to port_info */
|
||||
struct ice_rx_ring **rx_rings; /* Rx ring array */
|
||||
struct ice_tx_ring **tx_rings; /* Tx ring array */
|
||||
struct ice_q_vector **q_vectors; /* q_vector array */
|
||||
@ -349,12 +348,9 @@ struct ice_vsi {
|
||||
/* tell if only dynamic irq allocation is allowed */
|
||||
bool irq_dyn_alloc;
|
||||
|
||||
enum ice_vsi_type type;
|
||||
u16 vsi_num; /* HW (absolute) index of this VSI */
|
||||
u16 idx; /* software index in pf->vsi[] */
|
||||
|
||||
struct ice_vf *vf; /* VF associated with this VSI */
|
||||
|
||||
u16 num_gfltr;
|
||||
u16 num_bfltr;
|
||||
|
||||
@ -446,12 +442,18 @@ struct ice_vsi {
|
||||
u8 old_numtc;
|
||||
u16 old_ena_tc;
|
||||
|
||||
struct ice_channel *ch;
|
||||
|
||||
/* setup back reference, to which aggregator node this VSI
|
||||
* corresponds to
|
||||
*/
|
||||
struct ice_agg_node *agg_node;
|
||||
|
||||
struct_group_tagged(ice_vsi_cfg_params, params,
|
||||
struct ice_port_info *port_info; /* back pointer to port_info */
|
||||
struct ice_channel *ch; /* VSI's channel structure, may be NULL */
|
||||
struct ice_vf *vf; /* VF associated with this VSI, may be NULL */
|
||||
u32 flags; /* VSI flags used for rebuild and configuration */
|
||||
enum ice_vsi_type type; /* the type of the VSI */
|
||||
);
|
||||
} ____cacheline_internodealigned_in_smp;
|
||||
|
||||
/* struct that defines an interrupt vector */
|
||||
|
@ -2227,10 +2227,8 @@ static int ice_vsi_cfg_tc_lan(struct ice_pf *pf, struct ice_vsi *vsi)
|
||||
/**
|
||||
* ice_vsi_cfg_def - configure default VSI based on the type
|
||||
* @vsi: pointer to VSI
|
||||
* @params: the parameters to configure this VSI with
|
||||
*/
|
||||
static int
|
||||
ice_vsi_cfg_def(struct ice_vsi *vsi, struct ice_vsi_cfg_params *params)
|
||||
static int ice_vsi_cfg_def(struct ice_vsi *vsi)
|
||||
{
|
||||
struct device *dev = ice_pf_to_dev(vsi->back);
|
||||
struct ice_pf *pf = vsi->back;
|
||||
@ -2238,7 +2236,7 @@ ice_vsi_cfg_def(struct ice_vsi *vsi, struct ice_vsi_cfg_params *params)
|
||||
|
||||
vsi->vsw = pf->first_sw;
|
||||
|
||||
ret = ice_vsi_alloc_def(vsi, params->ch);
|
||||
ret = ice_vsi_alloc_def(vsi, vsi->ch);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -2263,7 +2261,7 @@ ice_vsi_cfg_def(struct ice_vsi *vsi, struct ice_vsi_cfg_params *params)
|
||||
ice_vsi_set_tc_cfg(vsi);
|
||||
|
||||
/* create the VSI */
|
||||
ret = ice_vsi_init(vsi, params->flags);
|
||||
ret = ice_vsi_init(vsi, vsi->flags);
|
||||
if (ret)
|
||||
goto unroll_get_qs;
|
||||
|
||||
@ -2383,23 +2381,16 @@ unroll_vsi_alloc:
|
||||
/**
|
||||
* ice_vsi_cfg - configure a previously allocated VSI
|
||||
* @vsi: pointer to VSI
|
||||
* @params: parameters used to configure this VSI
|
||||
*/
|
||||
int ice_vsi_cfg(struct ice_vsi *vsi, struct ice_vsi_cfg_params *params)
|
||||
int ice_vsi_cfg(struct ice_vsi *vsi)
|
||||
{
|
||||
struct ice_pf *pf = vsi->back;
|
||||
int ret;
|
||||
|
||||
if (WARN_ON(params->type == ICE_VSI_VF && !params->vf))
|
||||
if (WARN_ON(vsi->type == ICE_VSI_VF && !vsi->vf))
|
||||
return -EINVAL;
|
||||
|
||||
vsi->type = params->type;
|
||||
vsi->port_info = params->pi;
|
||||
|
||||
/* For VSIs which don't have a connected VF, this will be NULL */
|
||||
vsi->vf = params->vf;
|
||||
|
||||
ret = ice_vsi_cfg_def(vsi, params);
|
||||
ret = ice_vsi_cfg_def(vsi);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -2485,7 +2476,7 @@ ice_vsi_setup(struct ice_pf *pf, struct ice_vsi_cfg_params *params)
|
||||
* a port_info structure for it.
|
||||
*/
|
||||
if (WARN_ON(!(params->flags & ICE_VSI_FLAG_INIT)) ||
|
||||
WARN_ON(!params->pi))
|
||||
WARN_ON(!params->port_info))
|
||||
return NULL;
|
||||
|
||||
vsi = ice_vsi_alloc(pf);
|
||||
@ -2494,7 +2485,8 @@ ice_vsi_setup(struct ice_pf *pf, struct ice_vsi_cfg_params *params)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret = ice_vsi_cfg(vsi, params);
|
||||
vsi->params = *params;
|
||||
ret = ice_vsi_cfg(vsi);
|
||||
if (ret)
|
||||
goto err_vsi_cfg;
|
||||
|
||||
@ -3041,7 +3033,6 @@ ice_vsi_realloc_stat_arrays(struct ice_vsi *vsi)
|
||||
*/
|
||||
int ice_vsi_rebuild(struct ice_vsi *vsi, u32 vsi_flags)
|
||||
{
|
||||
struct ice_vsi_cfg_params params = {};
|
||||
struct ice_coalesce_stored *coalesce;
|
||||
int prev_num_q_vectors;
|
||||
struct ice_pf *pf;
|
||||
@ -3050,9 +3041,7 @@ int ice_vsi_rebuild(struct ice_vsi *vsi, u32 vsi_flags)
|
||||
if (!vsi)
|
||||
return -EINVAL;
|
||||
|
||||
params = ice_vsi_to_params(vsi);
|
||||
params.flags = vsi_flags;
|
||||
|
||||
vsi->flags = vsi_flags;
|
||||
pf = vsi->back;
|
||||
if (WARN_ON(vsi->type == ICE_VSI_VF && !vsi->vf))
|
||||
return -EINVAL;
|
||||
@ -3062,7 +3051,7 @@ int ice_vsi_rebuild(struct ice_vsi *vsi, u32 vsi_flags)
|
||||
goto err_vsi_cfg;
|
||||
|
||||
ice_vsi_decfg(vsi);
|
||||
ret = ice_vsi_cfg_def(vsi, ¶ms);
|
||||
ret = ice_vsi_cfg_def(vsi);
|
||||
if (ret)
|
||||
goto err_vsi_cfg;
|
||||
|
||||
|
@ -11,43 +11,6 @@
|
||||
#define ICE_VSI_FLAG_INIT BIT(0)
|
||||
#define ICE_VSI_FLAG_NO_INIT 0
|
||||
|
||||
/**
|
||||
* struct ice_vsi_cfg_params - VSI configuration parameters
|
||||
* @pi: pointer to the port_info instance for the VSI
|
||||
* @ch: pointer to the channel structure for the VSI, may be NULL
|
||||
* @vf: pointer to the VF associated with this VSI, may be NULL
|
||||
* @type: the type of VSI to configure
|
||||
* @flags: VSI flags used for rebuild and configuration
|
||||
*
|
||||
* Parameter structure used when configuring a new VSI.
|
||||
*/
|
||||
struct ice_vsi_cfg_params {
|
||||
struct ice_port_info *pi;
|
||||
struct ice_channel *ch;
|
||||
struct ice_vf *vf;
|
||||
enum ice_vsi_type type;
|
||||
u32 flags;
|
||||
};
|
||||
|
||||
/**
|
||||
* ice_vsi_to_params - Get parameters for an existing VSI
|
||||
* @vsi: the VSI to get parameters for
|
||||
*
|
||||
* Fill a parameter structure for reconfiguring a VSI with its current
|
||||
* parameters, such as during a rebuild operation.
|
||||
*/
|
||||
static inline struct ice_vsi_cfg_params ice_vsi_to_params(struct ice_vsi *vsi)
|
||||
{
|
||||
struct ice_vsi_cfg_params params = {};
|
||||
|
||||
params.pi = vsi->port_info;
|
||||
params.ch = vsi->ch;
|
||||
params.vf = vsi->vf;
|
||||
params.type = vsi->type;
|
||||
|
||||
return params;
|
||||
}
|
||||
|
||||
const char *ice_vsi_type_str(enum ice_vsi_type vsi_type);
|
||||
|
||||
bool ice_pf_state_is_nominal(struct ice_pf *pf);
|
||||
@ -101,7 +64,7 @@ void ice_vsi_decfg(struct ice_vsi *vsi);
|
||||
void ice_dis_vsi(struct ice_vsi *vsi, bool locked);
|
||||
|
||||
int ice_vsi_rebuild(struct ice_vsi *vsi, u32 vsi_flags);
|
||||
int ice_vsi_cfg(struct ice_vsi *vsi, struct ice_vsi_cfg_params *params);
|
||||
int ice_vsi_cfg(struct ice_vsi *vsi);
|
||||
|
||||
bool ice_is_reset_in_progress(unsigned long *state);
|
||||
int ice_wait_for_reset(struct ice_pf *pf, unsigned long timeout);
|
||||
|
@ -3685,7 +3685,7 @@ ice_pf_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi)
|
||||
struct ice_vsi_cfg_params params = {};
|
||||
|
||||
params.type = ICE_VSI_PF;
|
||||
params.pi = pi;
|
||||
params.port_info = pi;
|
||||
params.flags = ICE_VSI_FLAG_INIT;
|
||||
|
||||
return ice_vsi_setup(pf, ¶ms);
|
||||
@ -3698,7 +3698,7 @@ ice_chnl_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi,
|
||||
struct ice_vsi_cfg_params params = {};
|
||||
|
||||
params.type = ICE_VSI_CHNL;
|
||||
params.pi = pi;
|
||||
params.port_info = pi;
|
||||
params.ch = ch;
|
||||
params.flags = ICE_VSI_FLAG_INIT;
|
||||
|
||||
@ -3719,7 +3719,7 @@ ice_ctrl_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi)
|
||||
struct ice_vsi_cfg_params params = {};
|
||||
|
||||
params.type = ICE_VSI_CTRL;
|
||||
params.pi = pi;
|
||||
params.port_info = pi;
|
||||
params.flags = ICE_VSI_FLAG_INIT;
|
||||
|
||||
return ice_vsi_setup(pf, ¶ms);
|
||||
@ -3739,7 +3739,7 @@ ice_lb_vsi_setup(struct ice_pf *pf, struct ice_port_info *pi)
|
||||
struct ice_vsi_cfg_params params = {};
|
||||
|
||||
params.type = ICE_VSI_LB;
|
||||
params.pi = pi;
|
||||
params.port_info = pi;
|
||||
params.flags = ICE_VSI_FLAG_INIT;
|
||||
|
||||
return ice_vsi_setup(pf, ¶ms);
|
||||
|
@ -225,7 +225,7 @@ static struct ice_vsi *ice_vf_vsi_setup(struct ice_vf *vf)
|
||||
struct ice_vsi *vsi;
|
||||
|
||||
params.type = ICE_VSI_VF;
|
||||
params.pi = ice_vf_get_port_info(vf);
|
||||
params.port_info = ice_vf_get_port_info(vf);
|
||||
params.vf = vf;
|
||||
params.flags = ICE_VSI_FLAG_INIT;
|
||||
|
||||
|
@ -259,20 +259,18 @@ static void ice_vf_pre_vsi_rebuild(struct ice_vf *vf)
|
||||
int ice_vf_reconfig_vsi(struct ice_vf *vf)
|
||||
{
|
||||
struct ice_vsi *vsi = ice_get_vf_vsi(vf);
|
||||
struct ice_vsi_cfg_params params = {};
|
||||
struct ice_pf *pf = vf->pf;
|
||||
int err;
|
||||
|
||||
if (WARN_ON(!vsi))
|
||||
return -EINVAL;
|
||||
|
||||
params = ice_vsi_to_params(vsi);
|
||||
params.flags = ICE_VSI_FLAG_NO_INIT;
|
||||
vsi->flags = ICE_VSI_FLAG_NO_INIT;
|
||||
|
||||
ice_vsi_decfg(vsi);
|
||||
ice_fltr_remove_all(vsi);
|
||||
|
||||
err = ice_vsi_cfg(vsi, ¶ms);
|
||||
err = ice_vsi_cfg(vsi);
|
||||
if (err) {
|
||||
dev_err(ice_pf_to_dev(pf),
|
||||
"Failed to reconfigure the VF%u's VSI, error %d\n",
|
||||
@ -1243,7 +1241,7 @@ struct ice_vsi *ice_vf_ctrl_vsi_setup(struct ice_vf *vf)
|
||||
struct ice_vsi *vsi;
|
||||
|
||||
params.type = ICE_VSI_CTRL;
|
||||
params.pi = ice_vf_get_port_info(vf);
|
||||
params.port_info = ice_vf_get_port_info(vf);
|
||||
params.vf = vf;
|
||||
params.flags = ICE_VSI_FLAG_INIT;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user