Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Some ISDN files that got removed in net-next had some changes done in mainline, take the removals. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1154,6 +1154,7 @@ EXPORT_SYMBOL_GPL(phylink_ethtool_ksettings_get);
|
||||
int phylink_ethtool_ksettings_set(struct phylink *pl,
|
||||
const struct ethtool_link_ksettings *kset)
|
||||
{
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(support);
|
||||
struct ethtool_link_ksettings our_kset;
|
||||
struct phylink_link_state config;
|
||||
int ret;
|
||||
@@ -1164,11 +1165,12 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,
|
||||
kset->base.autoneg != AUTONEG_ENABLE)
|
||||
return -EINVAL;
|
||||
|
||||
linkmode_copy(support, pl->supported);
|
||||
config = pl->link_config;
|
||||
|
||||
/* Mask out unsupported advertisements */
|
||||
linkmode_and(config.advertising, kset->link_modes.advertising,
|
||||
pl->supported);
|
||||
support);
|
||||
|
||||
/* FIXME: should we reject autoneg if phy/mac does not support it? */
|
||||
if (kset->base.autoneg == AUTONEG_DISABLE) {
|
||||
@@ -1178,7 +1180,7 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,
|
||||
* duplex.
|
||||
*/
|
||||
s = phy_lookup_setting(kset->base.speed, kset->base.duplex,
|
||||
pl->supported, false);
|
||||
support, false);
|
||||
if (!s)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -1207,7 +1209,7 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,
|
||||
__set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, config.advertising);
|
||||
}
|
||||
|
||||
if (phylink_validate(pl, pl->supported, &config))
|
||||
if (phylink_validate(pl, support, &config))
|
||||
return -EINVAL;
|
||||
|
||||
/* If autonegotiation is enabled, we must have an advertisement */
|
||||
@@ -1668,6 +1670,7 @@ static int phylink_sfp_module_insert(void *upstream,
|
||||
{
|
||||
struct phylink *pl = upstream;
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(support) = { 0, };
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(support1);
|
||||
struct phylink_link_state config;
|
||||
phy_interface_t iface;
|
||||
int ret = 0;
|
||||
@@ -1695,6 +1698,8 @@ static int phylink_sfp_module_insert(void *upstream,
|
||||
return ret;
|
||||
}
|
||||
|
||||
linkmode_copy(support1, support);
|
||||
|
||||
iface = sfp_select_interface(pl->sfp_bus, id, config.advertising);
|
||||
if (iface == PHY_INTERFACE_MODE_NA) {
|
||||
phylink_err(pl,
|
||||
@@ -1704,7 +1709,7 @@ static int phylink_sfp_module_insert(void *upstream,
|
||||
}
|
||||
|
||||
config.interface = iface;
|
||||
ret = phylink_validate(pl, support, &config);
|
||||
ret = phylink_validate(pl, support1, &config);
|
||||
if (ret) {
|
||||
phylink_err(pl, "validation of %s/%s with support %*pb failed: %d\n",
|
||||
phylink_an_mode_str(MLO_AN_INBAND),
|
||||
|
@@ -282,6 +282,7 @@ static int sfp_i2c_read(struct sfp *sfp, bool a2, u8 dev_addr, void *buf,
|
||||
{
|
||||
struct i2c_msg msgs[2];
|
||||
u8 bus_addr = a2 ? 0x51 : 0x50;
|
||||
size_t this_len;
|
||||
int ret;
|
||||
|
||||
msgs[0].addr = bus_addr;
|
||||
@@ -293,11 +294,26 @@ static int sfp_i2c_read(struct sfp *sfp, bool a2, u8 dev_addr, void *buf,
|
||||
msgs[1].len = len;
|
||||
msgs[1].buf = buf;
|
||||
|
||||
ret = i2c_transfer(sfp->i2c, msgs, ARRAY_SIZE(msgs));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
while (len) {
|
||||
this_len = len;
|
||||
if (this_len > 16)
|
||||
this_len = 16;
|
||||
|
||||
return ret == ARRAY_SIZE(msgs) ? len : 0;
|
||||
msgs[1].len = this_len;
|
||||
|
||||
ret = i2c_transfer(sfp->i2c, msgs, ARRAY_SIZE(msgs));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (ret != ARRAY_SIZE(msgs))
|
||||
break;
|
||||
|
||||
msgs[1].buf += this_len;
|
||||
dev_addr += this_len;
|
||||
len -= this_len;
|
||||
}
|
||||
|
||||
return msgs[1].buf - (u8 *)buf;
|
||||
}
|
||||
|
||||
static int sfp_i2c_write(struct sfp *sfp, bool a2, u8 dev_addr, void *buf,
|
||||
|
Reference in New Issue
Block a user