Эх сурвалжийг харах

rmnet_core: CIWLAN HW Low-Latency Path

* Call hook to determine LL SKB

Change-Id: Id0686774a2faec227cb5fa9ac733023a69cfcdae
Signed-off-by: Elmer Melendez <[email protected]>
Elmer Melendez 3 жил өмнө
parent
commit
8638373d04
1 өөрчлөгдсөн 10 нэмэгдсэн , 0 устгасан
  1. 10 0
      core/rmnet_vnd.c

+ 10 - 0
core/rmnet_vnd.c

@@ -57,6 +57,10 @@ typedef int (*rmnet_aps_post_queue_t)(struct net_device *dev,
 rmnet_aps_post_queue_t rmnet_aps_post_queue __read_mostly;
 EXPORT_SYMBOL(rmnet_aps_post_queue);
 
+typedef void (*rmnet_wlan_ll_tuple_hook_t)(struct sk_buff *skb);
+rmnet_wlan_ll_tuple_hook_t rmnet_wlan_ll_tuple_hook __rcu __read_mostly;
+EXPORT_SYMBOL(rmnet_wlan_ll_tuple_hook);
+
 /* RX/TX Fixup */
 
 void rmnet_vnd_rx_fixup(struct net_device *dev, u32 skb_len)
@@ -96,6 +100,7 @@ static netdev_tx_t rmnet_vnd_start_xmit(struct sk_buff *skb,
 	unsigned int len;
 	rmnet_perf_tether_egress_hook_t rmnet_perf_tether_egress;
 	rmnet_aps_post_queue_t aps_post_queue;
+	rmnet_wlan_ll_tuple_hook_t rmnet_wlan_ll_tuple;
 	bool low_latency = false;
 	bool need_to_drop = false;
 
@@ -120,6 +125,11 @@ static netdev_tx_t rmnet_vnd_start_xmit(struct sk_buff *skb,
 			rmnet_perf_tether_egress(skb);
 		}
 
+		rmnet_wlan_ll_tuple = rcu_dereference(rmnet_wlan_ll_tuple_hook);
+		if (rmnet_wlan_ll_tuple) {
+			rmnet_wlan_ll_tuple(skb);
+		}
+
 		qmi_rmnet_get_flow_state(dev, skb, &need_to_drop, &low_latency);
 		if (unlikely(need_to_drop)) {
 			this_cpu_inc(priv->pcpu_stats->stats.tx_drops);