ice: return pointer to representor
authorMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
Tue, 24 Oct 2023 11:09:23 +0000 (13:09 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 13 Nov 2023 19:42:14 +0000 (11:42 -0800)
In follow up patches it will be easier to obtain created port
representor pointer instead of the id. Without it the pattern from
eswitch side will look like:
- create PR
- get PR based on the id

Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Reviewed-by: Jacob Keller <jacob.e.keller@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>
drivers/net/ethernet/intel/ice/ice_repr.c

index fce25472d05300f2d5cc761aeefa3219af48a369..b29a3d010780e57c3186b7db4fecc8e69680fe71 100644 (file)
@@ -382,7 +382,7 @@ err_alloc:
        return ERR_PTR(err);
 }
 
-static int ice_repr_add_vf(struct ice_vf *vf)
+static struct ice_repr *ice_repr_add_vf(struct ice_vf *vf)
 {
        struct ice_repr *repr;
        struct ice_vsi *vsi;
@@ -390,11 +390,11 @@ static int ice_repr_add_vf(struct ice_vf *vf)
 
        vsi = ice_get_vf_vsi(vf);
        if (!vsi)
-               return -EINVAL;
+               return ERR_PTR(-ENOENT);
 
        err = ice_devlink_create_vf_port(vf);
        if (err)
-               return err;
+               return ERR_PTR(err);
 
        repr = ice_repr_add(vf->pf, vsi, vf->hw_lan_addr);
        if (IS_ERR(repr)) {
@@ -416,13 +416,13 @@ static int ice_repr_add_vf(struct ice_vf *vf)
 
        ice_virtchnl_set_repr_ops(vf);
 
-       return 0;
+       return repr;
 
 err_netdev:
        ice_repr_rem(&vf->pf->eswitch.reprs, repr);
 err_repr_add:
        ice_devlink_destroy_vf_port(vf);
-       return err;
+       return ERR_PTR(err);
 }
 
 /**
@@ -432,6 +432,7 @@ err_repr_add:
 int ice_repr_add_for_all_vfs(struct ice_pf *pf)
 {
        struct devlink *devlink;
+       struct ice_repr *repr;
        struct ice_vf *vf;
        unsigned int bkt;
        int err;
@@ -439,9 +440,11 @@ int ice_repr_add_for_all_vfs(struct ice_pf *pf)
        lockdep_assert_held(&pf->vfs.table_lock);
 
        ice_for_each_vf(pf, bkt, vf) {
-               err = ice_repr_add_vf(vf);
-               if (err)
+               repr = ice_repr_add_vf(vf);
+               if (IS_ERR(repr)) {
+                       err = PTR_ERR(repr);
                        goto err;
+               }
        }
 
        /* only export if ADQ and DCB disabled */