Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a06179c authored by Justin Tee's avatar Justin Tee Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarGajendra Singh <gajendra@qti.qualcomm.com>
Change-Id: Ib364a82e883de7ea642bdd1d85c44eef1f54a086
Signed-off-by: default avatarAman Gupta <amangupt@codeaurora.org>
parent 44c3d4ae
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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.
+19 −0
Original line number Diff line number Diff line
@@ -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) {