Browse Source

Merge 0d41566890d2634b57413623447405a9a84926b8 on remote branch

Change-Id: I242a94d109c4deb2180d95022ed3a674b10d2d3c
Linux Build Service Account 1 year ago
parent
commit
1d3553b8b3

+ 3 - 0
aps/Android.mk

@@ -6,6 +6,9 @@ RMNET_APS_DLKM_PLATFORMS_LIST := pineapple
 ifeq ($(call is-board-platform-in-list, $(RMNET_APS_DLKM_PLATFORMS_LIST)),true)
 LOCAL_PATH := $(call my-dir)
 
+#Enabling BAZEL
+LOCAL_MODULE_DDK_BUILD := true
+
 include $(CLEAR_VARS)
 LOCAL_MODULE := rmnet_aps.ko
 LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)

+ 6 - 0
aps/BUILD.bazel

@@ -0,0 +1,6 @@
+load(":define_aps.bzl", "define_aps")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+define_aps("pineapple", "consolidate")
+
+define_aps("pineapple", "gki")

+ 37 - 0
aps/define_aps.bzl

@@ -0,0 +1,37 @@
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+def define_aps(target, variant):
+    kernel_build_variant = "{}_{}".format(target, variant)
+    include_base = "../../../{}".format(native.package_name())
+
+    ddk_module(
+        name = "{}_aps".format(kernel_build_variant),
+        out = "rmnet_aps.ko",
+        srcs = [
+            "rmnet_aps_genl.c",
+            "rmnet_aps_main.c",
+            "rmnet_aps.h",
+            "rmnet_aps_genl.h",
+        ],
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+        deps = [
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
+            "//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
+        ],
+        copts = ["-Wno-misleading-indentation"],
+        includes = ["include"],
+    )
+
+    copy_to_dist_dir(
+        name = "{}_datarment-ext_dist".format(kernel_build_variant),
+        data = [
+            ":{}_aps".format(kernel_build_variant),
+        ],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+    )

+ 4 - 0
datarmnet_ext_dlkm_vendor_board.mk

@@ -11,10 +11,14 @@ endif
 ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
 	#Build rmnet modules
 	DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST := pineapple
+	DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST += blair
 	DATA_SHS_DLKM_BOARD_PLATFORMS_LIST := pineapple
+	DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += blair
 	DATA_APS_DLKM_BOARD_PLATFORMS_LIST := pineapple
 	DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST := pineapple
+	DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += blair
 	DATA_MEM_DLKM_BOARD_PLATFORMS_LIST := pineapple
+	DATA_MEM_DLKM_BOARD_PLATFORMS_LIST += blair
 
 	ifneq ($(TARGET_BOARD_AUTO),true)
 		ifeq ($(call is-board-platform-in-list,$(DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST)),true)

+ 4 - 0
mem/Android.mk

@@ -2,10 +2,14 @@ ifneq ($(TARGET_BOARD_AUTO),true)
 ifneq ($(TARGET_BOARD_PLATFORM),qssi)
 
 RMNET_MEM_DLKM_PLATFORMS_LIST := pineapple
+RMNET_MEM_DLKM_PLATFORMS_LIST += blair
 ifeq ($(call is-board-platform-in-list, $(RMNET_MEM_DLKM_PLATFORMS_LIST)),true)
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
+#Enabling BAZEL
+LOCAL_MODULE_DDK_BUILD := true
+
 LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
 LOCAL_CLANG :=true
 LOCAL_MODULE := rmnet_mem.ko

+ 6 - 0
mem/BUILD.bazel

@@ -0,0 +1,6 @@
+load(":define_mem.bzl", "define_mem")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+define_mem("pineapple", "consolidate")
+
+define_mem("pineapple", "gki")

+ 36 - 0
mem/define_mem.bzl

@@ -0,0 +1,36 @@
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+def define_mem(target, variant):
+    kernel_build_variant = "{}_{}".format(target, variant)
+    include_base = "../../../{}".format(native.package_name())
+
+    ddk_module(
+        name = "{}_mem".format(kernel_build_variant),
+        out = "rmnet_mem.ko",
+        srcs = [
+            "rmnet_mem.h",
+            "rmnet_mem_main.c",
+            "rmnet_mem_nl.c",
+            "rmnet_mem_nl.h",
+            "rmnet_mem_pool.c",
+            "rmnet_mem_priv.h",
+        ],
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+        deps = [
+            "//msm-kernel:all_headers",
+        ],
+        copts = ["-Wno-misleading-indentation"],
+    )
+
+    copy_to_dist_dir(
+        name = "{}_datarment-ext_dist".format(kernel_build_variant),
+        data = [
+            ":{}_mem".format(kernel_build_variant),
+        ],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+    )

+ 3 - 3
mem/rmnet_mem_main.c

@@ -76,11 +76,11 @@ rmnet_mem_id_recycled[j]++;page=mem_page->addr;page_ref_inc(mem_page->addr);
 list_rotate_left(&rmnet_mem_pool[j]);break;}list_rotate_left(&rmnet_mem_pool[j])
 ;i++;}while(i<=(0xd0a+237-0xdf2));if(page&&pageorder){*pageorder=j;break;}i=
 (0xd2d+202-0xdf7);}}if(!page){if(order<(0xd18+223-0xdf4)){page=__dev_alloc_pages
-(gfp_mask,order);if(page){if(static_pool_size[order]<max_pool_size[order]&&
+(GFP_ATOMIC,order);if(page){if(static_pool_size[order]<max_pool_size[order]&&
 pool_unbound_feature[order]){rmnet_mem_add_page(page,order);page_ref_inc(page);}
 if(pageorder){*pageorder=order;}}}else{if(static_pool_size[order]<max_pool_size[
-order]&&pool_unbound_feature[order]){page=__dev_alloc_pages(gfp_mask,order);if(
-page){rmnet_mem_add_page(page,order);page_ref_inc(page);}if(pageorder){*
+order]&&pool_unbound_feature[order]){page=__dev_alloc_pages(GFP_ATOMIC,order);if
+(page){rmnet_mem_add_page(page,order);page_ref_inc(page);}if(pageorder){*
 pageorder=order;}}}}spin_unlock_irqrestore(&rmnet_mem_lock,flags);if(pageorder&&
 code&&page){if(*pageorder==order)*code=RMNET_MEM_SUCCESS;else if(*pageorder>
 order)*code=RMNET_MEM_UPGRADE;else if(*pageorder<order)*code=RMNET_MEM_DOWNGRADE

+ 10 - 6
mem/rmnet_mem_pool.c

@@ -6,24 +6,27 @@
 #include "rmnet_mem_priv.h"
 #define DATARMNETc8aadbe769 (0xdf7+6169-0x241c)
 #define DATARMNET831d60a2b1 (0xd18+223-0xdf4)
+#define DATARMNETa967925c7a (0xdb7+6677-0x263c)
+#define DATARMNET19337c1bbf (0xdb7+6670-0x2634)
 extern struct work_struct pool_adjust_work;extern struct workqueue_struct*mem_wq
 ;int DATARMNET291f036d31(struct sk_buff*skb,struct genl_info*DATARMNET54338da2ff
 ){u8 mode=(0xd2d+202-0xdf7);struct sk_buff*DATARMNETa13fcf9070;struct 
 DATARMNET5d6175c98d mem_info;struct nlattr*na;if(DATARMNET54338da2ff->attrs[
 DATARMNETe5184c7a76]){na=DATARMNET54338da2ff->attrs[DATARMNETe5184c7a76];if(
 nla_memcpy(&mem_info,na,sizeof(mem_info))>(0xd2d+202-0xdf7)){rm_err(
-"%s(): modeinfo %u\n",__func__,mem_info.DATARMNET3a4d9ad400);}}rm_err(
+"%s(): modeinfo %u\n",__func__,mem_info.DATARMNET3a4d9ad400);}rm_err(
 "\x25\x73\x28\x29\x3a\x20\x6d\x6f\x64\x65\x20\x25\x75" "\n",__func__,mode);
 DATARMNETa13fcf9070=nlmsg_new(NLMSG_DEFAULT_SIZE,GFP_KERNEL);if(!
-DATARMNETa13fcf9070)return-ENOMEM;DATARMNETe85d734d4f((0xdb7+6677-0x263c),
-DATARMNET54338da2ff);return(0xd2d+202-0xdf7);}int DATARMNET8e48a951e4(struct 
+DATARMNETa13fcf9070)return-ENOMEM;DATARMNETe85d734d4f(DATARMNETa967925c7a,
+DATARMNET54338da2ff);}else{DATARMNETe85d734d4f(DATARMNET19337c1bbf,
+DATARMNET54338da2ff);}return(0xd2d+202-0xdf7);}int DATARMNET8e48a951e4(struct 
 sk_buff*skb,struct genl_info*DATARMNET54338da2ff){struct sk_buff*
 DATARMNETa13fcf9070;struct DATARMNET5d23779a8f mem_info;struct nlattr*na;int i;
 u8 DATARMNET205e85dea0=(0xd2d+202-0xdf7);if(DATARMNET54338da2ff->attrs[
 DATARMNETb0428b7575]){na=DATARMNET54338da2ff->attrs[DATARMNETb0428b7575];if(
 nla_memcpy(&mem_info,na,sizeof(mem_info))>(0xd2d+202-0xdf7)){pr_err(
 "\x25\x73\x28\x29\x3a\x20\x6d\x6f\x64\x65\x69\x6e\x66\x6f\x20\x25\x75" "\n",
-__func__,mem_info.DATARMNET855b934a37);}}rm_err(
+__func__,mem_info.DATARMNET855b934a37);}rm_err(
 "\x25\x73\x28\x29\x3a\x20\x70\x6f\x6f\x6c\x5f\x73\x69\x7a\x65\x20\x25\x75" "\n",
 __func__,mem_info.DATARMNETe87b937bb6[(0xd2d+202-0xdf7)]);for(i=
 (0xd2d+202-0xdf7);i<POOL_LEN;i++){if(mem_info.DATARMNET855b934a37&
@@ -31,5 +34,6 @@ __func__,mem_info.DATARMNETe87b937bb6[(0xd2d+202-0xdf7)]);for(i=
 target_static_pool_size[i]=mem_info.DATARMNETe87b937bb6[i];DATARMNET205e85dea0=
 (0xd26+209-0xdf6);}}if(DATARMNET205e85dea0&&mem_wq)queue_work(mem_wq,&
 pool_adjust_work);DATARMNETa13fcf9070=nlmsg_new(NLMSG_DEFAULT_SIZE,GFP_KERNEL);
-if(!DATARMNETa13fcf9070)return-ENOMEM;DATARMNETe85d734d4f((0xdb7+6677-0x263c),
-DATARMNET54338da2ff);return(0xd2d+202-0xdf7);}
+if(!DATARMNETa13fcf9070)return-ENOMEM;DATARMNETe85d734d4f(DATARMNETa967925c7a,
+DATARMNET54338da2ff);}else{DATARMNETe85d734d4f(DATARMNET19337c1bbf,
+DATARMNET54338da2ff);}return(0xd2d+202-0xdf7);}

+ 4 - 0
offload/Android.mk

@@ -2,11 +2,15 @@ ifneq ($(TARGET_BOARD_AUTO),true)
 ifneq ($(TARGET_BOARD_PLATFORM),qssi)
 
 RMNET_OFFLOAD_DLKM_PLATFORMS_LIST := pineapple
+RMNET_OFFLOAD_DLKM_PLATFORMS_LIST += blair
 
 ifeq ($(call is-board-platform-in-list, $(RMNET_OFFLOAD_DLKM_PLATFORMS_LIST)),true)
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
+#Enabling BAZEL
+LOCAL_MODULE_DDK_BUILD := true
+
 LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
 LOCAL_MODULE := rmnet_offload.ko
 LOCAL_SRC_FILES   := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)

+ 6 - 0
offload/BUILD.bazel

@@ -0,0 +1,6 @@
+load(":define_offload.bzl", "define_offload")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+define_offload("pineapple", "consolidate")
+
+define_offload("pineapple", "gki")

+ 46 - 0
offload/define_offload.bzl

@@ -0,0 +1,46 @@
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+def define_offload(target, variant):
+    kernel_build_variant = "{}_{}".format(target, variant)
+    include_base = "../../../{}".format(native.package_name())
+
+    ddk_module(
+        name = "{}_offload".format(kernel_build_variant),
+        out = "rmnet_offload.ko",
+        srcs = [
+            "rmnet_offload_engine.c",
+            "rmnet_offload_engine.h",
+            "rmnet_offload_knob.c",
+            "rmnet_offload_knob.h",
+            "rmnet_offload_main.c",
+            "rmnet_offload_main.h",
+            "rmnet_offload_state.c",
+            "rmnet_offload_state.h",
+            "rmnet_offload_stats.c",
+            "rmnet_offload_stats.h",
+            "rmnet_offload_tcp.c",
+            "rmnet_offload_tcp.h",
+            "rmnet_offload_udp.c",
+            "rmnet_offload_udp.h",
+        ],
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+        deps = [
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
+            "//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
+        ],
+        copts = ["-Wno-misleading-indentation"],
+    )
+
+    copy_to_dist_dir(
+        name = "{}_datarment-ext_dist".format(kernel_build_variant),
+        data = [
+            ":{}_offload".format(kernel_build_variant),
+        ],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+    )

+ 4 - 0
perf/Android.mk

@@ -2,11 +2,15 @@ ifneq ($(TARGET_BOARD_AUTO),true)
 ifneq ($(TARGET_BOARD_PLATFORM),qssi)
 
 RMNET_PERF_DLKM_PLATFORMS_LIST := pineapple
+RMNET_PERF_DLKM_PLATFORMS_LIST += blair
 
 ifeq ($(call is-board-platform-in-list, $(RMNET_PERF_DLKM_PLATFORMS_LIST)),true)
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
+#Enabling BAZEL
+LOCAL_MODULE_DDK_BUILD := true
+
 LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
 
 LOCAL_MODULE := rmnet_perf.ko

+ 6 - 0
perf/BUILD.bazel

@@ -0,0 +1,6 @@
+load(":define_perf.bzl", "define_perf")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+define_perf("pineapple", "consolidate")
+
+define_perf("pineapple", "gki")

+ 37 - 0
perf/define_perf.bzl

@@ -0,0 +1,37 @@
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+def define_perf(target, variant):
+    kernel_build_variant = "{}_{}".format(target, variant)
+    include_base = "../../../{}".format(native.package_name())
+
+    ddk_module(
+        name = "{}_perf".format(kernel_build_variant),
+        out = "rmnet_perf.ko",
+        srcs = [
+            "rmnet_perf_main.c",
+            "rmnet_perf_tcp.c",
+            "rmnet_perf_tcp.h",
+            "rmnet_perf_udp.c",
+            "rmnet_perf_udp.h",
+        ],
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+        deps = [
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
+            "//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
+        ],
+        copts = ["-Wno-misleading-indentation"],
+    )
+
+    copy_to_dist_dir(
+        name = "{}_datarment-ext_dist".format(kernel_build_variant),
+        data = [
+            ":{}_perf".format(kernel_build_variant),
+        ],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+    )

+ 10 - 9
perf/rmnet_perf_main.c

@@ -19,14 +19,15 @@
 #include "rmnet_perf_tcp.h"
 #include "rmnet_perf_udp.h"
 MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={
-"\x66\x32\x32\x62\x61\x63\x65\x30","\x63\x63\x39\x38\x66\x30\x38\x61",
-"\x63\x65\x37\x39\x33\x32\x31\x63","\x35\x64\x63\x64\x64\x34\x63\x30",
-"\x34\x63\x39\x62\x35\x33\x33\x37","\x61\x33\x62\x61\x62\x64\x34\x30",
-"\x37\x66\x30\x37\x38\x66\x39\x36","\x65\x35\x36\x63\x62\x35\x35\x64",
-"\x65\x32\x31\x38\x66\x34\x35\x31","\x33\x39\x63\x62\x64\x37\x64\x35",
-"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x64\x65\x34\x39\x64\x62\x35",
-"\x62\x31\x63\x34\x34\x62\x34\x63"};module_param_array(verinfo,charp,NULL,
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
+"\x38\x61\x62\x30\x61\x38\x65\x65","\x66\x32\x32\x62\x61\x63\x65\x30",
+"\x63\x63\x39\x38\x66\x30\x38\x61","\x63\x65\x37\x39\x33\x32\x31\x63",
+"\x35\x64\x63\x64\x64\x34\x63\x30","\x34\x63\x39\x62\x35\x33\x33\x37",
+"\x61\x33\x62\x61\x62\x64\x34\x30","\x37\x66\x30\x37\x38\x66\x39\x36",
+"\x65\x35\x36\x63\x62\x35\x35\x64","\x65\x32\x31\x38\x66\x34\x35\x31",
+"\x33\x39\x63\x62\x64\x37\x64\x35","\x37\x34\x31\x35\x39\x32\x31\x63",
+"\x34\x64\x65\x34\x39\x64\x62\x35","\x62\x31\x63\x34\x34\x62\x34\x63"};
+module_param_array(verinfo,charp,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
+verinfo,
 "\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
 );bool DATARMNETc03b668e4c=true;module_param_named(rmnet_perf_knob0,
 DATARMNETc03b668e4c,bool,(0xdb7+6665-0x261c));static bool DATARMNET21c7a3c377=
@@ -78,7 +79,7 @@ ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;
 DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
 sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9||
 ip_is_fragment(DATARMNET86f1f2cdc9))return;if(DATARMNET86f1f2cdc9->protocol==
-IPPROTO_TCP){if(DATARMNETc03b668e4c)DATARMNET9250714999(DATARMNET543491eb0f);}}
+IPPROTO_TCP){if(DATARMNETc03b668e4c)DATARMNETd8fdde8978(DATARMNET543491eb0f);}}
 else if(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
 DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;int DATARMNET611d08d671;__be16 
 DATARMNET98fed39916;u8 DATARMNET65293f17c4;DATARMNETbf55123e5b=

+ 4 - 0
perf_tether/Android.mk

@@ -2,11 +2,15 @@ ifneq ($(TARGET_BOARD_AUTO),true)
 ifneq ($(TARGET_BOARD_PLATFORM),qssi)
 
 RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST := pineapple
+RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST += blair
 
 ifeq ($(call is-board-platform-in-list, $(RMNET_PERF_TETHER_DLKM_PLATFORMS_LIST)),true)
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
+#Enabling BAZEL
+LOCAL_MODULE_DDK_BUILD := true
+
 LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
 
 LOCAL_MODULE := rmnet_perf_tether.ko

+ 6 - 0
perf_tether/BUILD.bazel

@@ -0,0 +1,6 @@
+load(":define_perf_tether.bzl", "define_perf_tether")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+define_perf_tether("pineapple", "consolidate")
+
+define_perf_tether("pineapple", "gki")

+ 33 - 0
perf_tether/define_perf_tether.bzl

@@ -0,0 +1,33 @@
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+def define_perf_tether(target, variant):
+    kernel_build_variant = "{}_{}".format(target, variant)
+    include_base = "../../../{}".format(native.package_name())
+
+    ddk_module(
+        name = "{}_perf_tether".format(kernel_build_variant),
+        out = "rmnet_perf_tether.ko",
+        srcs = [
+            "rmnet_perf_tether_main.c",
+        ],
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+        deps = [
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
+            "//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
+        ],
+        copts = ["-Wno-misleading-indentation"],
+    )
+
+    copy_to_dist_dir(
+        name = "{}_datarment-ext_dist".format(kernel_build_variant),
+        data = [
+            ":{}_perf_tether".format(kernel_build_variant),
+        ],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+    )

+ 3 - 0
sch/Android.mk

@@ -7,6 +7,9 @@ ifeq ($(call is-board-platform-in-list, $(RMNET_SCH_DLKM_PLATFORMS_LIST)),true)
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
+#Enabling BAZEL
+LOCAL_MODULE_DDK_BUILD := true
+
 LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
 
 LOCAL_MODULE := rmnet_sch.ko

+ 6 - 0
sch/BUILD.bazel

@@ -0,0 +1,6 @@
+load(":define_sch.bzl", "define_sch")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+define_sch("pineapple", "consolidate")
+
+define_sch("pineapple", "gki")

+ 29 - 0
sch/define_sch.bzl

@@ -0,0 +1,29 @@
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+def define_sch(target, variant):
+    kernel_build_variant = "{}_{}".format(target, variant)
+    include_base = "../../../{}".format(native.package_name())
+
+    ddk_module(
+        name = "{}_sch".format(kernel_build_variant),
+        out = "rmnet_sch.ko",
+        srcs = [
+            "rmnet_sch_main.c",
+        ],
+        deps = ["//msm-kernel:all_headers"],
+        copts = ["-Wno-misleading-indentation"],
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+    )
+
+    copy_to_dist_dir(
+        name = "{}_datarment-ext_dist".format(kernel_build_variant),
+        data = [
+            ":{}_sch".format(kernel_build_variant),
+        ],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+    )

+ 4 - 0
shs/Android.mk

@@ -1,5 +1,6 @@
 ifneq ($(TARGET_BOARD_PLATFORM),qssi)
 RMNET_SHS_DLKM_PLATFORMS_LIST := pineapple
+RMNET_SHS_DLKM_PLATFORMS_LIST += blair
 
 ifeq ($(call is-board-platform-in-list, $(RMNET_SHS_DLKM_PLATFORMS_LIST)),true)
 #Make file to create RMNET_SHS DLKM
@@ -9,6 +10,9 @@ include $(CLEAR_VARS)
 LOCAL_CFLAGS := -Wno-macro-redefined -Wno-unused-function -Wall -Werror
 LOCAL_CLANG :=true
 
+#Enabling BAZEL
+LOCAL_MODULE_DDK_BUILD := true
+
 LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
 LOCAL_MODULE := rmnet_shs.ko
 LOCAL_SRC_FILES   := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)

+ 5 - 0
shs/BUILD.bazel

@@ -0,0 +1,5 @@
+load(":define_shs.bzl", "define_shs")
+
+define_shs("pineapple", "consolidate")
+
+define_shs("pineapple", "gki")

+ 50 - 0
shs/define_shs.bzl

@@ -0,0 +1,50 @@
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+def define_shs(target, variant):
+    kernel_build_variant = "{}_{}".format(target, variant)
+    include_base = "../../../{}".format(native.package_name())
+
+    ddk_module(
+        name = "{}_shs".format(kernel_build_variant),
+        out = "rmnet_shs.ko",
+        srcs = [
+            "rmnet_shs.h",
+            "rmnet_shs_common.c",
+            "rmnet_shs_common.h",
+            "rmnet_shs_config.c",
+            "rmnet_shs_config.h",
+            "rmnet_shs_freq.c",
+            "rmnet_shs_freq.h",
+            "rmnet_shs_ll.c",
+            "rmnet_shs_ll.h",
+            "rmnet_shs_main.c",
+            "rmnet_shs_modules.c",
+            "rmnet_shs_modules.h",
+            "rmnet_shs_wq.c",
+            "rmnet_shs_wq.h",
+            "rmnet_shs_wq_genl.c",
+            "rmnet_shs_wq_genl.h",
+            "rmnet_shs_wq_mem.c",
+            "rmnet_shs_wq_mem.h",
+        ],
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+        deps = [
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
+            "//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
+        ],
+        copts = ["-Wno-misleading-indentation"],
+    )
+
+    copy_to_dist_dir(
+        name = "{}_datarment-ext_dist".format(kernel_build_variant),
+        data = [
+            ":{}_shs".format(kernel_build_variant),
+        ],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+    )

+ 1 - 0
shs/rmnet_shs.h

@@ -42,6 +42,7 @@
 #define DATARMNET752465942a (0xbf7+4364-0x1c04)
 #define DATARMNETbfe31ef643 (0xc07+1233-0xe1c)
 #define DATARMNET2d0941aa7c (0xd11+230-0xdf3)
+#define DATARMNETaa0602144b 11184810
 #define DATARMNET7a815512d3 (0xef7+1100-0x12fd)
 #define DATARMNET270b564b55  (0xd35+210-0xdff)
 #define DATARMNET1c2d76f636 (0xf07+658-0x110d)

+ 13 - 13
shs/rmnet_shs_config.c

@@ -68,12 +68,12 @@ rmnet_idl_ind_cb);rmnet_map_dl_ind_deregister(DATARMNETecc0627c70.port,&
 DATARMNETecc0627c70.DATARMNET08dbb5ab35);rmnet_map_pb_ind_deregister(
 DATARMNETecc0627c70.port,&DATARMNETecc0627c70.DATARMNET6b783c98fe);
 DATARMNETeacad8334e();DATARMNET90fe3a4b56();DATARMNET9f4bc49c6f=
-DATARMNET02cdd9b125();DATARMNET7fcf8c178f();DATARMNETf7dcab9a9e();
-DATARMNET9297340f58(DATARMNET9f4bc49c6f);trace_rmnet_shs_high(
-DATARMNET1790979ccf,DATARMNET443dab7031,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
-(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}break;case NETDEV_REGISTER:
-DATARMNET2cb9ae589c++;if(DATARMNET2cb9ae589c&&!DATARMNETecc0627c70.
-DATARMNETfc89d842ae){pr_info(
+DATARMNET02cdd9b125();if(DATARMNETecc0627c70.DATARMNET9c869c1ec2)
+DATARMNET7fcf8c178f();DATARMNETf7dcab9a9e();DATARMNET9297340f58(
+DATARMNET9f4bc49c6f);trace_rmnet_shs_high(DATARMNET1790979ccf,
+DATARMNET443dab7031,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
+(0x16e8+787-0xc0c),NULL,NULL);}break;case NETDEV_REGISTER:DATARMNET2cb9ae589c++;
+if(DATARMNET2cb9ae589c&&!DATARMNETecc0627c70.DATARMNETfc89d842ae){pr_info(
 "\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x25\x73"
 ,dev->name);priv=netdev_priv(dev);port=rmnet_get_port(priv->real_dev);if(!port){
 pr_err(
@@ -101,10 +101,10 @@ DATARMNET6b783c98fe);if(ret)pr_err(
 rmnet_idl_ind_cb);if(ret)pr_err(
 "\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x20\x70\x73\x5f\x69\x6e\x64\x20\x72\x65\x67\x69\x73\x74\x72\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c" "\n"
 ,__func__);DATARMNET7492293980(dev);DATARMNET039ac6d55d();DATARMNET0a6fb12cb2();
-DATARMNETe46c480d71();DATARMNETecc0627c70.DATARMNET9c869c1ec2=(0xd26+209-0xdf6);
-trace_rmnet_shs_high(DATARMNET1790979ccf,DATARMNET443dab7031,(0x16e8+787-0xc0c),
-(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);
-DATARMNETa871eeb7e7();DATARMNET7520667b38();rmnet_module_hook_register(&
-DATARMNETf6217b20b8,(0xd26+209-0xdf6));DATARMNETed3cac41ac();break;}
-DATARMNET7492293980(dev);break;default:break;}return NOTIFY_DONE;}module_init(
-DATARMNET163e93649e);module_exit(DATARMNETf3298dab6f);
+DATARMNETe46c480d71();trace_rmnet_shs_high(DATARMNET1790979ccf,
+DATARMNET443dab7031,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
+(0x16e8+787-0xc0c),NULL,NULL);DATARMNETa871eeb7e7();DATARMNET7520667b38();
+rmnet_module_hook_register(&DATARMNETf6217b20b8,(0xd26+209-0xdf6));
+DATARMNETed3cac41ac();DATARMNETecc0627c70.DATARMNET9c869c1ec2=(0xd26+209-0xdf6);
+break;}DATARMNET7492293980(dev);break;default:break;}return NOTIFY_DONE;}
+module_init(DATARMNET163e93649e);module_exit(DATARMNETf3298dab6f);

+ 102 - 53
shs/rmnet_shs_ll.c

@@ -30,6 +30,8 @@
 #include "rmnet_shs_modules.h"
 #include "rmnet_shs_common.h"
 #include "rmnet_trace.h"
+#include <linux/icmp.h>
+#include <linux/inet.h>
 DEFINE_HASHTABLE(DATARMNET58fe8ac797,DATARMNET25437d35fd);DEFINE_HASHTABLE(
 DATARMNET5750992efb,DATARMNET25437d35fd);DEFINE_SPINLOCK(DATARMNETd83ee17944);
 struct DATARMNETe600c5b727 DATARMNET148e775ece[DATARMNETc6782fed88];
@@ -53,61 +55,106 @@ DATARMNETefe3dcad0a,
 DATARMNET75ae82094a,uint,(0xdb7+6665-0x261c));MODULE_PARM_DESC(
 DATARMNET75ae82094a,
 "\x4c\x4c\x20\x66\x69\x6c\x74\x65\x72\x20\x63\x6f\x75\x6e\x74\x20\x73\x65\x65\x6e\x20\x69\x6e\x20\x6c\x6c\x20\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73"
-);int DATARMNET71b0abb49e(struct sk_buff*skb,struct ipv6hdr*DATARMNET5d09fca14e,
-struct DATARMNETbf4d34b241*DATARMNET54338da2ff){struct tcphdr*tp,
-DATARMNETd1ff6cd568;struct udphdr*up,DATARMNETc82d2f4e16;int DATARMNETb3ce3d0107
-,DATARMNETb16a9be210,DATARMNET5a94751027,DATARMNETad7ab41bc8,DATARMNETf13f5dee10
-=false;int ret=false;int DATARMNETd6e492a659=(0xd2d+202-0xdf7);u8 protocol;
-__be16 frag_off;DATARMNETb3ce3d0107=!DATARMNET54338da2ff->DATARMNET1819cae4a3||
-ipv6_addr_equal(&DATARMNET5d09fca14e->saddr,&DATARMNET54338da2ff->
-DATARMNET53d5f671f0.v6_saddr);DATARMNETb16a9be210=!DATARMNET54338da2ff->
-DATARMNETb035edcfb9||ipv6_addr_equal(&DATARMNET5d09fca14e->daddr,&
-DATARMNET54338da2ff->DATARMNETea422561ef.v6_daddr);DATARMNET5a94751027=!
-DATARMNET54338da2ff->DATARMNET8b5ace4a98||DATARMNET54338da2ff->proto==
-DATARMNET5d09fca14e->nexthdr;DATARMNETad7ab41bc8=!DATARMNET54338da2ff->
-DATARMNET5a5907dd87;DATARMNETf13f5dee10=!DATARMNET54338da2ff->
-DATARMNET1c959e10ca;protocol=DATARMNET5d09fca14e->nexthdr;if(DATARMNET54338da2ff
-->DATARMNET5a5907dd87||DATARMNET54338da2ff->DATARMNET1c959e10ca){
-DATARMNETd6e492a659=ipv6_skip_exthdr(skb,sizeof(*DATARMNET5d09fca14e),&protocol,
-&frag_off);if(DATARMNETd6e492a659<(0xd2d+202-0xdf7)){return false;}if(
-DATARMNET5d09fca14e->nexthdr==IPPROTO_TCP){tp=DATARMNETefcaf5fbe9(skb,
-DATARMNETd6e492a659,sizeof(*tp),&DATARMNETd1ff6cd568);if(!tp){
-DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=false;}else{DATARMNETad7ab41bc8=!
-DATARMNET54338da2ff->DATARMNET5a5907dd87||tp->source==(DATARMNET54338da2ff->
-src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff->DATARMNET1c959e10ca||tp->
-dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}else if(DATARMNET5d09fca14e->
-nexthdr==IPPROTO_UDP){up=DATARMNETefcaf5fbe9(skb,DATARMNETd6e492a659,sizeof(*up)
-,&DATARMNETc82d2f4e16);if(!up){DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=
-false;}else{DATARMNETad7ab41bc8=!DATARMNET54338da2ff->DATARMNET5a5907dd87||up->
-source==(DATARMNET54338da2ff->src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff
-->DATARMNET1c959e10ca||up->dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}}
-if((DATARMNETb3ce3d0107)&&(DATARMNETb16a9be210)&&(DATARMNET5a94751027)&&(
-DATARMNETad7ab41bc8)&&(DATARMNETf13f5dee10))ret=true;return ret;}int 
-DATARMNETb9e0ebf153(struct sk_buff*skb,struct iphdr*skb_ip4h,struct 
-DATARMNETbf4d34b241*DATARMNET54338da2ff){int ret=false;struct tcphdr*tp,
-DATARMNETd1ff6cd568;struct udphdr*up,DATARMNETc82d2f4e16;u16 DATARMNET43b01ff41b
-=skb_ip4h->ihl*(0xd11+230-0xdf3);int DATARMNETb3ce3d0107=!DATARMNET54338da2ff->
-DATARMNET1819cae4a3||skb_ip4h->saddr==DATARMNET54338da2ff->DATARMNET53d5f671f0.
-saddr;int DATARMNETb16a9be210=!DATARMNET54338da2ff->DATARMNETb035edcfb9||
-skb_ip4h->daddr==(DATARMNET54338da2ff->DATARMNETea422561ef.daddr);int 
-DATARMNET5a94751027=!DATARMNET54338da2ff->DATARMNET8b5ace4a98||skb_ip4h->
-protocol==DATARMNET54338da2ff->proto;int DATARMNETad7ab41bc8=!
-DATARMNET54338da2ff->DATARMNET5a5907dd87;int DATARMNETf13f5dee10=!
-DATARMNET54338da2ff->DATARMNET1c959e10ca;if(DATARMNET54338da2ff->
-DATARMNET5a5907dd87||DATARMNET54338da2ff->DATARMNET1c959e10ca){if(skb_ip4h->
-protocol==IPPROTO_TCP){tp=DATARMNETefcaf5fbe9(skb,DATARMNET43b01ff41b,sizeof(*tp
-),&DATARMNETd1ff6cd568);if(!tp){DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=
-false;}else{DATARMNETad7ab41bc8=!DATARMNET54338da2ff->DATARMNET5a5907dd87||tp->
-source==(DATARMNET54338da2ff->src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff
-->DATARMNET1c959e10ca||tp->dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}
-else if(skb_ip4h->protocol==IPPROTO_UDP){up=DATARMNETefcaf5fbe9(skb,
-DATARMNET43b01ff41b,sizeof(*up),&DATARMNETc82d2f4e16);if(!up){
+);int DATARMNETf4aefff4c2(struct sk_buff*skb){int DATARMNETbd864aa442=
+(0xd2d+202-0xdf7);struct iphdr*ip4h,DATARMNETc00baf31c3;struct ipv6hdr*ip6h,
+DATARMNETcf1d9e2c1e;const struct ipv6_opt_hdr*DATARMNET7b34b7b5be;struct 
+ipv6_opt_hdr DATARMNET1688a97aa4;switch(skb->protocol){case htons(ETH_P_IP):ip4h
+=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),sizeof(*ip4h),&DATARMNETc00baf31c3);
+if(!ip4h)break;if(!ip_is_fragment(ip4h)&&(ip4h->protocol==IPPROTO_TCP||ip4h->
+protocol==IPPROTO_UDP)){DATARMNETbd864aa442=(0xd26+209-0xdf6);break;}if(ip4h->
+protocol==IPPROTO_ICMP){skb->hash=(0xd2d+202-0xdf7);skb->sw_hash=
+(0xd26+209-0xdf6);if(trace_print_icmp_rx_enabled()){char saddr[INET6_ADDRSTRLEN]
+,daddr[INET6_ADDRSTRLEN];u16 ip_proto=(0xd2d+202-0xdf7);__be16 sequence=
+(0xd2d+202-0xdf7);u8 type=(0xd2d+202-0xdf7);struct icmphdr*icmphdr,
+DATARMNET5aa29a2264;memset(saddr,(0xd2d+202-0xdf7),INET6_ADDRSTRLEN);memset(
+daddr,(0xd2d+202-0xdf7),INET6_ADDRSTRLEN);icmphdr=DATARMNETefcaf5fbe9(skb,ip4h->
+ihl*(0xd11+230-0xdf3),sizeof(*icmphdr),&DATARMNET5aa29a2264);if(!icmphdr)goto 
+DATARMNET03fd0cd6e6;if(icmphdr->type!=ICMP_ECHOREPLY&&icmphdr->type!=ICMP_ECHO)
+goto DATARMNET03fd0cd6e6;ip_proto=htons(ETH_P_IP);type=icmphdr->type;sequence=
+icmphdr->un.echo.sequence;snprintf(saddr,INET6_ADDRSTRLEN,"\x25\x70\x49\x34",&
+ip4h->saddr);snprintf(daddr,INET6_ADDRSTRLEN,"\x25\x70\x49\x34",&ip4h->daddr);
+trace_print_icmp_rx(skb,ip_proto,type,sequence,saddr,daddr);}}else if(ip4h->
+protocol==IPPROTO_ESP){skb->hash=DATARMNETaa0602144b;skb->sw_hash=
+(0xd26+209-0xdf6);}DATARMNET03fd0cd6e6:break;case htons(ETH_P_IPV6):ip6h=
+DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),sizeof(*ip6h),&DATARMNETcf1d9e2c1e);if
+(!ip6h)break;if(!(ip6h->nexthdr==NEXTHDR_FRAGMENT)&&(ip6h->nexthdr==IPPROTO_TCP
+||ip6h->nexthdr==IPPROTO_UDP)){DATARMNETbd864aa442=(0xd26+209-0xdf6);break;}if(
+ip6h->nexthdr==NEXTHDR_ICMP){skb->hash=(0xd2d+202-0xdf7);skb->sw_hash=
+(0xd26+209-0xdf6);if(trace_print_icmp_rx_enabled()){char saddr[INET6_ADDRSTRLEN]
+,daddr[INET6_ADDRSTRLEN];u16 ip_proto=(0xd2d+202-0xdf7);__be16 sequence=
+(0xd2d+202-0xdf7);u8 type=(0xd2d+202-0xdf7);struct icmp6hdr*icmp6hdr,
+DATARMNETaa41336581;memset(saddr,(0xd2d+202-0xdf7),INET6_ADDRSTRLEN);memset(
+daddr,(0xd2d+202-0xdf7),INET6_ADDRSTRLEN);icmp6hdr=DATARMNETefcaf5fbe9(skb,
+sizeof(*ip6h),sizeof(*icmp6hdr),&DATARMNETaa41336581);if(!icmp6hdr)goto 
+DATARMNETf623862dd4;if(icmp6hdr->icmp6_type!=ICMPV6_ECHO_REQUEST&&icmp6hdr->
+icmp6_type!=ICMPV6_ECHO_REPLY)goto DATARMNETf623862dd4;ip_proto=htons(ETH_P_IPV6
+);type=icmp6hdr->icmp6_type;sequence=icmp6hdr->icmp6_sequence;snprintf(saddr,
+INET6_ADDRSTRLEN,"\x25\x70\x49\x36",&ip6h->saddr);snprintf(daddr,
+INET6_ADDRSTRLEN,"\x25\x70\x49\x36",&ip6h->daddr);trace_print_icmp_rx(skb,
+ip_proto,type,sequence,saddr,daddr);}}else if(ip6h->nexthdr==NEXTHDR_ESP){skb->
+hash=DATARMNETaa0602144b;skb->sw_hash=(0xd26+209-0xdf6);}else if(ip6h->nexthdr==
+NEXTHDR_FRAGMENT){if(skb->len-sizeof(struct ipv6hdr)<(int)sizeof(struct 
+ipv6_opt_hdr)){break;}DATARMNET7b34b7b5be=skb_header_pointer(skb,sizeof(struct 
+ipv6hdr),sizeof(DATARMNET1688a97aa4),&DATARMNET1688a97aa4);if(
+DATARMNET7b34b7b5be&&DATARMNET7b34b7b5be->nexthdr==NEXTHDR_ESP){skb->hash=
+DATARMNETaa0602144b;skb->sw_hash=(0xd26+209-0xdf6);}}DATARMNETf623862dd4:break;
+default:break;}DATARMNETda96251102(DATARMNETcd24fca747,DATARMNET116c96c236,
+DATARMNETbd864aa442,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),skb
+,NULL);return DATARMNETbd864aa442;}int DATARMNET71b0abb49e(struct sk_buff*skb,
+struct ipv6hdr*DATARMNET5d09fca14e,struct DATARMNETbf4d34b241*
+DATARMNET54338da2ff){struct tcphdr*tp,DATARMNETd1ff6cd568;struct udphdr*up,
+DATARMNETc82d2f4e16;int DATARMNETb3ce3d0107,DATARMNETb16a9be210,
+DATARMNET5a94751027,DATARMNETad7ab41bc8,DATARMNETf13f5dee10=false;int ret=false;
+int DATARMNETd6e492a659=(0xd2d+202-0xdf7);u8 protocol;__be16 frag_off;
+DATARMNETb3ce3d0107=!DATARMNET54338da2ff->DATARMNET1819cae4a3||ipv6_addr_equal(&
+DATARMNET5d09fca14e->saddr,&DATARMNET54338da2ff->DATARMNET53d5f671f0.v6_saddr);
+DATARMNETb16a9be210=!DATARMNET54338da2ff->DATARMNETb035edcfb9||ipv6_addr_equal(&
+DATARMNET5d09fca14e->daddr,&DATARMNET54338da2ff->DATARMNETea422561ef.v6_daddr);
+DATARMNET5a94751027=!DATARMNET54338da2ff->DATARMNET8b5ace4a98||
+DATARMNET54338da2ff->proto==DATARMNET5d09fca14e->nexthdr;DATARMNETad7ab41bc8=!
+DATARMNET54338da2ff->DATARMNET5a5907dd87;DATARMNETf13f5dee10=!
+DATARMNET54338da2ff->DATARMNET1c959e10ca;protocol=DATARMNET5d09fca14e->nexthdr;
+if(DATARMNET54338da2ff->DATARMNET5a5907dd87||DATARMNET54338da2ff->
+DATARMNET1c959e10ca){DATARMNETd6e492a659=ipv6_skip_exthdr(skb,sizeof(*
+DATARMNET5d09fca14e),&protocol,&frag_off);if(DATARMNETd6e492a659<
+(0xd2d+202-0xdf7)){return false;}if(DATARMNET5d09fca14e->nexthdr==IPPROTO_TCP){
+tp=DATARMNETefcaf5fbe9(skb,DATARMNETd6e492a659,sizeof(*tp),&DATARMNETd1ff6cd568)
+;if(!tp){DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=false;}else{
+DATARMNETad7ab41bc8=!DATARMNET54338da2ff->DATARMNET5a5907dd87||tp->source==(
+DATARMNET54338da2ff->src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff->
+DATARMNET1c959e10ca||tp->dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}else
+ if(DATARMNET5d09fca14e->nexthdr==IPPROTO_UDP){up=DATARMNETefcaf5fbe9(skb,
+DATARMNETd6e492a659,sizeof(*up),&DATARMNETc82d2f4e16);if(!up){
 DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=false;}else{DATARMNETad7ab41bc8=!
 DATARMNET54338da2ff->DATARMNET5a5907dd87||up->source==(DATARMNET54338da2ff->
 src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff->DATARMNET1c959e10ca||up->
 dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}}if((DATARMNETb3ce3d0107)&&(
 DATARMNETb16a9be210)&&(DATARMNET5a94751027)&&(DATARMNETad7ab41bc8)&&(
-DATARMNETf13f5dee10))ret=true;rm_err(
+DATARMNETf13f5dee10))ret=true;return ret;}int DATARMNETb9e0ebf153(struct sk_buff
+*skb,struct iphdr*skb_ip4h,struct DATARMNETbf4d34b241*DATARMNET54338da2ff){int 
+ret=false;struct tcphdr*tp,DATARMNETd1ff6cd568;struct udphdr*up,
+DATARMNETc82d2f4e16;u16 DATARMNET43b01ff41b=skb_ip4h->ihl*(0xd11+230-0xdf3);int 
+DATARMNETb3ce3d0107=!DATARMNET54338da2ff->DATARMNET1819cae4a3||skb_ip4h->saddr==
+DATARMNET54338da2ff->DATARMNET53d5f671f0.saddr;int DATARMNETb16a9be210=!
+DATARMNET54338da2ff->DATARMNETb035edcfb9||skb_ip4h->daddr==(DATARMNET54338da2ff
+->DATARMNETea422561ef.daddr);int DATARMNET5a94751027=!DATARMNET54338da2ff->
+DATARMNET8b5ace4a98||skb_ip4h->protocol==DATARMNET54338da2ff->proto;int 
+DATARMNETad7ab41bc8=!DATARMNET54338da2ff->DATARMNET5a5907dd87;int 
+DATARMNETf13f5dee10=!DATARMNET54338da2ff->DATARMNET1c959e10ca;if(
+DATARMNET54338da2ff->DATARMNET5a5907dd87||DATARMNET54338da2ff->
+DATARMNET1c959e10ca){if(skb_ip4h->protocol==IPPROTO_TCP){tp=DATARMNETefcaf5fbe9(
+skb,DATARMNET43b01ff41b,sizeof(*tp),&DATARMNETd1ff6cd568);if(!tp){
+DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=false;}else{DATARMNETad7ab41bc8=!
+DATARMNET54338da2ff->DATARMNET5a5907dd87||tp->source==(DATARMNET54338da2ff->
+src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff->DATARMNET1c959e10ca||tp->
+dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}else if(skb_ip4h->protocol==
+IPPROTO_UDP){up=DATARMNETefcaf5fbe9(skb,DATARMNET43b01ff41b,sizeof(*up),&
+DATARMNETc82d2f4e16);if(!up){DATARMNETad7ab41bc8=false;DATARMNETf13f5dee10=false
+;}else{DATARMNETad7ab41bc8=!DATARMNET54338da2ff->DATARMNET5a5907dd87||up->source
+==(DATARMNET54338da2ff->src_port);DATARMNETf13f5dee10=!DATARMNET54338da2ff->
+DATARMNET1c959e10ca||up->dest==(DATARMNET54338da2ff->DATARMNET1e49bc75c8);}}}if(
+(DATARMNETb3ce3d0107)&&(DATARMNETb16a9be210)&&(DATARMNET5a94751027)&&(
+DATARMNETad7ab41bc8)&&(DATARMNETf13f5dee10))ret=true;rm_err(
 "\x53\x48\x53\x5f\x4c\x4c\x3a\x20\x56\x34\x20\x73\x61\x64\x64\x72\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x20\x64\x61\x64\x64\x72\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x2c\x20\x70\x72\x6f\x74\x6f\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x2c\x20\x73\x72\x63\x20\x70\x6f\x72\x74\x20\x25\x75\x2c\x20\x64\x65\x73\x74\x20\x70\x6f\x72\x74\x20\x6d\x61\x74\x63\x68\x20\x25\x75\x20\x20\x70\x72\x6f\x74\x6f\x20\x25\x75" "\n"
 ,DATARMNETb3ce3d0107,DATARMNETb16a9be210,DATARMNET5a94751027,DATARMNETad7ab41bc8
 ,DATARMNETf13f5dee10,skb_ip4h->protocol);return ret;}int DATARMNET8fc45abdc4(
@@ -267,9 +314,11 @@ DATARMNET0bf01e7c6f){struct DATARMNET63d7680df2*node_p;struct hlist_node*tmp;int
  map=DATARMNETecc0627c70.map_mask;int DATARMNETb925972e2a=DATARMNET3874292c18;
 int map_cpu;u32 hash;u8 is_match_found=(0xd2d+202-0xdf7);struct 
 DATARMNETe600c5b727*DATARMNETa4055affd5;struct rmnet_priv*priv;
-DATARMNETefe3dcad0a++;hash=skb_get_hash(skb);spin_lock_bh(&DATARMNETd83ee17944);
-do{hash_for_each_possible_safe(DATARMNET58fe8ac797,node_p,tmp,list,hash){if(hash
-!=node_p->hash)continue;is_match_found=(0xd26+209-0xdf6);node_p->map_cpu=
+DATARMNETefe3dcad0a++;hash=skb_get_hash(skb);if(!(DATARMNET0bf01e7c6f->config&
+RMNET_SHS_STMP_ALL)&&!DATARMNETf4aefff4c2(skb)){DATARMNETe767554e6e(skb);return
+(0xd2d+202-0xdf7);}spin_lock_bh(&DATARMNETd83ee17944);do{
+hash_for_each_possible_safe(DATARMNET58fe8ac797,node_p,tmp,list,hash){if(hash!=
+node_p->hash)continue;is_match_found=(0xd26+209-0xdf6);node_p->map_cpu=
 DATARMNET3874292c18;node_p->map_index=DATARMNET04e8d1b862(node_p->map_cpu,map);
 break;}if(is_match_found)break;if(DATARMNETb925972e2a<(0xd2d+202-0xdf7)){
 DATARMNET68d84e7b98[DATARMNETa1f9420686]++;break;}if(atomic_long_read(&

+ 2 - 2
shs/rmnet_shs_main.c

@@ -40,7 +40,8 @@
 #include <linux/cpumask.h>
 #include <linux/icmp.h>
 #include <linux/inet.h>
-static char*verinfo[]={"\x33\x35\x32\x37\x62\x38\x30\x65",
+static char*verinfo[]={"\x62\x66\x61\x30\x39\x34\x62\x35"
+"\x62\x38\x38\x39\x38\x62\x66\x32","\x33\x35\x32\x37\x62\x38\x30\x65",
 "\x63\x30\x39\x37\x35\x35\x62\x33","\x32\x36\x66\x64\x33\x30\x36\x35",
 "\x65\x36\x66\x64\x34\x31\x33\x37","\x36\x64\x38\x31\x37\x39\x62\x63",
 "\x64\x66\x39\x32\x65\x35\x33\x34","\x30\x38\x61\x39\x34\x38\x64\x61",
@@ -81,7 +82,6 @@ DATARMNET758a55f103
 #define DATARMNET8fadb49f38 (0xd2d+202-0xdf7)
 #define DATARMNET48a89fcc16 (0xd26+209-0xdf6)
 #define DATARMNETbfe901fc62 (0xd2d+202-0xdf7)
-#define DATARMNETaa0602144b 11184810
 DEFINE_SPINLOCK(DATARMNET3764d083f0);DEFINE_HASHTABLE(DATARMNETe603c3a4b3,
 DATARMNET25437d35fd);struct DATARMNETe600c5b727 DATARMNET0997c5650d[
 DATARMNETc6782fed88];int DATARMNETcff375d916[DATARMNETc6782fed88];unsigned int 

+ 5 - 3
shs/rmnet_shs_wq_mem.c

@@ -603,8 +603,9 @@ DATARMNET835a28686c);if(!DATARMNET835a28686c){rm_err("\x25\x73",
 ,idx);memcpy(((char*)DATARMNET835a28686c->data),&idx,sizeof(idx));memcpy(((char*
 )DATARMNET835a28686c->data+sizeof(uint16_t)),(void*)&DATARMNET2fdef9da24[
 (0xd2d+202-0xdf7)],sizeof(DATARMNET2fdef9da24));}void DATARMNET78666f33a1(void){
-struct rmnet_priv*priv;struct DATARMNET9b44b71ee9*ep=NULL;u16 idx=
-(0xd2d+202-0xdf7);u16 count=(0xd2d+202-0xdf7);rm_err(
+struct rmnet_priv*priv;struct rmnet_port*port;struct DATARMNET9b44b71ee9*ep=NULL
+;u16 idx=(0xd2d+202-0xdf7);u16 count=(0xd2d+202-0xdf7);port=DATARMNETecc0627c70.
+port;if(!port){DATARMNET68d84e7b98[DATARMNET42b73d0f3f]++;return;}rm_err(
 "\x53\x48\x53\x5f\x4e\x45\x54\x44\x45\x56\x3a\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x20\x65\x6e\x74\x65\x72\x20\x25\x75" "\n"
 ,idx);list_for_each_entry(ep,&DATARMNET30a3e83974,DATARMNET0763436b8d){count+=
 (0xd26+209-0xdf6);rm_err(
@@ -634,7 +635,8 @@ coal.close.hw_evict;DATARMNETf46265286b[idx].coal_tcp=priv->stats.coal.coal_tcp;
 DATARMNETf46265286b[idx].coal_tcp_bytes=priv->stats.coal.coal_tcp_bytes;
 DATARMNETf46265286b[idx].coal_udp=priv->stats.coal.coal_udp;DATARMNETf46265286b[
 idx].coal_udp_bytes=priv->stats.coal.coal_udp_bytes;DATARMNETf46265286b[idx].
-mux_id=priv->mux_id;strlcpy(DATARMNETf46265286b[idx].name,ep->ep->name,sizeof(
+mux_id=priv->mux_id;DATARMNETf46265286b[idx].pb_marker_seq=port->stats.
+pb_marker_seq;strlcpy(DATARMNETf46265286b[idx].name,ep->ep->name,sizeof(
 DATARMNETf46265286b[idx].name));DATARMNETf46265286b[idx].DATARMNET870c3dafcb=
 priv->stats.coal.coal_pkts;DATARMNETf46265286b[idx].DATARMNET4eb77c78e6=ep->
 DATARMNET4eb77c78e6;DATARMNETf46265286b[idx].DATARMNET257fc4b2d4=ep->

+ 4 - 3
shs/rmnet_shs_wq_mem.h

@@ -15,6 +15,7 @@
 #ifndef DATARMNETe10fe0b1e0
 #define DATARMNETe10fe0b1e0
 #include "rmnet_shs.h"
+#include "rmnet_shs_config.h"
 #define DATARMNET6517f07a36      "\x73\x68\x73"
 #define DATARMNET41be983a65     \
 "\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x63\x61\x70\x73"
@@ -56,9 +57,9 @@ DATARMNET0d682bcb29;u64 DATARMNET20e8fc9db8;u32 hash;u16 DATARMNET42a992465f;u16
  trans_proto;u8 mux_id;};struct __attribute__((__packed__))DATARMNET57ccbe14f3{
 char name[DATARMNET9ae5f81f71];u64 DATARMNET77de6e34f2;u64 hw_evict;u64 
 DATARMNET870c3dafcb;u64 coal_tcp;u64 coal_tcp_bytes;u64 coal_udp;u64 
-coal_udp_bytes;u64 DATARMNET257fc4b2d4;u64 DATARMNET4eb77c78e6;u8 mux_id;};
-extern struct list_head DATARMNET6c23f11e81;extern struct list_head 
-DATARMNETf91b305f4e;extern struct list_head DATARMNET3208cd0982;extern struct 
+coal_udp_bytes;u64 DATARMNET257fc4b2d4;u64 DATARMNET4eb77c78e6;u64 pb_marker_seq
+;u8 mux_id;};extern struct list_head DATARMNET6c23f11e81;extern struct list_head
+ DATARMNETf91b305f4e;extern struct list_head DATARMNET3208cd0982;extern struct 
 list_head DATARMNET922b4752e2;extern struct list_head DATARMNETe46ae760db;enum{
 DATARMNETbd4083a6a4=(0x24f5+499-0x16e8)};struct DATARMNETa41d4c4a12{char*data;
 refcount_t refcnt;};void DATARMNET28a80d526e(struct DATARMNET6c78e47d24*

+ 4 - 0
wlan/Android.mk

@@ -2,11 +2,15 @@ ifneq ($(TARGET_BOARD_AUTO),true)
 ifneq ($(TARGET_BOARD_PLATFORM),qssi)
 
 RMNET_WLAN_DLKM_PLATFORMS_LIST := pineapple
+RMNET_WLAN_DLKM_PLATFORMS_LIST += blair
 
 ifeq ($(call is-board-platform-in-list, $(RMNET_WLAN_DLKM_PLATFORMS_LIST)),true)
 LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 
+#Enabling BAZEL
+LOCAL_MODULE_DDK_BUILD := true
+
 LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
 
 LOCAL_MODULE := rmnet_wlan.ko

+ 6 - 0
wlan/BUILD.bazel

@@ -0,0 +1,6 @@
+load(":define_wlan.bzl", "define_wlan")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+define_wlan("pineapple", "consolidate")
+
+define_wlan("pineapple", "gki")

+ 42 - 0
wlan/define_wlan.bzl

@@ -0,0 +1,42 @@
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+
+def define_wlan(target, variant):
+    kernel_build_variant = "{}_{}".format(target, variant)
+    include_base = "../../../{}".format(native.package_name())
+
+    ddk_module(
+        name = "{}_wlan".format(kernel_build_variant),
+        out = "rmnet_wlan.ko",
+        srcs = [
+            "rmnet_wlan.h",
+            "rmnet_wlan_connection.c",
+            "rmnet_wlan_connection.h",
+            "rmnet_wlan_fragment.c",
+            "rmnet_wlan_fragment.h",
+            "rmnet_wlan_genl.c",
+            "rmnet_wlan_genl.h",
+            "rmnet_wlan_main.c",
+            "rmnet_wlan_stats.c",
+            "rmnet_wlan_stats.h",
+        ],
+        kernel_build = "//msm-kernel:{}".format(kernel_build_variant),
+        deps = [
+            "//msm-kernel:all_headers",
+            "//vendor/qcom/opensource/datarmnet:{}_rmnet_core".format(kernel_build_variant),
+            "//vendor/qcom/opensource/datarmnet:rmnet_core_headers",
+        ],
+        copts = ["-Wno-misleading-indentation"],
+    )
+
+    copy_to_dist_dir(
+        name = "{}_datarment-ext_dist".format(kernel_build_variant),
+        data = [
+            ":{}_wlan".format(kernel_build_variant),
+        ],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+    )