kernel: bump 4.14 to 4.14.34
Refresh patches. Update patches that no longer apply: - backport/313-netfilter-remove-defensive-check-on-malformed-packet.patch - pending/642-net-8021q-support-hardware-flow-table-offload.patch Compile-tested: x86/64. Runtime-tested: x86/64. Signed-off-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
This commit is contained in:
parent
03774d28e1
commit
ec1d7b9461
21 changed files with 86 additions and 84 deletions
|
@ -5,12 +5,12 @@ LINUX_RELEASE?=1
|
||||||
LINUX_VERSION-3.18 = .71
|
LINUX_VERSION-3.18 = .71
|
||||||
LINUX_VERSION-4.4 = .121
|
LINUX_VERSION-4.4 = .121
|
||||||
LINUX_VERSION-4.9 = .91
|
LINUX_VERSION-4.9 = .91
|
||||||
LINUX_VERSION-4.14 = .32
|
LINUX_VERSION-4.14 = .34
|
||||||
|
|
||||||
LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
|
LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
|
||||||
LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
|
LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
|
||||||
LINUX_KERNEL_HASH-4.9.91 = 60caa752ec9fa1c426f6a2f37db3f268d0961b67a723b6443949112167b39832
|
LINUX_KERNEL_HASH-4.9.91 = 60caa752ec9fa1c426f6a2f37db3f268d0961b67a723b6443949112167b39832
|
||||||
LINUX_KERNEL_HASH-4.14.32 = cb0979bec663089a43b10cfbeae0cf9673544b0ff5968c33ede614ec0f43b680
|
LINUX_KERNEL_HASH-4.14.34 = 782b6c4c85275c382c820e1934d3e6003ef468f43cfc5e7c22bc07c331a12bb9
|
||||||
|
|
||||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||||
|
|
|
@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||||
@@ -1205,6 +1205,18 @@ static const struct flash_info *spi_nor_
|
@@ -1209,6 +1209,18 @@ static const struct flash_info *spi_nor_
|
||||||
}
|
}
|
||||||
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
|
dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n",
|
||||||
id[0], id[1], id[2]);
|
id[0], id[1], id[2]);
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
cache_op(Hit_Invalidate_D, addr);
|
cache_op(Hit_Invalidate_D, addr);
|
||||||
__dflush_epilogue
|
__dflush_epilogue
|
||||||
}
|
}
|
||||||
@@ -205,6 +240,7 @@ static inline void protected_flush_icach
|
@@ -205,6 +240,7 @@ static inline int protected_flush_icache
|
||||||
#ifdef CONFIG_EVA
|
#ifdef CONFIG_EVA
|
||||||
return protected_cachee_op(Hit_Invalidate_I, addr);
|
return protected_cachee_op(Hit_Invalidate_I, addr);
|
||||||
#else
|
#else
|
||||||
|
@ -71,7 +71,7 @@
|
||||||
return protected_cache_op(Hit_Invalidate_I, addr);
|
return protected_cache_op(Hit_Invalidate_I, addr);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -218,6 +254,7 @@ static inline void protected_flush_icach
|
@@ -218,6 +254,7 @@ static inline int protected_flush_icache
|
||||||
*/
|
*/
|
||||||
static inline int protected_writeback_dcache_line(unsigned long addr)
|
static inline int protected_writeback_dcache_line(unsigned long addr)
|
||||||
{
|
{
|
||||||
|
@ -457,7 +457,7 @@
|
||||||
/*
|
/*
|
||||||
--- a/arch/mips/mm/tlbex.c
|
--- a/arch/mips/mm/tlbex.c
|
||||||
+++ b/arch/mips/mm/tlbex.c
|
+++ b/arch/mips/mm/tlbex.c
|
||||||
@@ -971,6 +971,9 @@ build_get_pgde32(u32 **p, unsigned int t
|
@@ -971,6 +971,9 @@ void build_get_pgde32(u32 **p, unsigned
|
||||||
uasm_i_srl(p, ptr, ptr, SMP_CPUID_PTRSHIFT);
|
uasm_i_srl(p, ptr, ptr, SMP_CPUID_PTRSHIFT);
|
||||||
uasm_i_addu(p, ptr, tmp, ptr);
|
uasm_i_addu(p, ptr, tmp, ptr);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some really old flashes (like AT45DB*) had smaller erasesize-s, but
|
* Some really old flashes (like AT45DB*) had smaller erasesize-s, but
|
||||||
@@ -269,12 +270,23 @@ static int bcm47xxpart_parse(struct mtd_
|
@@ -283,12 +284,23 @@ static int bcm47xxpart_parse(struct mtd_
|
||||||
if (buf[0] == NVRAM_HEADER) {
|
if (buf[0] == NVRAM_HEADER) {
|
||||||
bcm47xxpart_add_part(&parts[curr_part++], "nvram",
|
bcm47xxpart_add_part(&parts[curr_part++], "nvram",
|
||||||
master->size - blocksize, 0);
|
master->size - blocksize, 0);
|
||||||
|
|
|
@ -87,9 +87,9 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
- ip_hdrlen(skb) < sizeof(struct iphdr))
|
- ip_hdrlen(skb) < sizeof(struct iphdr))
|
||||||
- return NF_ACCEPT;
|
- return NF_ACCEPT;
|
||||||
-
|
-
|
||||||
if (ip_is_fragment(ip_hdr(skb))) /* IP_NODEFRAG setsockopt set */
|
if (ip_is_fragment(ip_hdr(skb))) { /* IP_NODEFRAG setsockopt set */
|
||||||
return NF_ACCEPT;
|
enum ip_conntrack_info ctinfo;
|
||||||
|
struct nf_conn *tmpl;
|
||||||
--- a/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c
|
--- a/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c
|
||||||
+++ b/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c
|
+++ b/net/ipv4/netfilter/nf_nat_l3proto_ipv4.c
|
||||||
@@ -355,11 +355,6 @@ nf_nat_ipv4_out(void *priv, struct sk_bu
|
@@ -355,11 +355,6 @@ nf_nat_ipv4_out(void *priv, struct sk_bu
|
||||||
|
|
|
@ -26,7 +26,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6,
|
struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6,
|
||||||
--- a/net/ipv6/ip6_output.c
|
--- a/net/ipv6/ip6_output.c
|
||||||
+++ b/net/ipv6/ip6_output.c
|
+++ b/net/ipv6/ip6_output.c
|
||||||
@@ -370,7 +370,7 @@ static inline int ip6_forward_finish(str
|
@@ -383,7 +383,7 @@ static inline int ip6_forward_finish(str
|
||||||
return dst_output(net, sk, skb);
|
return dst_output(net, sk, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
{
|
{
|
||||||
unsigned int mtu;
|
unsigned int mtu;
|
||||||
struct inet6_dev *idev;
|
struct inet6_dev *idev;
|
||||||
@@ -390,6 +390,7 @@ static unsigned int ip6_dst_mtu_forward(
|
@@ -403,6 +403,7 @@ static unsigned int ip6_dst_mtu_forward(
|
||||||
|
|
||||||
return mtu;
|
return mtu;
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
static void nfnl_queue_net_exit_batch(struct list_head *net_exit_list)
|
static void nfnl_queue_net_exit_batch(struct list_head *net_exit_list)
|
||||||
--- a/net/netfilter/x_tables.c
|
--- a/net/netfilter/x_tables.c
|
||||||
+++ b/net/netfilter/x_tables.c
|
+++ b/net/netfilter/x_tables.c
|
||||||
@@ -1719,8 +1719,17 @@ static int __net_init xt_net_init(struct
|
@@ -1754,8 +1754,17 @@ static int __net_init xt_net_init(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6,
|
struct dst_entry *ip6_dst_lookup_flow(const struct sock *sk, struct flowi6 *fl6,
|
||||||
--- a/net/ipv6/ip6_output.c
|
--- a/net/ipv6/ip6_output.c
|
||||||
+++ b/net/ipv6/ip6_output.c
|
+++ b/net/ipv6/ip6_output.c
|
||||||
@@ -370,28 +370,6 @@ static inline int ip6_forward_finish(str
|
@@ -383,28 +383,6 @@ static inline int ip6_forward_finish(str
|
||||||
return dst_output(net, sk, skb);
|
return dst_output(net, sk, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
depends on NETFILTER_ADVANCED
|
depends on NETFILTER_ADVANCED
|
||||||
help
|
help
|
||||||
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
|
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
|
||||||
@@ -1037,7 +1036,6 @@ config NETFILTER_XT_TARGET_SECMARK
|
@@ -1046,7 +1045,6 @@ config NETFILTER_XT_TARGET_SECMARK
|
||||||
|
|
||||||
config NETFILTER_XT_TARGET_TCPMSS
|
config NETFILTER_XT_TARGET_TCPMSS
|
||||||
tristate '"TCPMSS" target support'
|
tristate '"TCPMSS" target support'
|
||||||
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -1386,6 +1386,7 @@ enum netdev_priv_flags {
|
@@ -1410,6 +1410,7 @@ enum netdev_priv_flags {
|
||||||
IFF_RXFH_CONFIGURED = 1<<25,
|
IFF_RXFH_CONFIGURED = 1<<25,
|
||||||
IFF_PHONY_HEADROOM = 1<<26,
|
IFF_PHONY_HEADROOM = 1<<26,
|
||||||
IFF_MACSEC = 1<<27,
|
IFF_MACSEC = 1<<27,
|
||||||
|
@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
||||||
@@ -1415,6 +1416,7 @@ enum netdev_priv_flags {
|
@@ -1439,6 +1440,7 @@ enum netdev_priv_flags {
|
||||||
#define IFF_TEAM IFF_TEAM
|
#define IFF_TEAM IFF_TEAM
|
||||||
#define IFF_RXFH_CONFIGURED IFF_RXFH_CONFIGURED
|
#define IFF_RXFH_CONFIGURED IFF_RXFH_CONFIGURED
|
||||||
#define IFF_MACSEC IFF_MACSEC
|
#define IFF_MACSEC IFF_MACSEC
|
||||||
|
@ -31,7 +31,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct net_device - The DEVICE structure.
|
* struct net_device - The DEVICE structure.
|
||||||
@@ -1701,6 +1703,11 @@ struct net_device {
|
@@ -1725,6 +1727,11 @@ struct net_device {
|
||||||
const struct xfrmdev_ops *xfrmdev_ops;
|
const struct xfrmdev_ops *xfrmdev_ops;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
const struct header_ops *header_ops;
|
const struct header_ops *header_ops;
|
||||||
|
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
@@ -1770,6 +1777,10 @@ struct net_device {
|
@@ -1794,6 +1801,10 @@ struct net_device {
|
||||||
struct mpls_dev __rcu *mpls_ptr;
|
struct mpls_dev __rcu *mpls_ptr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -103,75 +103,76 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
- indev = dev_get_by_index(net, ifindex);
|
- indev = dev_get_by_index(net, ifindex);
|
||||||
- if (WARN_ON(!indev))
|
- if (WARN_ON(!indev))
|
||||||
- return 0;
|
- return 0;
|
||||||
+ if (dev->type != ARPHRD_ETHER)
|
-
|
||||||
+ return;
|
|
||||||
|
|
||||||
- mutex_lock(&nf_flow_offload_hw_mutex);
|
- mutex_lock(&nf_flow_offload_hw_mutex);
|
||||||
- ret = indev->netdev_ops->ndo_flow_offload(type, flow);
|
- ret = indev->netdev_ops->ndo_flow_offload(type, flow);
|
||||||
- mutex_unlock(&nf_flow_offload_hw_mutex);
|
- mutex_unlock(&nf_flow_offload_hw_mutex);
|
||||||
|
+ if (dev->type != ARPHRD_ETHER)
|
||||||
|
+ return;
|
||||||
|
|
||||||
|
- dev_put(indev);
|
||||||
+ memcpy(path->eth_src, path->dev->dev_addr, ETH_ALEN);
|
+ memcpy(path->eth_src, path->dev->dev_addr, ETH_ALEN);
|
||||||
+ n = dst_neigh_lookup(tuple->dst_cache, &tuple->src_v4);
|
+ n = dst_neigh_lookup(tuple->dst_cache, &tuple->src_v4);
|
||||||
+ if (!n)
|
+ if (!n)
|
||||||
+ return;
|
+ return;
|
||||||
|
|
||||||
- dev_put(indev);
|
- return ret;
|
||||||
+ memcpy(path->eth_dest, n->ha, ETH_ALEN);
|
+ memcpy(path->eth_dest, n->ha, ETH_ALEN);
|
||||||
+ path->flags |= FLOW_OFFLOAD_PATH_ETHERNET;
|
+ path->flags |= FLOW_OFFLOAD_PATH_ETHERNET;
|
||||||
+ neigh_release(n);
|
+ neigh_release(n);
|
||||||
+}
|
}
|
||||||
|
|
||||||
- return ret;
|
-static void flow_offload_hw_work_add(struct flow_offload_hw *offload)
|
||||||
+static int flow_offload_check_path(struct net *net,
|
+static int flow_offload_check_path(struct net *net,
|
||||||
+ struct flow_offload_tuple *tuple,
|
+ struct flow_offload_tuple *tuple,
|
||||||
+ struct flow_offload_hw_path *path)
|
+ struct flow_offload_hw_path *path)
|
||||||
+{
|
{
|
||||||
|
- struct net *net;
|
||||||
|
- int ret;
|
||||||
+ struct net_device *dev;
|
+ struct net_device *dev;
|
||||||
+
|
|
||||||
|
- if (nf_ct_is_dying(offload->ct))
|
||||||
|
- return;
|
||||||
+ dev = dev_get_by_index_rcu(net, tuple->iifidx);
|
+ dev = dev_get_by_index_rcu(net, tuple->iifidx);
|
||||||
+ if (!dev)
|
+ if (!dev)
|
||||||
+ return -ENOENT;
|
+ return -ENOENT;
|
||||||
+
|
+
|
||||||
+ path->dev = dev;
|
+ path->dev = dev;
|
||||||
+ flow_offload_check_ethernet(tuple, path);
|
+ flow_offload_check_ethernet(tuple, path);
|
||||||
+
|
|
||||||
|
- net = read_pnet(&offload->flow_hw_net);
|
||||||
|
- ret = do_flow_offload_hw(net, offload->flow, FLOW_OFFLOAD_ADD);
|
||||||
|
- if (ret >= 0)
|
||||||
|
- offload->flow->flags |= FLOW_OFFLOAD_HW;
|
||||||
+ if (dev->netdev_ops->ndo_flow_offload_check)
|
+ if (dev->netdev_ops->ndo_flow_offload_check)
|
||||||
+ return dev->netdev_ops->ndo_flow_offload_check(path);
|
+ return dev->netdev_ops->ndo_flow_offload_check(path);
|
||||||
+
|
+
|
||||||
+ return 0;
|
+ return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
-static void flow_offload_hw_work_add(struct flow_offload_hw *offload)
|
-static void flow_offload_hw_work_del(struct flow_offload_hw *offload)
|
||||||
+static int do_flow_offload_hw(struct flow_offload_hw *offload)
|
+static int do_flow_offload_hw(struct flow_offload_hw *offload)
|
||||||
{
|
{
|
||||||
- struct net *net;
|
- struct net *net = read_pnet(&offload->flow_hw_net);
|
||||||
+ struct net_device *src_dev = offload->src.dev;
|
+ struct net_device *src_dev = offload->src.dev;
|
||||||
+ struct net_device *dest_dev = offload->dest.dev;
|
+ struct net_device *dest_dev = offload->dest.dev;
|
||||||
int ret;
|
+ int ret;
|
||||||
|
+
|
||||||
- if (nf_ct_is_dying(offload->ct))
|
|
||||||
- return;
|
|
||||||
+ ret = src_dev->netdev_ops->ndo_flow_offload(offload->type,
|
+ ret = src_dev->netdev_ops->ndo_flow_offload(offload->type,
|
||||||
+ offload->flow,
|
+ offload->flow,
|
||||||
+ &offload->src,
|
+ &offload->src,
|
||||||
+ &offload->dest);
|
+ &offload->dest);
|
||||||
|
+
|
||||||
- net = read_pnet(&offload->flow_hw_net);
|
|
||||||
- ret = do_flow_offload_hw(net, offload->flow, FLOW_OFFLOAD_ADD);
|
|
||||||
- if (ret >= 0)
|
|
||||||
- offload->flow->flags |= FLOW_OFFLOAD_HW;
|
|
||||||
+ /* restore devices in case the driver mangled them */
|
+ /* restore devices in case the driver mangled them */
|
||||||
+ offload->src.dev = src_dev;
|
+ offload->src.dev = src_dev;
|
||||||
+ offload->dest.dev = dest_dev;
|
+ offload->dest.dev = dest_dev;
|
||||||
+
|
+
|
||||||
+ return ret;
|
+ return ret;
|
||||||
}
|
+}
|
||||||
|
|
||||||
-static void flow_offload_hw_work_del(struct flow_offload_hw *offload)
|
|
||||||
+static void flow_offload_hw_free(struct flow_offload_hw *offload)
|
|
||||||
{
|
|
||||||
- struct net *net = read_pnet(&offload->flow_hw_net);
|
|
||||||
-
|
|
||||||
- do_flow_offload_hw(net, offload->flow, FLOW_OFFLOAD_DEL);
|
- do_flow_offload_hw(net, offload->flow, FLOW_OFFLOAD_DEL);
|
||||||
|
+static void flow_offload_hw_free(struct flow_offload_hw *offload)
|
||||||
|
+{
|
||||||
+ dev_put(offload->src.dev);
|
+ dev_put(offload->src.dev);
|
||||||
+ dev_put(offload->dest.dev);
|
+ dev_put(offload->dest.dev);
|
||||||
+ if (offload->ct)
|
+ if (offload->ct)
|
||||||
|
|
|
@ -9,18 +9,19 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/net/8021q/vlan_dev.c
|
--- a/net/8021q/vlan_dev.c
|
||||||
+++ b/net/8021q/vlan_dev.c
|
+++ b/net/8021q/vlan_dev.c
|
||||||
@@ -29,8 +29,10 @@
|
@@ -29,9 +29,11 @@
|
||||||
#include <linux/net_tstamp.h>
|
#include <linux/net_tstamp.h>
|
||||||
#include <linux/etherdevice.h>
|
#include <linux/etherdevice.h>
|
||||||
#include <linux/ethtool.h>
|
#include <linux/ethtool.h>
|
||||||
+#include <linux/netfilter.h>
|
+#include <linux/netfilter.h>
|
||||||
|
#include <linux/phy.h>
|
||||||
#include <net/arp.h>
|
#include <net/arp.h>
|
||||||
#include <net/switchdev.h>
|
#include <net/switchdev.h>
|
||||||
+#include <net/netfilter/nf_flow_table.h>
|
+#include <net/netfilter/nf_flow_table.h>
|
||||||
|
|
||||||
#include "vlan.h"
|
#include "vlan.h"
|
||||||
#include "vlanproc.h"
|
#include "vlanproc.h"
|
||||||
@@ -762,6 +764,25 @@ static int vlan_dev_get_iflink(const str
|
@@ -766,6 +768,25 @@ static int vlan_dev_get_iflink(const str
|
||||||
return real_dev->ifindex;
|
return real_dev->ifindex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
static const struct ethtool_ops vlan_ethtool_ops = {
|
static const struct ethtool_ops vlan_ethtool_ops = {
|
||||||
.get_link_ksettings = vlan_ethtool_get_link_ksettings,
|
.get_link_ksettings = vlan_ethtool_get_link_ksettings,
|
||||||
.get_drvinfo = vlan_ethtool_get_drvinfo,
|
.get_drvinfo = vlan_ethtool_get_drvinfo,
|
||||||
@@ -799,6 +820,7 @@ static const struct net_device_ops vlan_
|
@@ -803,6 +824,7 @@ static const struct net_device_ops vlan_
|
||||||
.ndo_fix_features = vlan_dev_fix_features,
|
.ndo_fix_features = vlan_dev_fix_features,
|
||||||
.ndo_get_lock_subclass = vlan_dev_get_lock_subclass,
|
.ndo_get_lock_subclass = vlan_dev_get_lock_subclass,
|
||||||
.ndo_get_iflink = vlan_dev_get_iflink,
|
.ndo_get_iflink = vlan_dev_get_iflink,
|
||||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
#define PPP_VERSION "2.4.2"
|
#define PPP_VERSION "2.4.2"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1383,12 +1386,33 @@ static void ppp_dev_priv_destructor(stru
|
@@ -1382,12 +1385,33 @@ static void ppp_dev_priv_destructor(stru
|
||||||
ppp_destroy_interface(ppp);
|
ppp_destroy_interface(ppp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -143,7 +143,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
}
|
}
|
||||||
return &ip6n->tnls[prio][h];
|
return &ip6n->tnls[prio][h];
|
||||||
}
|
}
|
||||||
@@ -380,6 +391,12 @@ ip6_tnl_dev_uninit(struct net_device *de
|
@@ -383,6 +394,12 @@ ip6_tnl_dev_uninit(struct net_device *de
|
||||||
struct net *net = t->net;
|
struct net *net = t->net;
|
||||||
struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
|
struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
if (dev == ip6n->fb_tnl_dev)
|
if (dev == ip6n->fb_tnl_dev)
|
||||||
RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
|
RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
|
||||||
else
|
else
|
||||||
@@ -776,6 +793,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
@@ -779,6 +796,107 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
|
EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
|
static int __ip6_tnl_rcv(struct ip6_tnl *tunnel, struct sk_buff *skb,
|
||||||
const struct tnl_ptk_info *tpi,
|
const struct tnl_ptk_info *tpi,
|
||||||
struct metadata_dst *tun_dst,
|
struct metadata_dst *tun_dst,
|
||||||
@@ -828,6 +946,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
|
@@ -831,6 +949,27 @@ static int __ip6_tnl_rcv(struct ip6_tnl
|
||||||
skb_reset_network_header(skb);
|
skb_reset_network_header(skb);
|
||||||
memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
|
memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
|
||||||
|
|
||||||
|
@ -292,7 +292,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
|
__skb_tunnel_rx(skb, tunnel->dev, tunnel->net);
|
||||||
|
|
||||||
err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
|
err = dscp_ecn_decapsulate(tunnel, ipv6h, skb);
|
||||||
@@ -959,6 +1098,7 @@ static void init_tel_txopt(struct ipv6_t
|
@@ -962,6 +1101,7 @@ static void init_tel_txopt(struct ipv6_t
|
||||||
opt->ops.opt_nflen = 8;
|
opt->ops.opt_nflen = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -300,7 +300,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
/**
|
/**
|
||||||
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
|
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
|
||||||
* @t: the outgoing tunnel device
|
* @t: the outgoing tunnel device
|
||||||
@@ -1301,6 +1441,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
@@ -1304,6 +1444,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||||
{
|
{
|
||||||
struct ip6_tnl *t = netdev_priv(dev);
|
struct ip6_tnl *t = netdev_priv(dev);
|
||||||
struct ipv6hdr *ipv6h = ipv6_hdr(skb);
|
struct ipv6hdr *ipv6h = ipv6_hdr(skb);
|
||||||
|
@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
int encap_limit = -1;
|
int encap_limit = -1;
|
||||||
__u16 offset;
|
__u16 offset;
|
||||||
struct flowi6 fl6;
|
struct flowi6 fl6;
|
||||||
@@ -1363,6 +1504,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
@@ -1366,6 +1507,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||||
|
|
||||||
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
|
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
|
||||||
|
|
||||||
|
@ -327,7 +327,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
|
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@@ -1491,6 +1644,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
@@ -1494,6 +1647,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||||
t->parms.link = p->link;
|
t->parms.link = p->link;
|
||||||
t->parms.proto = p->proto;
|
t->parms.proto = p->proto;
|
||||||
t->parms.fwmark = p->fwmark;
|
t->parms.fwmark = p->fwmark;
|
||||||
|
@ -342,7 +342,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
dst_cache_reset(&t->dst_cache);
|
dst_cache_reset(&t->dst_cache);
|
||||||
ip6_tnl_link_config(t);
|
ip6_tnl_link_config(t);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1529,6 +1690,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
@@ -1532,6 +1693,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||||
p->flowinfo = u->flowinfo;
|
p->flowinfo = u->flowinfo;
|
||||||
p->link = u->link;
|
p->link = u->link;
|
||||||
p->proto = u->proto;
|
p->proto = u->proto;
|
||||||
|
@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
memcpy(p->name, u->name, sizeof(u->name));
|
memcpy(p->name, u->name, sizeof(u->name));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1910,6 +2072,15 @@ static int ip6_tnl_validate(struct nlatt
|
@@ -1913,6 +2075,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
||||||
struct __ip6_tnl_parm *parms)
|
struct __ip6_tnl_parm *parms)
|
||||||
{
|
{
|
||||||
@@ -1947,6 +2118,46 @@ static void ip6_tnl_netlink_parms(struct
|
@@ -1950,6 +2121,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||||
|
|
||||||
if (data[IFLA_IPTUN_FWMARK])
|
if (data[IFLA_IPTUN_FWMARK])
|
||||||
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
|
parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]);
|
||||||
|
@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
||||||
@@ -2058,6 +2269,12 @@ static void ip6_tnl_dellink(struct net_d
|
@@ -2061,6 +2272,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||||
|
|
||||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||||
{
|
{
|
||||||
|
@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
return
|
return
|
||||||
/* IFLA_IPTUN_LINK */
|
/* IFLA_IPTUN_LINK */
|
||||||
nla_total_size(4) +
|
nla_total_size(4) +
|
||||||
@@ -2087,6 +2304,24 @@ static size_t ip6_tnl_get_size(const str
|
@@ -2090,6 +2307,24 @@ static size_t ip6_tnl_get_size(const str
|
||||||
nla_total_size(0) +
|
nla_total_size(0) +
|
||||||
/* IFLA_IPTUN_FWMARK */
|
/* IFLA_IPTUN_FWMARK */
|
||||||
nla_total_size(4) +
|
nla_total_size(4) +
|
||||||
|
@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
0;
|
0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2094,6 +2329,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
@@ -2097,6 +2332,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||||
{
|
{
|
||||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||||
|
@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
|
|
||||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
||||||
@@ -2103,9 +2341,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
@@ -2106,9 +2344,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
|
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
|
||||||
|
@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
||||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
||||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
||||||
@@ -2145,6 +2401,7 @@ static const struct nla_policy ip6_tnl_p
|
@@ -2148,6 +2404,7 @@ static const struct nla_policy ip6_tnl_p
|
||||||
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
||||||
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
||||||
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
|
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
|
||||||
|
|
|
@ -141,7 +141,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
static const struct rt6_info ip6_blk_hole_entry_template = {
|
static const struct rt6_info ip6_blk_hole_entry_template = {
|
||||||
.dst = {
|
.dst = {
|
||||||
.__refcnt = ATOMIC_INIT(1),
|
.__refcnt = ATOMIC_INIT(1),
|
||||||
@@ -2038,6 +2055,11 @@ static struct rt6_info *ip6_route_info_c
|
@@ -2041,6 +2058,11 @@ static struct rt6_info *ip6_route_info_c
|
||||||
rt->dst.output = ip6_pkt_prohibit_out;
|
rt->dst.output = ip6_pkt_prohibit_out;
|
||||||
rt->dst.input = ip6_pkt_prohibit;
|
rt->dst.input = ip6_pkt_prohibit;
|
||||||
break;
|
break;
|
||||||
|
@ -153,7 +153,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
case RTN_THROW:
|
case RTN_THROW:
|
||||||
case RTN_UNREACHABLE:
|
case RTN_UNREACHABLE:
|
||||||
default:
|
default:
|
||||||
@@ -2763,6 +2785,17 @@ static int ip6_pkt_prohibit_out(struct n
|
@@ -2766,6 +2788,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
/*
|
/*
|
||||||
* Allocate a dst for local (unicast / anycast) address.
|
* Allocate a dst for local (unicast / anycast) address.
|
||||||
*/
|
*/
|
||||||
@@ -2997,7 +3030,8 @@ static int rtm_to_fib6_config(struct sk_
|
@@ -3000,7 +3033,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||||
rtm->rtm_type == RTN_PROHIBIT ||
|
rtm->rtm_type == RTN_PROHIBIT ||
|
||||||
|
@ -181,7 +181,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
cfg->fc_flags |= RTF_REJECT;
|
cfg->fc_flags |= RTF_REJECT;
|
||||||
|
|
||||||
if (rtm->rtm_type == RTN_LOCAL)
|
if (rtm->rtm_type == RTN_LOCAL)
|
||||||
@@ -3487,6 +3521,9 @@ static int rt6_fill_node(struct net *net
|
@@ -3490,6 +3524,9 @@ static int rt6_fill_node(struct net *net
|
||||||
case -EACCES:
|
case -EACCES:
|
||||||
rtm->rtm_type = RTN_PROHIBIT;
|
rtm->rtm_type = RTN_PROHIBIT;
|
||||||
break;
|
break;
|
||||||
|
@ -191,7 +191,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
case -EAGAIN:
|
case -EAGAIN:
|
||||||
rtm->rtm_type = RTN_THROW;
|
rtm->rtm_type = RTN_THROW;
|
||||||
break;
|
break;
|
||||||
@@ -3805,6 +3842,8 @@ static int ip6_route_dev_notify(struct n
|
@@ -3808,6 +3845,8 @@ static int ip6_route_dev_notify(struct n
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||||
|
@ -200,7 +200,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||||
#endif
|
#endif
|
||||||
@@ -4032,6 +4071,17 @@ static int __net_init ip6_route_net_init
|
@@ -4035,6 +4074,17 @@ static int __net_init ip6_route_net_init
|
||||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||||
ip6_template_metrics, true);
|
ip6_template_metrics, true);
|
||||||
|
@ -218,7 +218,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
net->ipv6.sysctl.flush_delay = 0;
|
net->ipv6.sysctl.flush_delay = 0;
|
||||||
@@ -4050,6 +4100,8 @@ out:
|
@@ -4053,6 +4103,8 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
|
@ -227,7 +227,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
out_ip6_prohibit_entry:
|
out_ip6_prohibit_entry:
|
||||||
kfree(net->ipv6.ip6_prohibit_entry);
|
kfree(net->ipv6.ip6_prohibit_entry);
|
||||||
out_ip6_null_entry:
|
out_ip6_null_entry:
|
||||||
@@ -4067,6 +4119,7 @@ static void __net_exit ip6_route_net_exi
|
@@ -4070,6 +4122,7 @@ static void __net_exit ip6_route_net_exi
|
||||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||||
kfree(net->ipv6.ip6_prohibit_entry);
|
kfree(net->ipv6.ip6_prohibit_entry);
|
||||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||||
|
@ -235,7 +235,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||||
#endif
|
#endif
|
||||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||||
}
|
}
|
||||||
@@ -4140,6 +4193,9 @@ void __init ip6_route_init_special_entri
|
@@ -4143,6 +4196,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_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->dst.dev = init_net.loopback_dev;
|
||||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||||
|
|
|
@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/include/linux/netdevice.h
|
+++ b/include/linux/netdevice.h
|
||||||
@@ -1739,6 +1739,8 @@ struct net_device {
|
@@ -1763,6 +1763,8 @@ struct net_device {
|
||||||
struct netdev_hw_addr_list mc;
|
struct netdev_hw_addr_list mc;
|
||||||
struct netdev_hw_addr_list dev_addrs;
|
struct netdev_hw_addr_list dev_addrs;
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ Reviewed-by: Grant Grundler <grundler@chromium.org>
|
||||||
/*
|
/*
|
||||||
* This structure holds all XPS maps for device. Maps are indexed by CPU.
|
* This structure holds all XPS maps for device. Maps are indexed by CPU.
|
||||||
*/
|
*/
|
||||||
@@ -1239,6 +1249,9 @@ struct net_device_ops {
|
@@ -1258,6 +1268,9 @@ struct net_device_ops {
|
||||||
const struct sk_buff *skb,
|
const struct sk_buff *skb,
|
||||||
u16 rxq_index,
|
u16 rxq_index,
|
||||||
u32 flow_id);
|
u32 flow_id);
|
||||||
|
|
|
@ -129,7 +129,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
/* 802.11 specific */
|
/* 802.11 specific */
|
||||||
struct wireless_dev;
|
struct wireless_dev;
|
||||||
/* 802.15.4 specific */
|
/* 802.15.4 specific */
|
||||||
@@ -1908,6 +1909,7 @@ struct net_device {
|
@@ -1932,6 +1933,7 @@ struct net_device {
|
||||||
struct netprio_map __rcu *priomap;
|
struct netprio_map __rcu *priomap;
|
||||||
#endif
|
#endif
|
||||||
struct phy_device *phydev;
|
struct phy_device *phydev;
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
|
|
||||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||||
@@ -2646,6 +2646,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -2650,6 +2650,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
struct device *dev = nor->dev;
|
struct device *dev = nor->dev;
|
||||||
struct mtd_info *mtd = &nor->mtd;
|
struct mtd_info *mtd = &nor->mtd;
|
||||||
struct device_node *np = spi_nor_get_flash_node(nor);
|
struct device_node *np = spi_nor_get_flash_node(nor);
|
||||||
|
@ -18,7 +18,7 @@ Signed-off-by: Abhimanyu Vishwakarma <Abhimanyu.Vishwakarma@imgtec.com>
|
||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -2721,7 +2722,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -2725,7 +2726,12 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
spi_nor_wait_till_ready(nor);
|
spi_nor_wait_till_ready(nor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
#include <linux/usb/hcd.h>
|
#include <linux/usb/hcd.h>
|
||||||
#include <linux/usb/ch11.h>
|
#include <linux/usb/ch11.h>
|
||||||
@@ -5072,6 +5073,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
|
@@ -5075,6 +5076,8 @@ int dwc2_hcd_init(struct dwc2_hsotg *hso
|
||||||
|
|
||||||
retval = -ENOMEM;
|
retval = -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
{ "w25m512jv", INFO(0xef7119, 0, 64 * 1024, 1024,
|
{ "w25m512jv", INFO(0xef7119, 0, 64 * 1024, 1024,
|
||||||
SECT_4K | SPI_NOR_QUAD_READ | SPI_NOR_DUAL_READ) },
|
SECT_4K | SPI_NOR_QUAD_READ | SPI_NOR_DUAL_READ) },
|
||||||
|
|
||||||
@@ -1220,6 +1272,9 @@ static int spi_nor_read(struct mtd_info
|
@@ -1224,6 +1276,9 @@ static int spi_nor_read(struct mtd_info
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
while (len) {
|
while (len) {
|
||||||
loff_t addr = from;
|
loff_t addr = from;
|
||||||
|
|
||||||
@@ -1244,6 +1299,18 @@ static int spi_nor_read(struct mtd_info
|
@@ -1248,6 +1303,18 @@ static int spi_nor_read(struct mtd_info
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
read_err:
|
read_err:
|
||||||
|
@ -154,7 +154,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_READ);
|
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_READ);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -1345,6 +1412,10 @@ static int spi_nor_write(struct mtd_info
|
@@ -1349,6 +1416,10 @@ static int spi_nor_write(struct mtd_info
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
for (i = 0; i < len; ) {
|
for (i = 0; i < len; ) {
|
||||||
ssize_t written;
|
ssize_t written;
|
||||||
loff_t addr = to + i;
|
loff_t addr = to + i;
|
||||||
@@ -1385,6 +1456,7 @@ static int spi_nor_write(struct mtd_info
|
@@ -1389,6 +1460,7 @@ static int spi_nor_write(struct mtd_info
|
||||||
}
|
}
|
||||||
|
|
||||||
write_err:
|
write_err:
|
||||||
|
@ -173,7 +173,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_WRITE);
|
spi_nor_unlock_and_unprep(nor, SPI_NOR_OPS_WRITE);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -2801,8 +2873,10 @@ int spi_nor_scan(struct spi_nor *nor, co
|
@@ -2805,8 +2877,10 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||||
} else if (mtd->size > 0x1000000) {
|
} else if (mtd->size > 0x1000000) {
|
||||||
/* enable 4-byte addressing if the device exceeds 16MiB */
|
/* enable 4-byte addressing if the device exceeds 16MiB */
|
||||||
nor->addr_width = 4;
|
nor->addr_width = 4;
|
||||||
|
|
Loading…
Reference in a new issue