Commit 0f00a897 authored by Michal Swiatkowski's avatar Michal Swiatkowski Committed by Tony Nguyen

ice: check if SF is ready in ethtool ops

Now there is another type of port representor. Correct checking if
parent device is ready to reflect also new PR type.
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Reviewed-by: default avatarWojciech Drewek <wojciech.drewek@intel.com>
Signed-off-by: default avatarMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
parent ef250903
...@@ -4412,7 +4412,7 @@ ice_repr_get_drvinfo(struct net_device *netdev, ...@@ -4412,7 +4412,7 @@ ice_repr_get_drvinfo(struct net_device *netdev,
{ {
struct ice_repr *repr = ice_netdev_to_repr(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; return;
__ice_get_drvinfo(netdev, drvinfo, repr->src_vsi); __ice_get_drvinfo(netdev, drvinfo, repr->src_vsi);
...@@ -4424,8 +4424,7 @@ ice_repr_get_strings(struct net_device *netdev, u32 stringset, u8 *data) ...@@ -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); struct ice_repr *repr = ice_netdev_to_repr(netdev);
/* for port representors only ETH_SS_STATS is supported */ /* for port representors only ETH_SS_STATS is supported */
if (ice_check_vf_ready_for_cfg(repr->vf) || if (repr->ops.ready(repr) || stringset != ETH_SS_STATS)
stringset != ETH_SS_STATS)
return; return;
__ice_get_strings(netdev, stringset, data, repr->src_vsi); __ice_get_strings(netdev, stringset, data, repr->src_vsi);
...@@ -4438,7 +4437,7 @@ ice_repr_get_ethtool_stats(struct net_device *netdev, ...@@ -4438,7 +4437,7 @@ ice_repr_get_ethtool_stats(struct net_device *netdev,
{ {
struct ice_repr *repr = ice_netdev_to_repr(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; return;
__ice_get_ethtool_stats(netdev, stats, data, repr->src_vsi); __ice_get_ethtool_stats(netdev, stats, data, repr->src_vsi);
......
...@@ -283,6 +283,16 @@ ice_repr_reg_netdev(struct net_device *netdev) ...@@ -283,6 +283,16 @@ ice_repr_reg_netdev(struct net_device *netdev)
return register_netdev(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 * ice_repr_destroy - remove representor from VF
* @repr: pointer to representor structure * @repr: pointer to representor structure
...@@ -420,6 +430,7 @@ struct ice_repr *ice_repr_create_vf(struct ice_vf *vf) ...@@ -420,6 +430,7 @@ struct ice_repr *ice_repr_create_vf(struct ice_vf *vf)
repr->vf = vf; repr->vf = vf;
repr->ops.add = ice_repr_add_vf; repr->ops.add = ice_repr_add_vf;
repr->ops.rem = ice_repr_rem_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); ether_addr_copy(repr->parent_mac, vf->hw_lan_addr);
...@@ -466,6 +477,7 @@ struct ice_repr *ice_repr_create_sf(struct ice_dynamic_port *sf) ...@@ -466,6 +477,7 @@ struct ice_repr *ice_repr_create_sf(struct ice_dynamic_port *sf)
repr->sf = sf; repr->sf = sf;
repr->ops.add = ice_repr_add_sf; repr->ops.add = ice_repr_add_sf;
repr->ops.rem = ice_repr_rem_sf; repr->ops.rem = ice_repr_rem_sf;
repr->ops.ready = ice_repr_ready_sf;
ether_addr_copy(repr->parent_mac, sf->hw_addr); ether_addr_copy(repr->parent_mac, sf->hw_addr);
......
...@@ -36,6 +36,7 @@ struct ice_repr { ...@@ -36,6 +36,7 @@ struct ice_repr {
struct { struct {
int (*add)(struct ice_repr *repr); int (*add)(struct ice_repr *repr);
void (*rem)(struct ice_repr *repr); void (*rem)(struct ice_repr *repr);
int (*ready)(struct ice_repr *repr);
} ops; } ops;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment