Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/chelsio/cxgb4vf/sge.c drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c sge.c was overlapping two changes, one to use the new __dev_alloc_page() in net-next, and one to use s->fl_pg_order in net. ixgbe_phy.c was a set of overlapping whitespace changes. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -791,7 +791,7 @@ static int match(struct sk_buff *skb, unsigned int type, struct rxts *rxts)
|
||||
|
||||
switch (type & PTP_CLASS_PMASK) {
|
||||
case PTP_CLASS_IPV4:
|
||||
offset += ETH_HLEN + IPV4_HLEN(data) + UDP_HLEN;
|
||||
offset += ETH_HLEN + IPV4_HLEN(data + offset) + UDP_HLEN;
|
||||
break;
|
||||
case PTP_CLASS_IPV6:
|
||||
offset += ETH_HLEN + IP6_HLEN + UDP_HLEN;
|
||||
@@ -934,7 +934,7 @@ static int is_sync(struct sk_buff *skb, int type)
|
||||
|
||||
switch (type & PTP_CLASS_PMASK) {
|
||||
case PTP_CLASS_IPV4:
|
||||
offset += ETH_HLEN + IPV4_HLEN(data) + UDP_HLEN;
|
||||
offset += ETH_HLEN + IPV4_HLEN(data + offset) + UDP_HLEN;
|
||||
break;
|
||||
case PTP_CLASS_IPV6:
|
||||
offset += ETH_HLEN + IP6_HLEN + UDP_HLEN;
|
||||
|
@@ -352,6 +352,7 @@ int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
struct mii_ioctl_data *mii_data = if_mii(ifr);
|
||||
u16 val = mii_data->val_in;
|
||||
bool change_autoneg = false;
|
||||
|
||||
switch (cmd) {
|
||||
case SIOCGMIIPHY:
|
||||
@@ -367,22 +368,29 @@ int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd)
|
||||
if (mii_data->phy_id == phydev->addr) {
|
||||
switch (mii_data->reg_num) {
|
||||
case MII_BMCR:
|
||||
if ((val & (BMCR_RESET | BMCR_ANENABLE)) == 0)
|
||||
if ((val & (BMCR_RESET | BMCR_ANENABLE)) == 0) {
|
||||
if (phydev->autoneg == AUTONEG_ENABLE)
|
||||
change_autoneg = true;
|
||||
phydev->autoneg = AUTONEG_DISABLE;
|
||||
else
|
||||
if (val & BMCR_FULLDPLX)
|
||||
phydev->duplex = DUPLEX_FULL;
|
||||
else
|
||||
phydev->duplex = DUPLEX_HALF;
|
||||
if (val & BMCR_SPEED1000)
|
||||
phydev->speed = SPEED_1000;
|
||||
else if (val & BMCR_SPEED100)
|
||||
phydev->speed = SPEED_100;
|
||||
else phydev->speed = SPEED_10;
|
||||
}
|
||||
else {
|
||||
if (phydev->autoneg == AUTONEG_DISABLE)
|
||||
change_autoneg = true;
|
||||
phydev->autoneg = AUTONEG_ENABLE;
|
||||
if (!phydev->autoneg && (val & BMCR_FULLDPLX))
|
||||
phydev->duplex = DUPLEX_FULL;
|
||||
else
|
||||
phydev->duplex = DUPLEX_HALF;
|
||||
if (!phydev->autoneg && (val & BMCR_SPEED1000))
|
||||
phydev->speed = SPEED_1000;
|
||||
else if (!phydev->autoneg &&
|
||||
(val & BMCR_SPEED100))
|
||||
phydev->speed = SPEED_100;
|
||||
}
|
||||
break;
|
||||
case MII_ADVERTISE:
|
||||
phydev->advertising = val;
|
||||
phydev->advertising = mii_adv_to_ethtool_adv_t(val);
|
||||
change_autoneg = true;
|
||||
break;
|
||||
default:
|
||||
/* do nothing */
|
||||
@@ -396,6 +404,10 @@ int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd)
|
||||
if (mii_data->reg_num == MII_BMCR &&
|
||||
val & BMCR_RESET)
|
||||
return phy_init_hw(phydev);
|
||||
|
||||
if (change_autoneg)
|
||||
return phy_start_aneg(phydev);
|
||||
|
||||
return 0;
|
||||
|
||||
case SIOCSHWTSTAMP:
|
||||
|
Reference in New Issue
Block a user