mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-19 21:21:09 +00:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Couple conflicts resolved here: 1) In the MACB driver, a bug fix to properly initialize the RX tail pointer properly overlapped with some changes to support variable sized rings. 2) In XGBE we had a "CONFIG_PM" --> "CONFIG_PM_SLEEP" fix overlapping with a reorganization of the driver to support ACPI, OF, as well as PCI variants of the chip. 3) In 'net' we had several probe error path bug fixes to the stmmac driver, meanwhile a lot of this code was cleaned up and reorganized in 'net-next'. 4) The cls_flower classifier obtained a helper function in 'net-next' called __fl_delete() and this overlapped with Daniel Borkamann's bug fix to use RCU for object destruction in 'net'. It also overlapped with Jiri's change to guard the rhashtable_remove_fast() call with a check against tc_skip_sw(). 5) In mlx4, a revert bug fix in 'net' overlapped with some unrelated changes in 'net-next'. 6) In geneve, a stale header pointer after pskb_expand_head() bug fix in 'net' overlapped with a large reorganization of the same code in 'net-next'. Since the 'net-next' code no longer had the bug in question, there was nothing to do other than to simply take the 'net-next' hunks. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
2745529ac7
191 changed files with 1414 additions and 612 deletions
|
@ -233,6 +233,8 @@ int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev,
|
|||
genphy_read_status(phydev);
|
||||
if (ds->ops->adjust_link)
|
||||
ds->ops->adjust_link(ds, port, phydev);
|
||||
|
||||
put_device(&phydev->mdio.dev);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -504,15 +506,8 @@ dsa_switch_setup(struct dsa_switch_tree *dst, int index,
|
|||
|
||||
void dsa_cpu_dsa_destroy(struct device_node *port_dn)
|
||||
{
|
||||
struct phy_device *phydev;
|
||||
|
||||
if (of_phy_is_fixed_link(port_dn)) {
|
||||
phydev = of_phy_find_device(port_dn);
|
||||
if (phydev) {
|
||||
phy_device_free(phydev);
|
||||
fixed_phy_unregister(phydev);
|
||||
}
|
||||
}
|
||||
if (of_phy_is_fixed_link(port_dn))
|
||||
of_phy_deregister_fixed_link(port_dn);
|
||||
}
|
||||
|
||||
static void dsa_switch_destroy(struct dsa_switch *ds)
|
||||
|
|
|
@ -28,8 +28,10 @@ static struct dsa_switch_tree *dsa_get_dst(u32 tree)
|
|||
struct dsa_switch_tree *dst;
|
||||
|
||||
list_for_each_entry(dst, &dsa_switch_trees, list)
|
||||
if (dst->tree == tree)
|
||||
if (dst->tree == tree) {
|
||||
kref_get(&dst->refcount);
|
||||
return dst;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -1127,7 +1127,7 @@ static int dsa_slave_phy_setup(struct dsa_slave_priv *p,
|
|||
p->phy_interface = mode;
|
||||
|
||||
phy_dn = of_parse_phandle(port_dn, "phy-handle", 0);
|
||||
if (of_phy_is_fixed_link(port_dn)) {
|
||||
if (!phy_dn && of_phy_is_fixed_link(port_dn)) {
|
||||
/* In the case of a fixed PHY, the DT node associated
|
||||
* to the fixed PHY is the Port DT node
|
||||
*/
|
||||
|
@ -1137,7 +1137,7 @@ static int dsa_slave_phy_setup(struct dsa_slave_priv *p,
|
|||
return ret;
|
||||
}
|
||||
phy_is_fixed = true;
|
||||
phy_dn = port_dn;
|
||||
phy_dn = of_node_get(port_dn);
|
||||
}
|
||||
|
||||
if (ds->ops->get_phy_flags)
|
||||
|
@ -1156,6 +1156,7 @@ static int dsa_slave_phy_setup(struct dsa_slave_priv *p,
|
|||
ret = dsa_slave_phy_connect(p, slave_dev, phy_id);
|
||||
if (ret) {
|
||||
netdev_err(slave_dev, "failed to connect to phy%d: %d\n", phy_id, ret);
|
||||
of_node_put(phy_dn);
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
|
@ -1164,6 +1165,8 @@ static int dsa_slave_phy_setup(struct dsa_slave_priv *p,
|
|||
phy_flags,
|
||||
p->phy_interface);
|
||||
}
|
||||
|
||||
of_node_put(phy_dn);
|
||||
}
|
||||
|
||||
if (p->phy && phy_is_fixed)
|
||||
|
@ -1176,6 +1179,8 @@ static int dsa_slave_phy_setup(struct dsa_slave_priv *p,
|
|||
ret = dsa_slave_phy_connect(p, slave_dev, p->port);
|
||||
if (ret) {
|
||||
netdev_err(slave_dev, "failed to connect to port %d: %d\n", p->port, ret);
|
||||
if (phy_is_fixed)
|
||||
of_phy_deregister_fixed_link(port_dn);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
@ -1293,10 +1298,18 @@ int dsa_slave_create(struct dsa_switch *ds, struct device *parent,
|
|||
void dsa_slave_destroy(struct net_device *slave_dev)
|
||||
{
|
||||
struct dsa_slave_priv *p = netdev_priv(slave_dev);
|
||||
struct dsa_switch *ds = p->parent;
|
||||
struct device_node *port_dn;
|
||||
|
||||
port_dn = ds->ports[p->port].dn;
|
||||
|
||||
netif_carrier_off(slave_dev);
|
||||
if (p->phy)
|
||||
if (p->phy) {
|
||||
phy_disconnect(p->phy);
|
||||
|
||||
if (of_phy_is_fixed_link(port_dn))
|
||||
of_phy_deregister_fixed_link(port_dn);
|
||||
}
|
||||
unregister_netdev(slave_dev);
|
||||
free_netdev(slave_dev);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue