kernel: ipq806x: refresh qca-nss patches to kernel 5.15.155

kernel: ipq806x: refresh qca-nss patches to kernel 5.15.150
This commit is contained in:
Lucas Asvio
2024-06-02 09:08:32 +02:00
parent 2d5c9d9cc7
commit 37707f253f
19 changed files with 262 additions and 296 deletions

View File

@@ -19,7 +19,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth@gmail.com>
/*
* Get the required data from the packet.
*/
@@ -1191,7 +1194,7 @@ int nf_conntrack_tcp_packet(struct nf_co
@@ -1226,7 +1229,7 @@ int nf_conntrack_tcp_packet(struct nf_co
IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED &&
timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK])
timeout = timeouts[TCP_CONNTRACK_UNACK];
@@ -28,7 +28,7 @@ Signed-off-by: Christian 'Ansuel' Marangi <ansuelsmth@gmail.com>
timeouts[new_state] > timeouts[TCP_CONNTRACK_RETRANS])
timeout = timeouts[TCP_CONNTRACK_RETRANS];
else
@@ -1507,6 +1510,9 @@ void nf_conntrack_tcp_init_net(struct ne
@@ -1542,6 +1545,9 @@ void nf_conntrack_tcp_init_net(struct ne
*/
tn->tcp_be_liberal = 0;

View File

@@ -145,7 +145,7 @@
sdcc1bam: dma@12402000 {
compatible = "qcom,bam-v1.3.0";
reg = <0x12402000 0x8000>;
@@ -1554,6 +1685,20 @@
@@ -1553,6 +1684,20 @@
dmas = <&sdcc3bam 2>, <&sdcc3bam 1>;
dma-names = "tx", "rx";
};
@@ -166,7 +166,7 @@
};
sfpb_mutex: hwlock@1200600 {
@@ -1564,3 +1709,27 @@
@@ -1563,3 +1708,27 @@
};
};
};
@@ -214,7 +214,7 @@
--- a/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi
@@ -170,10 +170,17 @@
@@ -198,10 +198,17 @@
0x00094 0x4e /* PORT6_STATUS */
>;
};
@@ -232,7 +232,7 @@
phy-mode = "rgmii";
qcom,id = <1>;
@@ -189,6 +196,9 @@
@@ -217,6 +224,9 @@
&gmac2 {
status = "okay";
@@ -265,7 +265,7 @@
-};
--- a/arch/arm/boot/dts/qcom-ipq8064-ad7200-c2600.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq8064-ad7200-c2600.dtsi
@@ -330,6 +330,9 @@
@@ -357,6 +357,9 @@
&gmac1 {
status = "okay";
@@ -275,7 +275,7 @@
phy-mode = "rgmii";
qcom,id = <1>;
@@ -348,6 +351,9 @@
@@ -375,6 +378,9 @@
&gmac2 {
status = "okay";
@@ -287,7 +287,7 @@
--- a/arch/arm/boot/dts/qcom-ipq8064-r7500.dts
+++ b/arch/arm/boot/dts/qcom-ipq8064-r7500.dts
@@ -258,6 +258,9 @@
@@ -274,6 +274,9 @@
&gmac1 {
status = "okay";
@@ -297,7 +297,7 @@
phy-mode = "rgmii";
qcom,id = <1>;
@@ -275,6 +278,9 @@
@@ -291,6 +294,9 @@
&gmac2 {
status = "okay";
@@ -309,7 +309,7 @@
--- a/arch/arm/boot/dts/qcom-ipq8064-r7500v2.dts
+++ b/arch/arm/boot/dts/qcom-ipq8064-r7500v2.dts
@@ -341,6 +341,9 @@
@@ -357,6 +357,9 @@
&gmac1 {
status = "okay";
@@ -319,7 +319,7 @@
phy-mode = "rgmii";
qcom,id = <1>;
@@ -358,6 +361,9 @@
@@ -374,6 +377,9 @@
&gmac2 {
status = "okay";
@@ -331,7 +331,7 @@
--- a/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
+++ b/arch/arm/boot/dts/qcom-ipq8064-d7800.dts
@@ -344,6 +344,9 @@
@@ -360,6 +360,9 @@
&gmac1 {
status = "okay";
@@ -341,7 +341,7 @@
phy-mode = "rgmii";
qcom,id = <1>;
@@ -361,6 +364,9 @@
@@ -377,6 +380,9 @@
&gmac2 {
status = "okay";
@@ -416,9 +416,9 @@
pinctrl-0 = <&mdio0_pins>;
pinctrl-names = "default";
@@ -224,10 +252,14 @@
*/
};
@@ -170,10 +198,14 @@
0x00094 0x4e /* PORT6_STATUS */
>;
};
+
};
@@ -431,7 +431,7 @@
nand@0 {
reg = <0>;
@@ -261,6 +293,7 @@
@@ -207,6 +239,7 @@
qcom,ath10k-calibration-variant = "ASRock-G10";
};
};
@@ -578,7 +578,7 @@
--- a/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts
+++ b/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts
@@ -268,13 +268,23 @@
@@ -284,13 +284,23 @@
&gmac1 {
status = "okay";
@@ -602,7 +602,7 @@
qcom,irq = <255>;
mdiobus = <&mdio0>;
@@ -289,13 +299,23 @@
@@ -305,13 +315,23 @@
&gmac2 {
status = "okay";

View File

@@ -1,5 +1,5 @@
--- a/drivers/soc/qcom/socinfo.c 2022-11-07 08:55:57.097003500 +0900
+++ b/drivers/soc/qcom/socinfo.c 2022-11-07 09:03:58.447003500 +0900
--- a/drivers/soc/qcom/socinfo.c
+++ b/drivers/soc/qcom/socinfo.c
@@ -230,6 +230,7 @@ static const struct soc_id soc_id[] = {
{ 198, "MSM8126" },
{ 199, "APQ8026" },

View File

@@ -1,6 +1,6 @@
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -69,6 +69,7 @@ void brioctl_set(int (*hook)(struct net
@@ -68,6 +68,7 @@ void brioctl_set(int (*hook)(struct net
void __user *uarg));
int br_ioctl_call(struct net *net, struct net_bridge *br, unsigned int cmd,
struct ifreq *ifr, void __user *uarg);
@@ -8,7 +8,7 @@
#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
int br_multicast_list_adjacent(struct net_device *dev,
@@ -192,4 +193,42 @@ static inline clock_t br_get_ageing_time
@@ -191,4 +192,42 @@ static inline clock_t br_get_ageing_time
}
#endif
@@ -53,7 +53,7 @@
#endif
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -222,7 +222,12 @@ extern void vlan_vids_del_by_dev(struct
@@ -230,7 +230,12 @@ extern void vlan_vids_del_by_dev(struct
extern bool vlan_uses_dev(const struct net_device *dev);
@@ -68,7 +68,7 @@
__be16 vlan_proto, u16 vlan_id)
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1713,6 +1713,27 @@ enum netdev_ml_priv_type {
@@ -1725,6 +1725,27 @@ enum netdev_ml_priv_type {
ML_PRIV_CAN,
};
@@ -96,7 +96,7 @@
/**
* struct net_device - The DEVICE structure.
*
@@ -2848,6 +2869,10 @@ enum netdev_cmd {
@@ -2856,6 +2877,10 @@ enum netdev_cmd {
NETDEV_CVLAN_FILTER_DROP_INFO,
NETDEV_SVLAN_FILTER_PUSH_INFO,
NETDEV_SVLAN_FILTER_DROP_INFO,
@@ -123,7 +123,7 @@
const struct dst_entry *dst = skb_dst(skb);
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -574,4 +574,15 @@ static inline void neigh_update_is_route
@@ -567,4 +567,15 @@ static inline void neigh_update_is_route
*notify = 1;
}
}
@@ -155,7 +155,7 @@
void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *);
--- a/net/8021q/vlan_core.c
+++ b/net/8021q/vlan_core.c
@@ -556,4 +556,12 @@ static int __init vlan_offload_init(void
@@ -563,4 +563,12 @@ static int __init vlan_offload_init(void
return 0;
}
@@ -170,7 +170,7 @@
fs_initcall(vlan_offload_init);
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -38,6 +38,35 @@ static int fdb_insert(struct net_bridge
@@ -37,6 +37,35 @@ static int fdb_insert(struct net_bridge
static void fdb_notify(struct net_bridge *br,
const struct net_bridge_fdb_entry *, int, bool);
@@ -206,7 +206,7 @@
int __init br_fdb_init(void)
{
br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
@@ -343,6 +372,7 @@ void br_fdb_cleanup(struct work_struct *
@@ -342,6 +371,7 @@ void br_fdb_cleanup(struct work_struct *
unsigned long delay = hold_time(br);
unsigned long work_delay = delay;
unsigned long now = jiffies;
@@ -214,7 +214,7 @@
/* this part is tricky, in order to avoid blocking learning and
* consequently forwarding, we rely on rcu to delete objects with
@@ -369,8 +399,15 @@ void br_fdb_cleanup(struct work_struct *
@@ -368,8 +398,15 @@ void br_fdb_cleanup(struct work_struct *
work_delay = min(work_delay, this_timer - now);
} else {
spin_lock_bh(&br->hash_lock);
@@ -231,7 +231,7 @@
spin_unlock_bh(&br->hash_lock);
}
}
@@ -618,6 +655,12 @@ void br_fdb_update(struct net_bridge *br
@@ -615,6 +652,12 @@ void br_fdb_update(struct net_bridge *br
&fdb->flags)))
clear_bit(BR_FDB_ADDED_BY_EXT_LEARN,
&fdb->flags);
@@ -244,9 +244,9 @@
}
if (unlikely(test_bit(BR_FDB_ADDED_BY_USER, &flags)))
@@ -799,6 +842,25 @@ static void fdb_notify(struct net_bridge
br_offload_fdb_update(fdb);
@@ -794,6 +837,25 @@ static void fdb_notify(struct net_bridge
struct sk_buff *skb;
int err = -ENOBUFS;
+ /* QCA NSS ECM support - Start */
+ if (fdb->dst) {
@@ -270,7 +270,7 @@
if (swdev_notify)
br_switchdev_fdb_notify(br, fdb, type);
@@ -1382,3 +1444,62 @@ void br_fdb_clear_offload(const struct n
@@ -1377,3 +1439,62 @@ void br_fdb_clear_offload(const struct n
spin_unlock_bh(&p->br->hash_lock);
}
EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
@@ -343,9 +343,9 @@
#include <net/dsa.h>
#include <net/sock.h>
#include <linux/if_vlan.h>
@@ -27,6 +28,12 @@
@@ -26,6 +27,12 @@
#include "br_private.h"
#include "br_private_offload.h"
+/* QCA NSS ECM support - Start */
+/* Hook for external forwarding logic */
@@ -374,7 +374,7 @@
/* Since more than one interface can be attached to a bridge,
* there still maybe an alternate path for netconsole to use;
* therefore there is no reason for a NETDEV_RELEASE event.
@@ -788,3 +799,75 @@ bool br_port_flag_is_set(const struct ne
@@ -785,3 +796,75 @@ bool br_port_flag_is_set(const struct ne
return p->flags & flag;
}
EXPORT_SYMBOL_GPL(br_port_flag_is_set);
@@ -452,7 +452,7 @@
+/* QCA NSS ECM support - End */
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -2120,4 +2120,9 @@ void br_do_proxy_suppress_arp(struct sk_
@@ -2100,4 +2100,9 @@ void br_do_proxy_suppress_arp(struct sk_
void br_do_suppress_nd(struct sk_buff *skb, struct net_bridge *br,
u16 vid, struct net_bridge_port *p, struct nd_msg *msg);
struct nd_msg *br_is_nd_neigh_msg(struct sk_buff *skb, struct nd_msg *m);
@@ -464,7 +464,7 @@
#endif
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1685,7 +1685,7 @@ const char *netdev_cmd_to_name(enum netd
@@ -1690,7 +1690,7 @@ const char *netdev_cmd_to_name(enum netd
N(UDP_TUNNEL_DROP_INFO) N(CHANGE_TX_QUEUE_LEN)
N(CVLAN_FILTER_PUSH_INFO) N(CVLAN_FILTER_DROP_INFO)
N(SVLAN_FILTER_PUSH_INFO) N(SVLAN_FILTER_DROP_INFO)
@@ -475,7 +475,7 @@
return "UNKNOWN_NETDEV_EVENT";
--- a/net/core/neighbour.c
+++ b/net/core/neighbour.c
@@ -1219,7 +1219,21 @@ static void neigh_update_hhs(struct neig
@@ -1211,7 +1211,21 @@ static void neigh_update_hhs(struct neig
}
}
@@ -497,7 +497,7 @@
/* Generic update routine.
-- lladdr is new lladdr or NULL, if it is not supplied.
@@ -1250,6 +1264,7 @@ static int __neigh_update(struct neighbo
@@ -1242,6 +1256,7 @@ static int __neigh_update(struct neighbo
int notify = 0;
struct net_device *dev;
int update_isrouter = 0;
@@ -505,7 +505,7 @@
trace_neigh_update(neigh, lladdr, new, flags, nlmsg_pid);
@@ -1264,6 +1279,8 @@ static int __neigh_update(struct neighbo
@@ -1256,6 +1271,8 @@ static int __neigh_update(struct neighbo
new = old;
goto out;
}
@@ -514,7 +514,7 @@
if (!(flags & NEIGH_UPDATE_F_ADMIN) &&
(old & (NUD_NOARP | NUD_PERMANENT)))
goto out;
@@ -1301,6 +1318,11 @@ static int __neigh_update(struct neighbo
@@ -1293,6 +1310,11 @@ static int __neigh_update(struct neighbo
- compare new & old
- if they are different, check override flag
*/
@@ -526,7 +526,7 @@
if ((old & NUD_VALID) &&
!memcmp(lladdr, neigh->ha, dev->addr_len))
lladdr = neigh->ha;
@@ -1423,8 +1445,11 @@ out:
@@ -1415,8 +1437,11 @@ out:
if (((new ^ old) & NUD_PERMANENT) || ext_learn_change)
neigh_update_gc_list(neigh);
@@ -551,7 +551,7 @@
/* Caller must hold RTNL. */
int fib_table_insert(struct net *net, struct fib_table *tb,
struct fib_config *cfg, struct netlink_ext_ack *extack)
@@ -1396,6 +1399,9 @@ int fib_table_insert(struct net *net, st
@@ -1398,6 +1401,9 @@ int fib_table_insert(struct net *net, st
rtmsg_fib(RTM_NEWROUTE, htonl(key), new_fa, plen, new_fa->tb_id,
&cfg->fc_nlinfo, nlflags);
succeeded:
@@ -561,7 +561,7 @@
return 0;
out_remove_new_fa:
@@ -1766,6 +1772,9 @@ int fib_table_delete(struct net *net, st
@@ -1769,6 +1775,9 @@ int fib_table_delete(struct net *net, st
if (fa_to_delete->fa_state & FA_S_ACCESSED)
rt_cache_flush(cfg->fc_nlinfo.nl_net);
@@ -571,7 +571,7 @@
fib_release_info(fa_to_delete->fa_info);
alias_free_mem_rcu(fa_to_delete);
return 0;
@@ -2394,6 +2403,20 @@ void __init fib_trie_init(void)
@@ -2401,6 +2410,20 @@ void __init fib_trie_init(void)
0, SLAB_PANIC | SLAB_ACCOUNT, NULL);
}
@@ -594,7 +594,7 @@
struct fib_table *tb;
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -987,6 +987,7 @@ void inet6_ifa_finish_destroy(struct ine
@@ -1003,6 +1003,7 @@ void inet6_ifa_finish_destroy(struct ine
kfree_rcu(ifp, rcu);
}
@@ -602,7 +602,7 @@
static void
ipv6_link_dev_addr(struct inet6_dev *idev, struct inet6_ifaddr *ifp)
@@ -2048,6 +2049,7 @@ struct inet6_ifaddr *ipv6_get_ifaddr(str
@@ -2064,6 +2065,7 @@ struct inet6_ifaddr *ipv6_get_ifaddr(str
return result;
}
@@ -612,7 +612,7 @@
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -649,6 +649,7 @@ void ndisc_send_ns(struct net_device *de
@@ -650,6 +650,7 @@ void ndisc_send_ns(struct net_device *de
ndisc_send_skb(skb, daddr, saddr);
}
@@ -622,7 +622,7 @@
const struct in6_addr *daddr)
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -3878,6 +3878,9 @@ out_free:
@@ -3875,6 +3875,9 @@ out_free:
return ERR_PTR(err);
}
@@ -632,7 +632,7 @@
int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags,
struct netlink_ext_ack *extack)
{
@@ -3889,6 +3892,10 @@ int ip6_route_add(struct fib6_config *cf
@@ -3886,6 +3889,10 @@ int ip6_route_add(struct fib6_config *cf
return PTR_ERR(rt);
err = __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack);
@@ -643,7 +643,7 @@
fib6_info_release(rt);
return err;
@@ -3910,6 +3917,9 @@ static int __ip6_del_rt(struct fib6_info
@@ -3907,6 +3914,9 @@ static int __ip6_del_rt(struct fib6_info
err = fib6_del(rt, info);
spin_unlock_bh(&table->tb6_lock);
@@ -653,7 +653,7 @@
out:
fib6_info_release(rt);
return err;
@@ -6352,6 +6362,20 @@ static int ip6_route_dev_notify(struct n
@@ -6343,6 +6353,20 @@ static int ip6_route_dev_notify(struct n
return NOTIFY_OK;
}
@@ -676,7 +676,7 @@
*/
--- a/net/ipv6/ip6_gre.c
+++ b/net/ipv6/ip6_gre.c
@@ -1934,6 +1934,7 @@ static void ip6gre_tap_setup(struct net_
@@ -1943,6 +1943,7 @@ static void ip6gre_tap_setup(struct net_
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
@@ -686,7 +686,7 @@
--- a/net/ipv4/ip_gre.c
+++ b/net/ipv4/ip_gre.c
@@ -1333,6 +1333,7 @@ static void ipgre_tap_setup(struct net_d
@@ -1341,6 +1341,7 @@ static void ipgre_tap_setup(struct net_d
dev->netdev_ops = &gre_tap_netdev_ops;
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;

View File

@@ -91,7 +91,7 @@
depends on NETFILTER_ADVANCED
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -2877,6 +2877,9 @@ int nf_conntrack_init_net(struct net *ne
@@ -2899,6 +2899,9 @@ int nf_conntrack_init_net(struct net *ne
nf_conntrack_ecache_pernet_init(net);
nf_conntrack_helper_pernet_init(net);
nf_conntrack_proto_pernet_init(net);

View File

@@ -48,7 +48,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
/* Prototypes. */
static int ppp_unattached_ioctl(struct net *net, struct ppp_file *pf,
struct file *file, unsigned int cmd, unsigned long arg);
@@ -3450,7 +3470,10 @@ ppp_connect_channel(struct channel *pch,
@@ -3452,7 +3472,10 @@ ppp_connect_channel(struct channel *pch,
struct ppp_net *pn;
int ret = -ENXIO;
int hdrlen;
@@ -59,7 +59,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
pn = ppp_pernet(pch->chan_net);
mutex_lock(&pn->all_ppp_mutex);
@@ -3482,13 +3505,40 @@ ppp_connect_channel(struct channel *pch,
@@ -3484,13 +3507,40 @@ ppp_connect_channel(struct channel *pch,
++ppp->n_channels;
pch->ppp = ppp;
refcount_inc(&ppp->file.refcnt);
@@ -101,7 +101,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
return ret;
}
@@ -3506,6 +3556,13 @@ ppp_disconnect_channel(struct channel *p
@@ -3508,6 +3558,13 @@ ppp_disconnect_channel(struct channel *p
pch->ppp = NULL;
write_unlock_bh(&pch->upl);
if (ppp) {
@@ -115,7 +115,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
/* remove it from the ppp unit's list */
ppp_lock(ppp);
list_del(&pch->clist);
@@ -3585,6 +3642,222 @@ static void *unit_find(struct idr *p, in
@@ -3587,6 +3644,222 @@ static void *unit_find(struct idr *p, in
return idr_find(p, n);
}
@@ -338,7 +338,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
/* Module/initialization stuff */
module_init(ppp_init);
@@ -3601,6 +3874,7 @@ EXPORT_SYMBOL(ppp_input_error);
@@ -3603,6 +3876,7 @@ EXPORT_SYMBOL(ppp_input_error);
EXPORT_SYMBOL(ppp_output_wakeup);
EXPORT_SYMBOL(ppp_register_compressor);
EXPORT_SYMBOL(ppp_unregister_compressor);
@@ -480,7 +480,7 @@ Subject: [PATCH] Update 602-qca-add-pppoe-offload-support.patch for kernel
#endif /* !(__LINUX_IF_PPPOX_H) */
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2029,6 +2029,7 @@ struct net_device {
@@ -2040,6 +2040,7 @@ struct net_device {
unsigned int flags;
unsigned int priv_flags;
unsigned int extra_priv_flags;

View File

@@ -11,7 +11,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -231,4 +231,8 @@ typedef struct net_bridge_port *br_get_d
@@ -230,4 +230,8 @@ typedef struct net_bridge_port *br_get_d
extern br_get_dst_hook_t __rcu *br_get_dst_hook;
/* QCA NSS ECM support - End */
@@ -22,7 +22,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
#endif
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -67,6 +67,15 @@ void br_fdb_update_unregister_notify(str
@@ -66,6 +66,15 @@ void br_fdb_update_unregister_notify(str
EXPORT_SYMBOL_GPL(br_fdb_update_unregister_notify);
/* QCA NSS ECM support - End */
@@ -38,7 +38,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
int __init br_fdb_init(void)
{
br_fdb_cache = kmem_cache_create("bridge_fdb_cache",
@@ -372,7 +381,7 @@ void br_fdb_cleanup(struct work_struct *
@@ -371,7 +380,7 @@ void br_fdb_cleanup(struct work_struct *
unsigned long delay = hold_time(br);
unsigned long work_delay = delay;
unsigned long now = jiffies;
@@ -47,7 +47,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
/* this part is tricky, in order to avoid blocking learning and
* consequently forwarding, we rely on rcu to delete objects with
@@ -400,12 +409,13 @@ void br_fdb_cleanup(struct work_struct *
@@ -399,12 +408,13 @@ void br_fdb_cleanup(struct work_struct *
} else {
spin_lock_bh(&br->hash_lock);
if (!hlist_unhashed(&f->fdb_node)) {
@@ -63,7 +63,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
/* QCA NSS ECM support - End */
}
spin_unlock_bh(&br->hash_lock);
@@ -623,6 +633,7 @@ void br_fdb_update(struct net_bridge *br
@@ -620,6 +630,7 @@ void br_fdb_update(struct net_bridge *br
const unsigned char *addr, u16 vid, unsigned long flags)
{
struct net_bridge_fdb_entry *fdb;
@@ -71,7 +71,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
/* some users want to always flood. */
if (hold_time(br) == 0)
@@ -648,6 +659,12 @@ void br_fdb_update(struct net_bridge *br
@@ -645,6 +656,12 @@ void br_fdb_update(struct net_bridge *br
if (unlikely(source != READ_ONCE(fdb->dst) &&
!test_bit(BR_FDB_STICKY, &fdb->flags))) {
br_switchdev_fdb_notify(br, fdb, RTM_DELNEIGH);
@@ -84,7 +84,7 @@ Subject: [PATCH] Update 605-qca-add-add-nss-bridge-mgr-support.patch for
WRITE_ONCE(fdb->dst, source);
fdb_modified = true;
/* Take over HW learned entry */
@@ -659,7 +676,7 @@ void br_fdb_update(struct net_bridge *br
@@ -656,7 +673,7 @@ void br_fdb_update(struct net_bridge *br
/* QCA NSS ECM support - Start */
atomic_notifier_call_chain(
&br_fdb_update_notifier_list,

View File

@@ -10,7 +10,7 @@
static struct flow_dissector flow_keys_bonding __read_mostly;
/*-------------------------- Forward declarations ---------------------------*/
@@ -4060,6 +4063,23 @@ static int bond_get_lowest_level_rcu(str
@@ -4115,6 +4118,23 @@ static int bond_get_lowest_level_rcu(str
}
#endif
@@ -34,7 +34,7 @@
static void bond_get_stats(struct net_device *bond_dev,
struct rtnl_link_stats64 *stats)
{
@@ -5392,6 +5412,10 @@ static void bond_destructor(struct net_d
@@ -5447,6 +5467,10 @@ static void bond_destructor(struct net_d
if (bond->rr_tx_counter)
free_percpu(bond->rr_tx_counter);
@@ -45,7 +45,7 @@
}
void bond_setup(struct net_device *bond_dev)
@@ -5969,7 +5993,14 @@ int bond_create(struct net *net, const c
@@ -6020,7 +6044,14 @@ int bond_create(struct net *net, const c
bond_work_init_all(bond);
@@ -63,7 +63,7 @@
--- a/include/net/bonding.h
+++ b/include/net/bonding.h
@@ -255,6 +255,7 @@ struct bonding {
@@ -257,6 +257,7 @@ struct bonding {
spinlock_t ipsec_lock;
#endif /* CONFIG_XFRM_OFFLOAD */
struct bpf_prog *xdp_prog;
@@ -71,7 +71,7 @@
};
#define bond_slave_get_rcu(dev) \
@@ -629,6 +630,7 @@ struct bond_net {
@@ -631,6 +632,7 @@ struct bond_net {
int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond, struct slave *slave);
netdev_tx_t bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev);

View File

@@ -1,6 +1,6 @@
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -687,6 +687,7 @@ typedef unsigned char *sk_buff_data_t;
@@ -689,6 +689,7 @@ typedef unsigned char *sk_buff_data_t;
* @offload_fwd_mark: Packet was L2-forwarded in hardware
* @offload_l3_fwd_mark: Packet was L3-forwarded in hardware
* @tc_skip_classify: do not classify packet. set by IFB device
@@ -8,7 +8,7 @@
* @tc_at_ingress: used within tc_classify to distinguish in/egress
* @redirected: packet was redirected by packet classifier
* @from_ingress: packet was redirected from the ingress path
@@ -902,6 +903,8 @@ struct sk_buff {
@@ -905,6 +906,8 @@ struct sk_buff {
#ifdef CONFIG_NET_CLS_ACT
__u8 tc_skip_classify:1;
__u8 tc_at_ingress:1;

View File

@@ -52,7 +52,7 @@
dev->needs_free_netdev = true;
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -4749,6 +4749,15 @@ void dev_uc_flush(struct net_device *dev
@@ -4759,6 +4759,15 @@ void dev_uc_flush(struct net_device *dev
void dev_uc_init(struct net_device *dev);
/**
@@ -68,7 +68,7 @@
* __dev_uc_sync - Synchonize device's unicast list
* @dev: device to sync
* @sync: function to call if address should be added
@@ -5298,6 +5307,11 @@ static inline bool netif_is_failover_sla
@@ -5317,6 +5326,11 @@ static inline bool netif_is_failover_sla
return dev->priv_flags & IFF_FAILOVER_SLAVE;
}
@@ -333,7 +333,7 @@
#endif
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -2304,4 +2304,26 @@ static int __init pktsched_init(void)
@@ -2351,4 +2351,26 @@ static int __init pktsched_init(void)
return 0;
}
@@ -430,9 +430,9 @@
/* Reset all TX qdiscs greater than index of a device. */
static inline void qdisc_reset_all_tx_gt(struct net_device *dev, unsigned int i)
{
@@ -1336,4 +1371,9 @@ void mini_qdisc_pair_block_init(struct m
int sch_frag_xmit_hook(struct sk_buff *skb, int (*xmit)(struct sk_buff *skb));
@@ -1342,4 +1377,9 @@ static inline void qdisc_synchronize(con
msleep(1);
}
+/* QCA NSS Qdisc Support - Start */
+void qdisc_destroy(struct Qdisc *qdisc);

View File

@@ -1,6 +1,6 @@
--- a/net/l2tp/l2tp_core.c
+++ b/net/l2tp/l2tp_core.c
@@ -400,6 +400,31 @@ err_tlock:
@@ -398,6 +398,31 @@ err_tlock:
}
EXPORT_SYMBOL_GPL(l2tp_session_register);

View File

@@ -10,7 +10,7 @@
__u32 flags; /* tunnel flags */
--- a/include/net/ip_tunnels.h
+++ b/include/net/ip_tunnels.h
@@ -531,4 +531,9 @@ static inline void ip_tunnel_info_opts_s
@@ -534,4 +534,9 @@ static inline void ip_tunnel_info_opts_s
#endif /* CONFIG_INET */
@@ -22,7 +22,7 @@
#endif /* __NET_IP_TUNNELS_H */
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -2429,6 +2429,26 @@ nla_put_failure:
@@ -2440,6 +2440,26 @@ nla_put_failure:
return -EMSGSIZE;
}
@@ -51,7 +51,7 @@
struct ip6_tnl *tunnel = netdev_priv(dev);
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -1794,6 +1794,23 @@ nla_put_failure:
@@ -1798,6 +1798,23 @@ nla_put_failure:
return -EMSGSIZE;
}

View File

@@ -59,7 +59,7 @@
/* caller should hold vxlan->hash_lock */
static struct vxlan_rdst *vxlan_fdb_find_rdst(struct vxlan_fdb *f,
union vxlan_addr *ip, __be16 port,
@@ -2744,6 +2775,9 @@ static void vxlan_xmit_one(struct sk_buf
@@ -2746,6 +2777,9 @@ static void vxlan_xmit_one(struct sk_buf
goto out_unlock;
}
@@ -69,7 +69,7 @@
tos = ip_tunnel_ecn_encap(tos, old_iph, skb);
ttl = ttl ? : ip4_dst_hoplimit(&rt->dst);
err = vxlan_build_skb(skb, ndst, sizeof(struct iphdr),
@@ -2814,6 +2848,9 @@ static void vxlan_xmit_one(struct sk_buf
@@ -2817,6 +2851,9 @@ static void vxlan_xmit_one(struct sk_buf
if (err < 0)
goto tx_error;
@@ -101,7 +101,7 @@
struct net_device *vxlan_dev_create(struct net *net, const char *name,
u8 name_assign_type, struct vxlan_config *conf);
@@ -376,6 +389,15 @@ static inline __be32 vxlan_compute_rco(u
@@ -381,6 +394,15 @@ static inline __be32 vxlan_compute_rco(u
return vni_field;
}

View File

@@ -1,6 +1,6 @@
--- a/include/linux/ppp_channel.h
+++ b/include/linux/ppp_channel.h
@@ -45,6 +56,47 @@ struct ppp_channel {
@@ -59,6 +59,51 @@ struct ppp_channel {
};
#ifdef __KERNEL__
@@ -32,9 +32,13 @@
+extern int ppp_hold_channels(struct net_device *dev,
+ struct ppp_channel *channels[],
+ unsigned int chan_sz);
+extern int __ppp_hold_channels(struct net_device *dev,
+ struct ppp_channel *channels[],
+ unsigned int chan_sz);
+
+/* Test if the ppp device is a multi-link ppp device */
+extern int ppp_is_multilink(struct net_device *dev);
+extern int __ppp_is_multilink(struct net_device *dev);
+
+/* Update statistics of the PPP net_device by incrementing related
+ * statistics field value with corresponding parameter
@@ -48,7 +52,7 @@
/* Called by the channel when it can send some more data. */
extern void ppp_output_wakeup(struct ppp_channel *);
@@ -83,5 +135,17 @@ extern char *ppp_dev_name(struct ppp_cha
@@ -146,5 +191,17 @@ extern void ppp_update_stats(struct net_
* that ppp_unregister_channel returns.
*/
@@ -101,7 +105,28 @@
#endif
--- a/net/l2tp/l2tp_ppp.c
+++ b/net/l2tp/l2tp_ppp.c
@@ -380,6 +392,13 @@ static int pppol2tp_xmit(struct ppp_chan
@@ -123,9 +123,17 @@ struct pppol2tp_session {
};
static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb);
-
-static const struct ppp_channel_ops pppol2tp_chan_ops = {
- .start_xmit = pppol2tp_xmit,
+static int pppol2tp_get_channel_protocol(struct ppp_channel *);
+static int pppol2tp_get_channel_protocol_ver(struct ppp_channel *);
+static void pppol2tp_hold_chan(struct ppp_channel *);
+static void pppol2tp_release_chan(struct ppp_channel *);
+
+static const struct pppol2tp_channel_ops pppol2tp_chan_ops = {
+ .ops.start_xmit = pppol2tp_xmit,
+ .ops.get_channel_protocol = pppol2tp_get_channel_protocol,
+ .ops.get_channel_protocol_ver = pppol2tp_get_channel_protocol_ver,
+ .ops.hold = pppol2tp_hold_chan,
+ .ops.release = pppol2tp_release_chan,
};
static const struct proto_ops pppol2tp_ops;
@@ -374,6 +382,13 @@ static int pppol2tp_xmit(struct ppp_chan
skb->data[0] = PPP_ALLSTATIONS;
skb->data[1] = PPP_UI;
@@ -113,9 +138,18 @@
+ /* QCA NSS ECM support - End */
+
local_bh_disable();
l2tp_xmit_skb(session, skb, session->hdr_len);
l2tp_xmit_skb(session, skb);
local_bh_enable();
@@ -1749,6 +1768,109 @@ static void __exit pppol2tp_exit(void)
@@ -819,7 +834,7 @@ static int pppol2tp_connect(struct socke
po->chan.hdrlen = PPPOL2TP_L2TP_HDR_SIZE_NOSEQ;
po->chan.private = sk;
- po->chan.ops = &pppol2tp_chan_ops;
+ po->chan.ops = (struct ppp_channel_ops *)&pppol2tp_chan_ops.ops;
po->chan.mtu = pppol2tp_tunnel_mtu(tunnel);
error = ppp_register_net_channel(sock_net(sk), &po->chan);
@@ -1733,6 +1748,109 @@ static void __exit pppol2tp_exit(void)
unregister_pernet_device(&pppol2tp_net_ops);
}
@@ -225,110 +259,106 @@
module_init(pppol2tp_init);
module_exit(pppol2tp_exit);
*** a/drivers/net/ppp/ppp_generic.c 2022-04-06 17:25:52.144576100 +0900
--- b/drivers/net/ppp/ppp_generic.c 2022-04-06 17:32:55.164576100 +0900
*************** int ppp_is_multilink(struct net_device *
*** 3502,3507 ****
--- 3502,3533 ----
}
EXPORT_SYMBOL(ppp_is_multilink);
+ /* __ppp_is_multilink()
+ * Returns >0 if the device is a multilink PPP netdevice, 0 if not or < 0
+ * if the device is not PPP. Caller should acquire ppp_lock before calling
+ * this function
+ */
+ int __ppp_is_multilink(struct net_device *dev)
+ {
+ struct ppp *ppp;
+ unsigned int flags;
+
+ if (!dev)
+ return -1;
+
+ if (dev->type != ARPHRD_PPP)
+ return -1;
+
+ ppp = netdev_priv(dev);
+ flags = ppp->flags;
+
+ if (flags & SC_MULTILINK)
+ return 1;
+
+ return 0;
+ }
+ EXPORT_SYMBOL(__ppp_is_multilink);
+
/* ppp_channel_get_protocol()
* Call this to obtain the underlying protocol of the PPP channel,
* e.g. PX_PROTO_OE
*************** int ppp_hold_channels(struct net_device
*** 3606,3611 ****
--- 3632,3690 ----
}
EXPORT_SYMBOL(ppp_hold_channels);
+ /* __ppp_hold_channels()
+ * Returns the PPP channels of the PPP device, storing each one into
+ * channels[].
+ *
+ * channels[] has chan_sz elements.
+ * This function returns the number of channels stored, up to chan_sz.
+ * It will return < 0 if the device is not PPP.
+ *
+ * You MUST release the channels using ppp_release_channels().
+ */
+ int __ppp_hold_channels(struct net_device *dev, struct ppp_channel *channels[],
+ unsigned int chan_sz)
+ {
+ struct ppp *ppp;
+ int c;
+ struct channel *pch;
+
+ if (!dev)
+ return -1;
+
+ if (dev->type != ARPHRD_PPP)
+ return -1;
+
+ ppp = netdev_priv(dev);
+
+ c = 0;
+ list_for_each_entry(pch, &ppp->channels, clist) {
+ struct ppp_channel *chan;
+
+ if (!pch->chan) {
+ /* Channel is going / gone away */
+ continue;
+ }
+
+ if (c == chan_sz) {
+ /* No space to record channel */
+ return c;
+ }
+
+ /* Hold the channel, if supported */
+ chan = pch->chan;
+ if (!chan->ops->hold)
+ continue;
+
+ chan->ops->hold(chan);
+
+ /* Record the channel */
+ channels[c++] = chan;
+ }
+ return c;
+ }
+ EXPORT_SYMBOL(__ppp_hold_channels);
+
/* ppp_release_channels()
* Releases channels
*/
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
@@ -3742,6 +3742,32 @@ int ppp_is_multilink(struct net_device *
}
EXPORT_SYMBOL(ppp_is_multilink);
+/* __ppp_is_multilink()
+ * Returns >0 if the device is a multilink PPP netdevice, 0 if not or < 0
+ * if the device is not PPP. Caller should acquire ppp_lock before calling
+ * this function
+ */
+int __ppp_is_multilink(struct net_device *dev)
+{
+ struct ppp *ppp;
+ unsigned int flags;
+
+ if (!dev)
+ return -1;
+
+ if (dev->type != ARPHRD_PPP)
+ return -1;
+
+ ppp = netdev_priv(dev);
+ flags = ppp->flags;
+
+ if (flags & SC_MULTILINK)
+ return 1;
+
+ return 0;
+}
+EXPORT_SYMBOL(__ppp_is_multilink);
+
/* ppp_channel_get_protocol()
* Call this to obtain the underlying protocol of the PPP channel,
* e.g. PX_PROTO_OE
@@ -3880,6 +3906,59 @@ int ppp_hold_channels(struct net_device
}
EXPORT_SYMBOL(ppp_hold_channels);
+/* __ppp_hold_channels()
+ * Returns the PPP channels of the PPP device, storing each one into
+ * channels[].
+ *
+ * channels[] has chan_sz elements.
+ * This function returns the number of channels stored, up to chan_sz.
+ * It will return < 0 if the device is not PPP.
+ *
+ * You MUST release the channels using ppp_release_channels().
+ */
+int __ppp_hold_channels(struct net_device *dev, struct ppp_channel *channels[],
+ unsigned int chan_sz)
+{
+ struct ppp *ppp;
+ int c;
+ struct channel *pch;
+
+ if (!dev)
+ return -1;
+
+ if (dev->type != ARPHRD_PPP)
+ return -1;
+
+ ppp = netdev_priv(dev);
+
+ c = 0;
+ list_for_each_entry(pch, &ppp->channels, clist) {
+ struct ppp_channel *chan;
+
+ if (!pch->chan) {
+ /* Channel is going / gone away */
+ continue;
+ }
+
+ if (c == chan_sz) {
+ /* No space to record channel */
+ return c;
+ }
+
+ /* Hold the channel, if supported */
+ chan = pch->chan;
+ if (!chan->ops->hold)
+ continue;
+
+ chan->ops->hold(chan);
+
+ /* Record the channel */
+ channels[c++] = chan;
+ }
+ return c;
+}
+EXPORT_SYMBOL(__ppp_hold_channels);
+
/* ppp_release_channels()
* Releases channels
*/
--- a/net/l2tp/l2tp_core.h
+++ b/net/l2tp/l2tp_core.h
@@ -232,6 +232,9 @@ struct l2tp_session *l2tp_session_get_nt
struct l2tp_session *l2tp_session_get_by_ifname(const struct net *net,
const char *ifname);
@@ -235,6 +235,9 @@ struct l2tp_session *l2tp_session_get_by
void l2tp_stats_update(struct l2tp_tunnel *tunnel, struct l2tp_session *session,
struct l2tp_stats *stats);
+void l2tp_stats_update(struct l2tp_tunnel *tunnel, struct l2tp_session *session,
+ struct l2tp_stats *stats);
@@ -336,67 +366,3 @@
/* Tunnel and session lifetime management.
* Creation of a new instance is a two-step process: create, then register.
* Destruction is triggered using the *_delete functions, and completes asynchronously.
*** a/net/l2tp/l2tp_ppp.c 2022-08-20 11:19:37.748454800 +0900
--- b/net/l2tp/l2tp_ppp.c 2022-08-20 11:24:40.138454800 +0900
*************** struct pppol2tp_session {
*** 123,131 ****
};
static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb);
!
! static const struct ppp_channel_ops pppol2tp_chan_ops = {
! .start_xmit = pppol2tp_xmit,
};
static const struct proto_ops pppol2tp_ops;
--- 123,139 ----
};
static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb);
! static int pppol2tp_get_channel_protocol(struct ppp_channel *);
! static int pppol2tp_get_channel_protocol_ver(struct ppp_channel *);
! static void pppol2tp_hold_chan(struct ppp_channel *);
! static void pppol2tp_release_chan(struct ppp_channel *);
!
! static const struct pppol2tp_channel_ops pppol2tp_chan_ops = {
! .ops.start_xmit = pppol2tp_xmit,
! .ops.get_channel_protocol = pppol2tp_get_channel_protocol,
! .ops.get_channel_protocol_ver = pppol2tp_get_channel_protocol_ver,
! .ops.hold = pppol2tp_hold_chan,
! .ops.release = pppol2tp_release_chan,
};
static const struct proto_ops pppol2tp_ops;
*************** static int pppol2tp_connect(struct socke
*** 809,815 ****
po->chan.hdrlen = PPPOL2TP_L2TP_HDR_SIZE_NOSEQ;
po->chan.private = sk;
! po->chan.ops = &pppol2tp_chan_ops;
po->chan.mtu = pppol2tp_tunnel_mtu(tunnel);
error = ppp_register_net_channel(sock_net(sk), &po->chan);
--- 875,881 ----
po->chan.hdrlen = PPPOL2TP_L2TP_HDR_SIZE_NOSEQ;
po->chan.private = sk;
! po->chan.ops = (struct ppp_channel_ops *)&pppol2tp_chan_ops.ops;
po->chan.mtu = pppol2tp_tunnel_mtu(tunnel);
error = ppp_register_net_channel(sock_net(sk), &po->chan);
--- a/include/linux/ppp_channel.h 2022-11-08 21:01:55.607003500 +0900
+++ b/include/linux/ppp_channel.h 2022-11-08 21:03:40.027003500 +0900
@@ -87,9 +87,13 @@ extern int ppp_dev_index(struct ppp_chan
extern int ppp_hold_channels(struct net_device *dev,
struct ppp_channel *channels[],
unsigned int chan_sz);
+extern int __ppp_hold_channels(struct net_device *dev,
+ struct ppp_channel *channels[],
+ unsigned int chan_sz);
/* Test if the ppp device is a multi-link ppp device */
extern int ppp_is_multilink(struct net_device *dev);
+extern int __ppp_is_multilink(struct net_device *dev);
/* Update statistics of the PPP net_device by incrementing related
* statistics field value with corresponding parameter

View File

@@ -1,6 +1,6 @@
--- a/net/ipv6/ip6_tunnel.c 2022-11-08 20:48:53.057003500 +0900
+++ b/net/ipv6/ip6_tunnel.c 2022-11-08 20:49:15.247003500 +0900
@@ -2435,7 +2435,7 @@ nla_put_failure:
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -2446,7 +2446,7 @@ nla_put_failure:
*/
void ip6_update_offload_stats(struct net_device *dev, void *ptr)
{
@@ -9,9 +9,9 @@
const struct pcpu_sw_netstats *offload_stats =
(struct pcpu_sw_netstats *)ptr;
--- a/net/ipv6/sit.c 2022-11-08 20:49:54.917003500 +0900
+++ b/net/ipv6/sit.c 2022-11-08 20:50:05.637003500 +0900
@@ -1797,7 +1797,7 @@ nla_put_failure:
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -1801,7 +1801,7 @@ nla_put_failure:
/* QCA NSS Clients Support - Start */
void ipip6_update_offload_stats(struct net_device *dev, void *ptr)
{

View File

@@ -1,6 +1,6 @@
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -235,4 +235,17 @@ extern br_get_dst_hook_t __rcu *br_get_d
@@ -234,4 +234,17 @@ extern br_get_dst_hook_t __rcu *br_get_d
extern struct net_device *br_fdb_bridge_dev_get_and_hold(struct net_bridge *br);
/* QCA NSS bridge-mgr support - End */
@@ -20,7 +20,7 @@
#endif
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -186,6 +186,7 @@ struct net_bridge_fdb_entry *br_fdb_find
@@ -185,6 +185,7 @@ struct net_bridge_fdb_entry *br_fdb_find
{
return fdb_find_rcu(&br->fdb_hash_tbl, addr, vid);
}
@@ -28,7 +28,7 @@
/* When a static FDB entry is added, the mac address from the entry is
* added to the bridge private HW address list and all required ports
@@ -892,6 +893,7 @@ static void fdb_notify(struct net_bridge
@@ -887,6 +888,7 @@ static void fdb_notify(struct net_bridge
kfree_skb(skb);
goto errout;
}
@@ -38,7 +38,7 @@
errout:
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -853,6 +853,7 @@ void br_manage_promisc(struct net_bridge
@@ -833,6 +833,7 @@ void br_manage_promisc(struct net_bridge
int nbp_backup_change(struct net_bridge_port *p, struct net_device *backup_dev);
/* br_input.c */
@@ -46,7 +46,7 @@
int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb);
rx_handler_func_t *br_get_rx_handler(const struct net_device *dev);
@@ -2125,4 +2126,14 @@ struct nd_msg *br_is_nd_neigh_msg(struct
@@ -2105,4 +2106,14 @@ struct nd_msg *br_is_nd_neigh_msg(struct
#define __br_get(__hook, __default, __args ...) \
(__hook ? (__hook(__args)) : (__default))
/* QCA NSS ECM support - End */
@@ -73,7 +73,7 @@
errout:
--- a/net/bridge/br.c
+++ b/net/bridge/br.c
@@ -463,6 +463,12 @@ static void __exit br_deinit(void)
@@ -455,6 +455,12 @@ static void __exit br_deinit(void)
br_fdb_fini();
}
@@ -103,9 +103,9 @@
goto out;
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -24,6 +24,16 @@
@@ -23,6 +23,16 @@
#include "br_private.h"
#include "br_private_tunnel.h"
#include "br_private_offload.h"
+/* QCA qca-mcs support - Start */
+/* Hook for external Multicast handler */
@@ -120,7 +120,7 @@
static int
br_netif_receive_skb(struct net *net, struct sock *sk, struct sk_buff *skb)
{
@@ -31,7 +41,7 @@ br_netif_receive_skb(struct net *net, st
@@ -30,7 +40,7 @@ br_netif_receive_skb(struct net *net, st
return netif_receive_skb(skb);
}
@@ -129,7 +129,7 @@
{
struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev;
struct net_bridge *br = netdev_priv(brdev);
@@ -70,6 +80,7 @@ static int br_pass_frame_up(struct sk_bu
@@ -69,6 +79,7 @@ static int br_pass_frame_up(struct sk_bu
dev_net(indev), NULL, skb, indev, NULL,
br_netif_receive_skb);
}
@@ -137,7 +137,7 @@
/* note: already called with rcu_read_lock */
int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
@@ -85,6 +96,11 @@ int br_handle_frame_finish(struct net *n
@@ -84,6 +95,11 @@ int br_handle_frame_finish(struct net *n
struct net_bridge *br;
u16 vid = 0;
u8 state;
@@ -149,7 +149,7 @@
if (!p || p->state == BR_STATE_DISABLED)
goto drop;
@@ -141,6 +157,11 @@ int br_handle_frame_finish(struct net *n
@@ -140,6 +156,11 @@ int br_handle_frame_finish(struct net *n
switch (pkt_type) {
case BR_PKT_MULTICAST:
@@ -161,7 +161,7 @@
mdst = br_mdb_get(brmctx, skb, vid);
if ((mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) &&
br_multicast_querier_exists(brmctx, eth_hdr(skb), mdst)) {
@@ -156,8 +177,15 @@ int br_handle_frame_finish(struct net *n
@@ -155,8 +176,15 @@ int br_handle_frame_finish(struct net *n
}
break;
case BR_PKT_UNICAST:
@@ -179,7 +179,7 @@
default:
break;
}
@@ -172,12 +200,19 @@ int br_handle_frame_finish(struct net *n
@@ -171,12 +199,19 @@ int br_handle_frame_finish(struct net *n
dst->used = now;
br_forward(dst->dst, skb, local_rcv, false);
} else {

View File

@@ -45,7 +45,7 @@
esp.tfclen = 0;
if (x->tfcpad) {
struct xfrm_dst *dst = (struct xfrm_dst *)skb_dst(skb);
@@ -895,6 +901,7 @@ static int esp_input(struct xfrm_state *
@@ -897,6 +903,7 @@ static int esp_input(struct xfrm_state *
u8 *iv;
struct scatterlist *sg;
int err = -EINVAL;
@@ -53,7 +53,7 @@
if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + ivlen))
goto out;
@@ -902,6 +909,12 @@ static int esp_input(struct xfrm_state *
@@ -904,6 +911,12 @@ static int esp_input(struct xfrm_state *
if (elen <= 0)
goto out;
@@ -88,7 +88,7 @@
esp.tfclen = 0;
if (x->tfcpad) {
struct xfrm_dst *dst = (struct xfrm_dst *)skb_dst(skb);
@@ -938,6 +944,7 @@ static int esp6_input(struct xfrm_state
@@ -940,6 +946,7 @@ static int esp6_input(struct xfrm_state
__be32 *seqhi;
u8 *iv;
struct scatterlist *sg;
@@ -96,7 +96,7 @@
if (!pskb_may_pull(skb, sizeof(struct ip_esp_hdr) + ivlen)) {
ret = -EINVAL;
@@ -949,6 +956,12 @@ static int esp6_input(struct xfrm_state
@@ -951,6 +958,12 @@ static int esp6_input(struct xfrm_state
goto out;
}

View File

@@ -1,6 +1,6 @@
--- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
@@ -1513,7 +1513,6 @@
@@ -1523,7 +1523,6 @@
qcom,load-addr = <0x40000000>;
qcom,turbo-frequency;
@@ -8,7 +8,7 @@
qcom,gre-enabled;
qcom,gre-redir-enabled;
qcom,gre_tunnel_enabled;
@@ -1532,12 +1531,10 @@
@@ -1542,12 +1541,10 @@
qcom,vlan-enabled;
qcom,wlan-dataplane-offload-enabled;
qcom,wlanredirect-enabled;

View File

@@ -1,6 +1,6 @@
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -198,7 +198,6 @@ extern struct net_device *br_port_dev_ge
@@ -197,7 +197,6 @@ extern struct net_device *br_port_dev_ge
unsigned char *addr,
struct sk_buff *skb,
unsigned int cookie);
@@ -10,7 +10,7 @@
const char *addr,
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -1465,26 +1465,6 @@ void br_fdb_clear_offload(const struct n
@@ -1460,26 +1460,6 @@ void br_fdb_clear_offload(const struct n
EXPORT_SYMBOL_GPL(br_fdb_clear_offload);
/* QCA NSS ECM support - Start */
@@ -39,7 +39,7 @@
{
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
@@ -3772,34 +3772,6 @@ int ppp_channel_get_proto_version(struct
@@ -3800,34 +3800,6 @@ int ppp_channel_get_proto_version(struct
}
EXPORT_SYMBOL(ppp_channel_get_proto_version);
@@ -76,7 +76,7 @@
{
--- a/include/linux/ppp_channel.h
+++ b/include/linux/ppp_channel.h
@@ -99,12 +99,6 @@ extern int ppp_channel_get_protocol(stru
@@ -144,12 +144,6 @@ extern int ppp_channel_get_protocol(stru
/* Call this get protocol version */
extern int ppp_channel_get_proto_version(struct ppp_channel *);
@@ -91,7 +91,7 @@
unsigned int chan_sz);
--- a/drivers/net/ppp/pptp.c
+++ b/drivers/net/ppp/pptp.c
@@ -92,32 +92,6 @@ static int lookup_chan_dst(u16 call_id,
@@ -93,32 +93,6 @@ static int lookup_chan_dst(u16 call_id,
return i < MAX_CALLID;
}
@@ -124,7 +124,7 @@
/* Search a pptp session based on peer call id and peer ip address */
static int lookup_session_dst(struct pptp_opt *opt, u16 call_id, __be32 d_addr)
{
@@ -748,20 +722,6 @@ int pptp_session_find(struct pptp_opt *o
@@ -758,20 +732,6 @@ int pptp_session_find(struct pptp_opt *o
}
EXPORT_SYMBOL(pptp_session_find);