-LINUX_VERSION-5.10 = .139
-LINUX_KERNEL_HASH-5.10.139 = 1c002ac275a44934a280a158a136735bf6665b26a42d344023b4648a7898bef1
+LINUX_VERSION-5.10 = .141
+LINUX_KERNEL_HASH-5.10.141 = 247afd935f96832eee07e6bcb97b6b0ee41efb4246803c9055df57ad2c1a0ef3
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -4093,14 +4093,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -4116,14 +4116,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6809,15 +6809,10 @@ void __netif_napi_del(struct napi_struct
+@@ -6810,15 +6810,10 @@ void __netif_napi_del(struct napi_struct
}
EXPORT_SYMBOL(__netif_napi_del);
weight = n->weight;
/* This NAPI_STATE_SCHED test is for avoiding a race
-@@ -6837,7 +6832,7 @@ static int napi_poll(struct napi_struct
+@@ -6838,7 +6833,7 @@ static int napi_poll(struct napi_struct
n->poll, work, weight);
if (likely(work < weight))
/* Drivers must not modify the NAPI state if they
* consume the entire weight. In such cases this code
-@@ -6846,7 +6841,7 @@ static int napi_poll(struct napi_struct
+@@ -6847,7 +6842,7 @@ static int napi_poll(struct napi_struct
*/
if (unlikely(napi_disable_pending(n))) {
napi_complete(n);
}
if (n->gro_bitmask) {
-@@ -6864,12 +6859,29 @@ static int napi_poll(struct napi_struct
+@@ -6865,12 +6860,29 @@ static int napi_poll(struct napi_struct
if (unlikely(!list_empty(&n->poll_list))) {
pr_warn_once("%s: Budget exhausted after napi rescheduled\n",
n->dev ? n->dev->name : "backlog");
/**
* napi_synchronize - wait until NAPI is not running
-@@ -1842,6 +1832,8 @@ enum netdev_ml_priv_type {
+@@ -1856,6 +1846,8 @@ enum netdev_ml_priv_type {
*
* @wol_enabled: Wake-on-LAN is enabled
*
* @net_notifier_list: List of per-net netdev notifier block
* that follow this device when it is moved
* to another network namespace.
-@@ -2161,6 +2153,7 @@ struct net_device {
+@@ -2175,6 +2167,7 @@ struct net_device {
struct lock_class_key *qdisc_running_key;
bool proto_down;
unsigned wol_enabled:1;
static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
{
const struct net_device_ops *ops = dev->netdev_ops;
-@@ -4271,6 +4293,21 @@ int gro_normal_batch __read_mostly = 8;
+@@ -4272,6 +4294,21 @@ int gro_normal_batch __read_mostly = 8;
static inline void ____napi_schedule(struct softnet_data *sd,
struct napi_struct *napi)
{
list_add_tail(&napi->poll_list, &sd->poll_list);
__raise_softirq_irqoff(NET_RX_SOFTIRQ);
}
-@@ -6762,6 +6799,12 @@ void netif_napi_add(struct net_device *d
+@@ -6763,6 +6800,12 @@ void netif_napi_add(struct net_device *d
set_bit(NAPI_STATE_NPSVC, &napi->state);
list_add_rcu(&napi->dev_list, &dev->napi_list);
napi_hash_add(napi);
}
EXPORT_SYMBOL(netif_napi_add);
-@@ -6778,9 +6821,28 @@ void napi_disable(struct napi_struct *n)
+@@ -6779,9 +6822,28 @@ void napi_disable(struct napi_struct *n)
hrtimer_cancel(&n->timer);
clear_bit(NAPI_STATE_DISABLE, &n->state);
static void flush_gro_hash(struct napi_struct *napi)
{
int i;
-@@ -6806,6 +6868,11 @@ void __netif_napi_del(struct napi_struct
+@@ -6807,6 +6869,11 @@ void __netif_napi_del(struct napi_struct
flush_gro_hash(napi);
napi->gro_bitmask = 0;
}
EXPORT_SYMBOL(__netif_napi_del);
-@@ -6887,6 +6954,51 @@ static int napi_poll(struct napi_struct
+@@ -6888,6 +6955,51 @@ static int napi_poll(struct napi_struct
return work;
}
* @n: NAPI context
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4297,8 +4297,9 @@ static inline void ____napi_schedule(str
+@@ -4298,8 +4298,9 @@ static inline void ____napi_schedule(str
if (test_bit(NAPI_STATE_THREADED, &napi->state)) {
/* Paired with smp_mb__before_atomic() in
* wake_up_process() when it's not NULL.
*/
thread = READ_ONCE(napi->thread);
-@@ -6772,6 +6773,49 @@ static void init_gro_hash(struct napi_st
+@@ -6773,6 +6774,49 @@ static void init_gro_hash(struct napi_st
napi->gro_bitmask = 0;
}
enum gro_result {
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4304,6 +4304,8 @@ static inline void ____napi_schedule(str
+@@ -4305,6 +4305,8 @@ static inline void ____napi_schedule(str
*/
thread = READ_ONCE(napi->thread);
if (thread) {
wake_up_process(thread);
return;
}
-@@ -6564,7 +6566,8 @@ bool napi_complete_done(struct napi_stru
+@@ -6565,7 +6567,8 @@ bool napi_complete_done(struct napi_stru
WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));
/* If STATE_MISSED was set, leave STATE_SCHED set,
* because we will call napi->poll() one more time.
-@@ -7000,16 +7003,25 @@ static int napi_poll(struct napi_struct
+@@ -7001,16 +7004,25 @@ static int napi_poll(struct napi_struct
static int napi_thread_wait(struct napi_struct *napi)
{
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -7007,7 +7007,7 @@ static int napi_thread_wait(struct napi_
+@@ -7008,7 +7008,7 @@ static int napi_thread_wait(struct napi_
set_current_state(TASK_INTERRUPTIBLE);
/* Testing SCHED_THREADED bit here to make sure the current
* kthread owns this napi and could poll on this napi.
* Testing SCHED bit is not enough because SCHED bit might be
-@@ -7025,6 +7025,7 @@ static int napi_thread_wait(struct napi_
+@@ -7026,6 +7026,7 @@ static int napi_thread_wait(struct napi_
set_current_state(TASK_INTERRUPTIBLE);
}
__set_current_state(TASK_RUNNING);
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
-@@ -1469,13 +1469,16 @@ struct nft_trans_chain {
+@@ -1474,13 +1474,16 @@ struct nft_trans_chain {
struct nft_trans_table {
bool update;
nft_trans_table_update(trans) = true;
list_add_tail(&trans->list, &ctx->net->nft.commit_list);
return 0;
-@@ -7929,11 +7933,10 @@ static int nf_tables_commit(struct net *
+@@ -7919,11 +7923,10 @@ static int nf_tables_commit(struct net *
switch (trans->msg_type) {
case NFT_MSG_NEWTABLE:
if (nft_trans_table_update(trans)) {
} else {
nft_clear(net, trans->ctx.table);
}
-@@ -8147,11 +8150,9 @@ static int __nf_tables_abort(struct net
+@@ -8137,11 +8140,9 @@ static int __nf_tables_abort(struct net
switch (trans->msg_type) {
case NFT_MSG_NEWTABLE:
if (nft_trans_table_update(trans)) {
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -827,6 +827,27 @@ typedef u16 (*select_queue_fallback_t)(s
+@@ -841,6 +841,27 @@ typedef u16 (*select_queue_fallback_t)(s
struct sk_buff *skb,
struct net_device *sb_dev);
enum tc_setup_type {
TC_SETUP_QDISC_MQPRIO,
TC_SETUP_CLSU32,
-@@ -1273,6 +1294,8 @@ struct netdev_net_notifier {
+@@ -1287,6 +1308,8 @@ struct netdev_net_notifier {
* struct net_device *(*ndo_get_peer_dev)(struct net_device *dev);
* If a device is paired with a peer device, return the peer instance.
* The caller must be under RCU read context.
*/
struct net_device_ops {
int (*ndo_init)(struct net_device *dev);
-@@ -1481,6 +1504,8 @@ struct net_device_ops {
+@@ -1495,6 +1518,8 @@ struct net_device_ops {
int (*ndo_tunnel_ctl)(struct net_device *dev,
struct ip_tunnel_parm *p, int cmd);
struct net_device * (*ndo_get_peer_dev)(struct net_device *dev);
};
/**
-@@ -2828,6 +2853,8 @@ void dev_remove_offload(struct packet_of
+@@ -2842,6 +2867,8 @@ void dev_remove_offload(struct packet_of
int dev_get_iflink(const struct net_device *dev);
int dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb);
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -829,11 +829,18 @@ typedef u16 (*select_queue_fallback_t)(s
+@@ -843,11 +843,18 @@ typedef u16 (*select_queue_fallback_t)(s
enum net_device_path_type {
DEV_PATH_ETHERNET = 0,
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -830,6 +830,7 @@ typedef u16 (*select_queue_fallback_t)(s
+@@ -844,6 +844,7 @@ typedef u16 (*select_queue_fallback_t)(s
enum net_device_path_type {
DEV_PATH_ETHERNET = 0,
DEV_PATH_VLAN,
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -841,10 +841,20 @@ struct net_device_path {
+@@ -855,10 +855,20 @@ struct net_device_path {
u16 id;
__be16 proto;
} encap;
struct net_device_path_stack {
int num_paths;
-@@ -854,6 +864,12 @@ struct net_device_path_stack {
+@@ -868,6 +878,12 @@ struct net_device_path_stack {
struct net_device_path_ctx {
const struct net_device *dev;
const u8 *daddr;
static int pppoe_recvmsg(struct socket *sock, struct msghdr *m,
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -831,6 +831,7 @@ enum net_device_path_type {
+@@ -845,6 +845,7 @@ enum net_device_path_type {
DEV_PATH_ETHERNET = 0,
DEV_PATH_VLAN,
DEV_PATH_BRIDGE,
};
struct net_device_path {
-@@ -840,6 +841,7 @@ struct net_device_path {
+@@ -854,6 +855,7 @@ struct net_device_path {
struct {
u16 id;
__be16 proto;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -832,6 +832,7 @@ enum net_device_path_type {
+@@ -846,6 +846,7 @@ enum net_device_path_type {
DEV_PATH_VLAN,
DEV_PATH_BRIDGE,
DEV_PATH_PPPOE,
};
struct net_device_path {
-@@ -852,6 +853,10 @@ struct net_device_path {
+@@ -866,6 +867,10 @@ struct net_device_path {
u16 vlan_id;
__be16 vlan_proto;
} bridge;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -849,6 +849,7 @@ struct net_device_path {
+@@ -863,6 +863,7 @@ struct net_device_path {
DEV_PATH_BR_VLAN_KEEP,
DEV_PATH_BR_VLAN_TAG,
DEV_PATH_BR_VLAN_UNTAG,
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
-@@ -228,7 +228,6 @@ config NF_CONNTRACK_FTP
+@@ -227,7 +227,6 @@ config NF_CONNTRACK_FTP
config NF_CONNTRACK_H323
tristate "H.323 protocol support"
depends on NETFILTER_ADVANCED
help
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
-@@ -1072,7 +1071,6 @@ config NETFILTER_XT_TARGET_SECMARK
+@@ -1071,7 +1070,6 @@ config NETFILTER_XT_TARGET_SECMARK
config NETFILTER_XT_TARGET_TCPMSS
tristate '"TCPMSS" target support'
depends on !NF_CONNTRACK || NF_CONNTRACK
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
-@@ -683,8 +683,6 @@ config NFT_FIB_NETDEV
+@@ -682,8 +682,6 @@ config NFT_FIB_NETDEV
endif # NF_TABLES_NETDEV
config NF_FLOW_TABLE_INET
tristate "Netfilter flow table mixed IPv4/IPv6 module"
depends on NF_FLOW_TABLE
-@@ -693,11 +691,12 @@ config NF_FLOW_TABLE_INET
+@@ -692,11 +690,12 @@ config NF_FLOW_TABLE_INET
To compile it as a module, choose M here.
help
This option adds the flow table core infrastructure.
-@@ -977,6 +976,15 @@ config NETFILTER_XT_TARGET_NOTRACK
+@@ -976,6 +975,15 @@ config NETFILTER_XT_TARGET_NOTRACK
depends on NETFILTER_ADVANCED
select NETFILTER_XT_TARGET_CT
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -1625,6 +1625,7 @@ enum netdev_priv_flags {
+@@ -1639,6 +1639,7 @@ enum netdev_priv_flags {
IFF_FAILOVER_SLAVE = 1<<28,
IFF_L3MDEV_RX_HANDLER = 1<<29,
IFF_LIVE_RENAME_OK = 1<<30,
};
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
-@@ -1657,6 +1658,7 @@ enum netdev_priv_flags {
+@@ -1671,6 +1672,7 @@ enum netdev_priv_flags {
#define IFF_FAILOVER_SLAVE IFF_FAILOVER_SLAVE
#define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
#define IFF_LIVE_RENAME_OK IFF_LIVE_RENAME_OK
/* Specifies the type of the struct net_device::ml_priv pointer */
enum netdev_ml_priv_type {
-@@ -1997,6 +1999,11 @@ struct net_device {
+@@ -2011,6 +2013,11 @@ struct net_device {
const struct tlsdev_ops *tlsdev_ops;
#endif
const struct header_ops *header_ops;
unsigned int flags;
-@@ -2087,6 +2094,10 @@ struct net_device {
+@@ -2101,6 +2108,10 @@ struct net_device {
struct mpls_dev __rcu *mpls_ptr;
#endif
*/
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2710,6 +2710,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2718,6 +2718,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
/**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
-@@ -2841,16 +2845,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2849,16 +2853,6 @@ static inline struct sk_buff *dev_alloc_
}
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -3699,6 +3699,8 @@ static __net_initdata struct pernet_oper
+@@ -3701,6 +3701,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -2676,7 +2676,7 @@ static inline int pskb_network_may_pull(
+@@ -2684,7 +2684,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -2036,6 +2036,8 @@ struct net_device {
+@@ -2050,6 +2050,8 @@ struct net_device {
struct netdev_hw_addr_list mc;
struct netdev_hw_addr_list dev_addrs;
__u16 tc_index; /* traffic control index */
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6066,6 +6066,9 @@ static enum gro_result dev_gro_receive(s
+@@ -6067,6 +6067,9 @@ static enum gro_result dev_gro_receive(s
int same_flow;
int grow;
if (netif_elide_gro(skb->dev))
goto normal;
-@@ -8043,6 +8046,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -8044,6 +8047,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info,
-@@ -8094,6 +8139,7 @@ static int __netdev_upper_dev_link(struc
+@@ -8095,6 +8140,7 @@ static int __netdev_upper_dev_link(struc
if (ret)
return ret;
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
ret = notifier_to_errno(ret);
-@@ -8190,6 +8236,7 @@ static void __netdev_upper_dev_unlink(st
+@@ -8191,6 +8237,7 @@ static void __netdev_upper_dev_unlink(st
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
-@@ -8976,6 +9023,7 @@ int dev_set_mac_address(struct net_devic
+@@ -8977,6 +9024,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;
static inline void
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -833,6 +833,7 @@ enum net_device_path_type {
+@@ -847,6 +847,7 @@ enum net_device_path_type {
DEV_PATH_BRIDGE,
DEV_PATH_PPPOE,
DEV_PATH_DSA,
};
struct net_device_path {
-@@ -858,6 +859,12 @@ struct net_device_path {
+@@ -872,6 +873,12 @@ struct net_device_path {
int port;
u16 proto;
} dsa;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -878,7 +878,7 @@ struct net_device_path_stack {
+@@ -892,7 +892,7 @@ struct net_device_path_stack {
struct net_device_path_ctx {
const struct net_device *dev;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -765,6 +765,16 @@ struct xps_map {
+@@ -779,6 +779,16 @@ struct xps_map {
#define XPS_MIN_MAP_ALLOC ((L1_CACHE_ALIGN(offsetof(struct xps_map, queues[1])) \
- sizeof(struct xps_map)) / sizeof(u16))
/*
* This structure holds all XPS maps for device. Maps are indexed by CPU.
*/
-@@ -1452,6 +1462,9 @@ struct net_device_ops {
+@@ -1466,6 +1476,9 @@ struct net_device_ops {
const struct sk_buff *skb,
u16 rxq_index,
u32 flow_id);