Skip to content

Commit

Permalink
net: ethtool: create and export ethtool_dev_mm_supported()
Browse files Browse the repository at this point in the history
Create a wrapper over __ethtool_dev_mm_supported() which also calls
ethnl_ops_begin() and ethnl_ops_complete(). It can be used by other code
layers, such as tc, to make sure that preemptible TCs are supported
(this is true if an underlying MAC Merge layer exists).

Signed-off-by: Vladimir Oltean <[email protected]>
Reviewed-by: Ferenc Fejes <[email protected]>
Reviewed-by: Simon Horman <[email protected]>
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
vladimiroltean authored and kuba-moo committed Apr 14, 2023
1 parent 85a4abe commit d54151a
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
6 changes: 6 additions & 0 deletions include/linux/ethtool_netlink.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ void ethtool_aggregate_pause_stats(struct net_device *dev,
struct ethtool_pause_stats *pause_stats);
void ethtool_aggregate_rmon_stats(struct net_device *dev,
struct ethtool_rmon_stats *rmon_stats);
bool ethtool_dev_mm_supported(struct net_device *dev);

#else
static inline int ethnl_cable_test_alloc(struct phy_device *phydev, u8 cmd)
Expand Down Expand Up @@ -112,5 +113,10 @@ ethtool_aggregate_rmon_stats(struct net_device *dev,
{
}

static inline bool ethtool_dev_mm_supported(struct net_device *dev)
{
return false;
}

#endif /* IS_ENABLED(CONFIG_ETHTOOL_NETLINK) */
#endif /* _LINUX_ETHTOOL_NETLINK_H_ */
23 changes: 23 additions & 0 deletions net/ethtool/mm.c
Original file line number Diff line number Diff line change
Expand Up @@ -249,3 +249,26 @@ bool __ethtool_dev_mm_supported(struct net_device *dev)

return !ret;
}

bool ethtool_dev_mm_supported(struct net_device *dev)
{
const struct ethtool_ops *ops = dev->ethtool_ops;
bool supported;
int ret;

ASSERT_RTNL();

if (!ops)
return false;

ret = ethnl_ops_begin(dev);
if (ret < 0)
return false;

supported = __ethtool_dev_mm_supported(dev);

ethnl_ops_complete(dev);

return supported;
}
EXPORT_SYMBOL_GPL(ethtool_dev_mm_supported);

0 comments on commit d54151a

Please sign in to comment.