Commit 6d62b4d5 authored by Philippe Reynes's avatar Philippe Reynes Committed by David S. Miller

net: ethtool: export conversion function between u32 and link mode

The function convert_legacy_u32_to_link_mode and
convert_link_mode_to_legacy_u32 may be used outside
of ethtool.c. We rename them to ethtool_convert_...
and export them, so we could use them in others
drivers and modules.
Signed-off-by: default avatarPhilippe Reynes <tremyfr@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2a2bbf17
...@@ -150,6 +150,13 @@ extern int ...@@ -150,6 +150,13 @@ extern int
__ethtool_get_link_ksettings(struct net_device *dev, __ethtool_get_link_ksettings(struct net_device *dev,
struct ethtool_link_ksettings *link_ksettings); struct ethtool_link_ksettings *link_ksettings);
void ethtool_convert_legacy_u32_to_link_mode(unsigned long *dst,
u32 legacy_u32);
/* return false if src had higher bits set. lower bits always updated. */
bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,
const unsigned long *src);
/** /**
* struct ethtool_ops - optional netdev operations * struct ethtool_ops - optional netdev operations
* @get_settings: DEPRECATED, use %get_link_ksettings/%set_link_ksettings * @get_settings: DEPRECATED, use %get_link_ksettings/%set_link_ksettings
......
...@@ -391,15 +391,17 @@ static int __ethtool_set_flags(struct net_device *dev, u32 data) ...@@ -391,15 +391,17 @@ static int __ethtool_set_flags(struct net_device *dev, u32 data)
return 0; return 0;
} }
static void convert_legacy_u32_to_link_mode(unsigned long *dst, u32 legacy_u32) void ethtool_convert_legacy_u32_to_link_mode(unsigned long *dst,
u32 legacy_u32)
{ {
bitmap_zero(dst, __ETHTOOL_LINK_MODE_MASK_NBITS); bitmap_zero(dst, __ETHTOOL_LINK_MODE_MASK_NBITS);
dst[0] = legacy_u32; dst[0] = legacy_u32;
} }
EXPORT_SYMBOL(ethtool_convert_legacy_u32_to_link_mode);
/* return false if src had higher bits set. lower bits always updated. */ /* return false if src had higher bits set. lower bits always updated. */
static bool convert_link_mode_to_legacy_u32(u32 *legacy_u32, bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32,
const unsigned long *src) const unsigned long *src)
{ {
bool retval = true; bool retval = true;
...@@ -419,6 +421,7 @@ static bool convert_link_mode_to_legacy_u32(u32 *legacy_u32, ...@@ -419,6 +421,7 @@ static bool convert_link_mode_to_legacy_u32(u32 *legacy_u32,
*legacy_u32 = src[0]; *legacy_u32 = src[0];
return retval; return retval;
} }
EXPORT_SYMBOL(ethtool_convert_link_mode_to_legacy_u32);
/* return false if legacy contained non-0 deprecated fields /* return false if legacy contained non-0 deprecated fields
* transceiver/maxtxpkt/maxrxpkt. rest of ksettings always updated * transceiver/maxtxpkt/maxrxpkt. rest of ksettings always updated
...@@ -441,13 +444,13 @@ convert_legacy_settings_to_link_ksettings( ...@@ -441,13 +444,13 @@ convert_legacy_settings_to_link_ksettings(
legacy_settings->maxrxpkt) legacy_settings->maxrxpkt)
retval = false; retval = false;
convert_legacy_u32_to_link_mode( ethtool_convert_legacy_u32_to_link_mode(
link_ksettings->link_modes.supported, link_ksettings->link_modes.supported,
legacy_settings->supported); legacy_settings->supported);
convert_legacy_u32_to_link_mode( ethtool_convert_legacy_u32_to_link_mode(
link_ksettings->link_modes.advertising, link_ksettings->link_modes.advertising,
legacy_settings->advertising); legacy_settings->advertising);
convert_legacy_u32_to_link_mode( ethtool_convert_legacy_u32_to_link_mode(
link_ksettings->link_modes.lp_advertising, link_ksettings->link_modes.lp_advertising,
legacy_settings->lp_advertising); legacy_settings->lp_advertising);
link_ksettings->base.speed link_ksettings->base.speed
...@@ -486,13 +489,13 @@ convert_link_ksettings_to_legacy_settings( ...@@ -486,13 +489,13 @@ convert_link_ksettings_to_legacy_settings(
* __u32 maxrxpkt; * __u32 maxrxpkt;
*/ */
retval &= convert_link_mode_to_legacy_u32( retval &= ethtool_convert_link_mode_to_legacy_u32(
&legacy_settings->supported, &legacy_settings->supported,
link_ksettings->link_modes.supported); link_ksettings->link_modes.supported);
retval &= convert_link_mode_to_legacy_u32( retval &= ethtool_convert_link_mode_to_legacy_u32(
&legacy_settings->advertising, &legacy_settings->advertising,
link_ksettings->link_modes.advertising); link_ksettings->link_modes.advertising);
retval &= convert_link_mode_to_legacy_u32( retval &= ethtool_convert_link_mode_to_legacy_u32(
&legacy_settings->lp_advertising, &legacy_settings->lp_advertising,
link_ksettings->link_modes.lp_advertising); link_ksettings->link_modes.lp_advertising);
ethtool_cmd_speed_set(legacy_settings, link_ksettings->base.speed); ethtool_cmd_speed_set(legacy_settings, link_ksettings->base.speed);
......
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