mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 21:52:29 -04:00
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: 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>
This commit is contained in:
committed by
Tony Nguyen
parent
ef25090371
commit
0f00a897c9
@@ -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)
|
|||||||
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,
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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 {
|
|||||||
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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user