From 0a06179ca896c24462f003b6316b0e10be9b0940 Mon Sep 17 00:00:00 2001 From: Justin Tee Date: Mon, 24 Jul 2017 10:09:29 -0700 Subject: [PATCH 1/2] net: Kernel changes for Generic Software Bridge(GSB) Changes are made to let GSB intercept network packets and consume them when possible. The goal is to bridge the packets directly to backhaul without letting packet do a round trip through the network stack. Acked-by: Gajendra Singh Change-Id: Ib364a82e883de7ea642bdd1d85c44eef1f54a086 Signed-off-by: Aman Gupta --- net/Kconfig | 11 +++++++++++ net/core/dev.c | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/net/Kconfig b/net/Kconfig index 10f50779fa4c..b3cc0a2d59ab 100644 --- a/net/Kconfig +++ b/net/Kconfig @@ -462,6 +462,17 @@ config ENABLE_SFE Changes to support Shortcut Forward Engine. Add bridge API to access the bridge slave port. +#Generic-Software-Bridge +config ENABLE_GSB + bool "Enable generic-software-bridge" + depends on QGKI + help + ENABLE_GSB enables software acceleration on the target via gsb. + The change supports generic software bridge. + Helps to include gsb hook on the kernel. + Fulfills requirement of GSB network stack receive. + Change is supposed to go only on targets supporting gsb. + endif # if NET # Used by archs to tell that they support BPF JIT compiler plus which flavour. diff --git a/net/core/dev.c b/net/core/dev.c index b243f21596dd..794526a9e34e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4718,6 +4718,11 @@ static inline int nf_ingress(struct sk_buff *skb, struct packet_type **pt_prev, return 0; } +#ifdef CONFIG_ENABLE_GSB +int (*gsb_nw_stack_recv)(struct sk_buff *skb) __rcu __read_mostly; +EXPORT_SYMBOL(gsb_nw_stack_recv); +#endif + static int (*embms_tm_multicast_recv)(struct sk_buff *skb) __rcu __read_mostly; EXPORT_SYMBOL(embms_tm_multicast_recv); @@ -4751,6 +4756,10 @@ static int __netif_receive_skb_core(struct sk_buff **pskb, bool pfmemalloc, int (*fast_recv)(struct sk_buff *skb, struct packet_type *pt_temp); #endif +#ifdef CONFIG_ENABLE_GSB + int (*gsb_ns_recv)(struct sk_buff *skb); +#endif + net_timestamp_check(!netdev_tstamp_prequeue, skb); trace_netif_receive_skb(skb); @@ -4823,6 +4832,16 @@ skip_taps: process_embms_receive_skb(skb); skip_classify: +#ifdef CONFIG_ENABLE_GSB + gsb_ns_recv = rcu_dereference(gsb_nw_stack_recv); + if (gsb_ns_recv) { + if (gsb_ns_recv(skb)) { + ret = NET_RX_SUCCESS; + goto out; + } + } +#endif + #ifdef CONFIG_ENABLE_SFE fast_recv = rcu_dereference(athrs_fast_nat_recv); if (fast_recv) { From b0e66d6799e5433ce9cae80267ea9d15809bcc8c Mon Sep 17 00:00:00 2001 From: Aman Gupta Date: Fri, 29 Jan 2021 11:37:07 +0530 Subject: [PATCH 2/2] defconfig: msm-5.4: Adding gsb support to sdxlemur target This change will add CONFIG_ENABLE_GSB for sdxlemur. Change-Id: Ic30ab228889fd0dafb2faaa0dc80a467bd86fe9f Signed-off-by: Aman Gupta --- arch/arm/configs/vendor/sdxlemur.config | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/configs/vendor/sdxlemur.config b/arch/arm/configs/vendor/sdxlemur.config index 5da0a76077ed..2fb24cc8a209 100644 --- a/arch/arm/configs/vendor/sdxlemur.config +++ b/arch/arm/configs/vendor/sdxlemur.config @@ -328,3 +328,4 @@ CONFIG_IPA_ETH_DEBUG=y CONFIG_QCOM_SHOW_RESUME_IRQ=y CONFIG_HARDENED_USERCOPY=y # CONFIG_HARDENED_USERCOPY_FALLBACK is not set +CONFIG_ENABLE_GSB=y