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:
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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" },
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user