Skip to content

Commit

Permalink
ice: check if SF is ready in ethtool ops
Browse files Browse the repository at this point in the history
Now there is another type of port representor. Correct checking if
parent device is ready to reflect also new PR type.

Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
  • Loading branch information
Michal Swiatkowski authored and Tony Nguyen committed Sep 6, 2024
1 parent ef25090 commit 0f00a89
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 4 deletions.
7 changes: 3 additions & 4 deletions drivers/net/ethernet/intel/ice/ice_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -4412,7 +4412,7 @@ ice_repr_get_drvinfo(struct net_device *netdev,
{
struct ice_repr *repr = ice_netdev_to_repr(netdev);

if (ice_check_vf_ready_for_cfg(repr->vf))
if (repr->ops.ready(repr))
return;

__ice_get_drvinfo(netdev, drvinfo, repr->src_vsi);
Expand All @@ -4424,8 +4424,7 @@ ice_repr_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
struct ice_repr *repr = ice_netdev_to_repr(netdev);

/* for port representors only ETH_SS_STATS is supported */
if (ice_check_vf_ready_for_cfg(repr->vf) ||
stringset != ETH_SS_STATS)
if (repr->ops.ready(repr) || stringset != ETH_SS_STATS)
return;

__ice_get_strings(netdev, stringset, data, repr->src_vsi);
Expand All @@ -4438,7 +4437,7 @@ ice_repr_get_ethtool_stats(struct net_device *netdev,
{
struct ice_repr *repr = ice_netdev_to_repr(netdev);

if (ice_check_vf_ready_for_cfg(repr->vf))
if (repr->ops.ready(repr))
return;

__ice_get_ethtool_stats(netdev, stats, data, repr->src_vsi);
Expand Down
12 changes: 12 additions & 0 deletions drivers/net/ethernet/intel/ice/ice_repr.c
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,16 @@ ice_repr_reg_netdev(struct net_device *netdev)
return register_netdev(netdev);
}

static int ice_repr_ready_vf(struct ice_repr *repr)
{
return !ice_check_vf_ready_for_cfg(repr->vf);
}

static int ice_repr_ready_sf(struct ice_repr *repr)
{
return !repr->sf->active;
}

/**
* ice_repr_destroy - remove representor from VF
* @repr: pointer to representor structure
Expand Down Expand Up @@ -420,6 +430,7 @@ struct ice_repr *ice_repr_create_vf(struct ice_vf *vf)
repr->vf = vf;
repr->ops.add = ice_repr_add_vf;
repr->ops.rem = ice_repr_rem_vf;
repr->ops.ready = ice_repr_ready_vf;

ether_addr_copy(repr->parent_mac, vf->hw_lan_addr);

Expand Down Expand Up @@ -466,6 +477,7 @@ struct ice_repr *ice_repr_create_sf(struct ice_dynamic_port *sf)
repr->sf = sf;
repr->ops.add = ice_repr_add_sf;
repr->ops.rem = ice_repr_rem_sf;
repr->ops.ready = ice_repr_ready_sf;

ether_addr_copy(repr->parent_mac, sf->hw_addr);

Expand Down
1 change: 1 addition & 0 deletions drivers/net/ethernet/intel/ice/ice_repr.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ struct ice_repr {
struct {
int (*add)(struct ice_repr *repr);
void (*rem)(struct ice_repr *repr);
int (*ready)(struct ice_repr *repr);
} ops;
};

Expand Down

0 comments on commit 0f00a89

Please sign in to comment.