]> git.dujemihanovic.xyz Git - linux.git/commitdiff
ice: refactor struct ice_vsi_cfg_params to be inside of struct ice_vsi
authorMateusz Polchlopek <mateusz.polchlopek@intel.com>
Fri, 19 Apr 2024 09:11:04 +0000 (05:11 -0400)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 6 May 2024 16:21:00 +0000 (09:21 -0700)
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>
drivers/net/ethernet/intel/ice/devlink/devlink.c
drivers/net/ethernet/intel/ice/ice.h
drivers/net/ethernet/intel/ice/ice_lib.c
drivers/net/ethernet/intel/ice/ice_lib.h
drivers/net/ethernet/intel/ice/ice_main.c
drivers/net/ethernet/intel/ice/ice_sriov.c
drivers/net/ethernet/intel/ice/ice_vf_lib.c

index d191c5709899d285f810d686acca066b834b9f38..c4b69655cdf57db4a5b2613755fe68e147e23605 100644 (file)
@@ -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, &params);
+       err = ice_vsi_cfg(vsi);
        rtnl_unlock();
        if (err)
                goto err_vsi_cfg;
index 67a3236ab1fcb4ac959e35fd18e807b652e7d240..6ad8002b22e14a9a86f2ed994a6798d67627b5f3 100644 (file)
@@ -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 */
index d06e7c82c433de55c6f8cab8686e7b7ecdd1478c..5371e91f6bbb4b48f4065421ac9a68d82fda17d1 100644 (file)
@@ -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, &params);
+       ret = ice_vsi_cfg_def(vsi);
        if (ret)
                goto err_vsi_cfg;
 
index 9cd23afe5f15a852d6356809842feac175b9712a..94ce8964dda66e37ff6e5129b68940b4fd0a1704 100644 (file)
 #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);
index 8513deb266ebcacacdada7b259861d920235d647..01c32a785ea44e2cb15c9ed8ddecbb87358354a3 100644 (file)
@@ -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, &params);
@@ -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, &params);
@@ -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, &params);
index a60dacf8942a41cf1448673fe24f38aecf4b5b83..067712f4923f65d2a257259d25f75fcc441ffae6 100644 (file)
@@ -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;
 
index dab25d333bd132811111bf54a86d706066d9fe50..48a8d462d76ac98fd0cc827d6b9c5a5952e6812f 100644 (file)
@@ -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, &params);
+       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;