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 <gajendra@qti.qualcomm.com> Change-Id: Ib364a82e883de7ea642bdd1d85c44eef1f54a086 Signed-off-by: Aman Gupta <amangupt@codeaurora.org>
This commit is contained in:
parent
44c3d4ae63
commit
0a06179ca8
11
net/Kconfig
11
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.
|
||||
|
@ -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 @@ static int __netif_receive_skb_core(struct sk_buff **pskb, bool pfmemalloc,
|
||||
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) {
|
||||
|
Loading…
Reference in New Issue
Block a user