Patches automatically rebased.
Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
-LINUX_VERSION-5.15 = .52
-LINUX_KERNEL_HASH-5.15.52 = f4680a5da9f25a908ead5956935e7c05124d5f37f6e75a1e07d58641d7ab6d05
+LINUX_VERSION-5.15 = .53
+LINUX_KERNEL_HASH-5.15.53 = f3aa717243051f3fcca90ebfe26fe5c3a596c2f6047846e8d1724ea90df77b07
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1655,6 +1655,10 @@ enum netdev_priv_flags {
- IFF_TX_SKB_NO_LINEAR = 1<<31,
+ IFF_TX_SKB_NO_LINEAR = BIT_ULL(31),
};
+enum netdev_extra_priv_flags {
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -5040,7 +5070,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -5047,7 +5077,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -6293,6 +6324,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6300,6 +6331,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -6304,6 +6337,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6311,6 +6344,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -6495,6 +6529,8 @@ static int __net_init ip6_route_net_init
+@@ -6502,6 +6536,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false;
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL);
-@@ -6505,11 +6541,21 @@ static int __net_init ip6_route_net_init
+@@ -6512,11 +6548,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
-@@ -6536,6 +6582,8 @@ out:
+@@ -6543,6 +6589,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6555,6 +6603,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6562,6 +6610,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6632,6 +6681,9 @@ void __init ip6_route_init_special_entri
+@@ -6639,6 +6688,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1715,6 +1715,9 @@ void phy_detach(struct phy_device *phyde
+@@ -1738,6 +1738,9 @@ void phy_detach(struct phy_device *phyde
struct module *ndev_owner = NULL;
struct mii_bus *bus;
sysfs_remove_link(&dev->dev.kobj, "phydev");
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
-@@ -783,6 +783,12 @@ struct phy_driver {
+@@ -789,6 +789,12 @@ struct phy_driver {
/** @handle_interrupt: Override default interrupt handling */
irqreturn_t (*handle_interrupt)(struct phy_device *phydev);
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
-@@ -58,13 +58,13 @@ static const char *phy_state_to_str(enum
+@@ -59,13 +59,13 @@ static const char *phy_state_to_str(enum
static void phy_link_up(struct phy_device *phydev)
{
phy_led_trigger_change_speed(phydev);
}
-@@ -550,7 +550,7 @@ int phy_start_cable_test(struct phy_devi
+@@ -551,7 +551,7 @@ int phy_start_cable_test(struct phy_devi
goto out;
/* Mark the carrier down until the test is complete */
netif_testing_on(dev);
err = phydev->drv->cable_test_start(phydev);
-@@ -621,7 +621,7 @@ int phy_start_cable_test_tdr(struct phy_
+@@ -622,7 +622,7 @@ int phy_start_cable_test_tdr(struct phy_
goto out;
/* Mark the carrier down until the test is complete */
netif_testing_on(dev);
err = phydev->drv->cable_test_tdr_start(phydev, config);
-@@ -693,7 +693,7 @@ static int phy_check_link_status(struct
+@@ -694,7 +694,7 @@ static int phy_check_link_status(struct
phy_link_up(phydev);
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
phydev->state = PHY_NOLINK;
}
return 0;
-@@ -1154,7 +1154,7 @@ void phy_state_machine(struct work_struc
+@@ -1177,7 +1177,7 @@ void phy_state_machine(struct work_struc
case PHY_HALTED:
if (phydev->link) {
phydev->link = 0;
break;
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1000,14 +1000,16 @@ struct phy_device *phy_find_first(struct
+@@ -1023,14 +1023,16 @@ struct phy_device *phy_find_first(struct
}
EXPORT_SYMBOL(phy_find_first);
bool tx_pause, rx_pause;
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
-@@ -663,7 +663,7 @@ struct phy_device {
+@@ -669,7 +669,7 @@ struct phy_device {
u8 mdix;
u8 mdix_ctrl;
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
-@@ -693,7 +693,10 @@ static int phy_check_link_status(struct
+@@ -694,7 +694,10 @@ static int phy_check_link_status(struct
phy_link_up(phydev);
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
phydev->state = PHY_NOLINK;
}
return 0;
-@@ -1154,7 +1157,10 @@ void phy_state_machine(struct work_struc
+@@ -1177,7 +1180,10 @@ void phy_state_machine(struct work_struc
case PHY_HALTED:
if (phydev->link) {
phydev->link = 0;
break;
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
-@@ -582,6 +582,7 @@ struct phy_device {
+@@ -586,6 +586,7 @@ struct phy_device {
unsigned downshifted_rate:1;
unsigned is_on_sfp_module:1;
unsigned mac_managed_pm:1;