소스 검색

Fastforwarding datarmnet-ext CRT:data-kernel.lnx.2.0-221103 to data-kernel.lnx.3.0 branch

Santosh Sai Krishna 2 년 전
부모
커밋
c736214a1b
4개의 변경된 파일158개의 추가작업 그리고 101개의 파일을 삭제
  1. 8 2
      datarmnet_ext_dlkm_vendor_board.mk
  2. 89 46
      sch/rmnet_sch_main.c
  3. 60 53
      shs/rmnet_shs_main.c
  4. 1 0
      wlan/Android.mk

+ 8 - 2
datarmnet_ext_dlkm_vendor_board.mk

@@ -18,6 +18,10 @@ ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
 	DATA_SHS_DLKM_BOARD_PLATFORMS_LIST += kalama
 	DATA_APS_DLKM_BOARD_PLATFORMS_LIST := taro
 	DATA_APS_DLKM_BOARD_PLATFORMS_LIST += kalama
+	DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST := lahaina
+	DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += taro
+	DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += kalama
+	DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST += bengal
 
 	ifneq ($(TARGET_BOARD_AUTO),true)
 		ifeq ($(call is-board-platform-in-list,$(DATA_OFFLOAD_DLKM_BOARD_PLATFORMS_LIST)),true)
@@ -27,11 +31,13 @@ ifeq ($(TARGET_DATARMNET_EXT_ENABLE), true)
 		endif
 		ifeq ($(call is-board-platform-in-list,$(DATA_SHS_DLKM_BOARD_PLATFORMS_LIST)),true)
 			BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_shs.ko
-			BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_wlan.ko
 		endif
 		ifeq ($(call is-board-platform-in-list,$(DATA_APS_DLKM_BOARD_PLATFORMS_LIST)),true)
 			BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_aps.ko
 			BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_sch.ko
 		endif
+		ifeq ($(call is-board-platform-in-list,$(DATA_WLAN_DLKM_BOARD_PLATFORMS_LIST)),true)
+			BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rmnet_wlan.ko
+		endif
 	endif
-endif
+endif

+ 89 - 46
sch/rmnet_sch_main.c

@@ -18,11 +18,12 @@
 #include <linux/skbuff.h>
 #include <linux/rtnetlink.h>
 #include <net/pkt_sched.h>
-static char*verinfo[]={"\x37\x34\x31\x35\x39\x32\x31\x63",
-"\x61\x65\x32\x34\x34\x61\x39\x64"};module_param_array(verinfo,charp,NULL,
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
+static char*verinfo[]={"\x65\x36\x33\x37\x31\x64\x34\x30",
+"\x37\x34\x31\x35\x39\x32\x31\x63","\x61\x65\x32\x34\x34\x61\x39\x64"};
+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"
-);static const char*DATARMNETf1bb41174a="\x31\x2e\x30";
+);static const char*DATARMNETf1bb41174a="\x31\x2e\x31";
 #define DATARMNETe632b2e0b0 (0xd11+230-0xdf3)
 static const u8 DATARMNET93bdeed8cb[TC_PRIO_MAX+(0xd26+209-0xdf6)]={
 (0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4),(0xd18+223-0xdf4),
@@ -33,73 +34,115 @@ const int DATARMNET91bbdde74c[DATARMNETe632b2e0b0]={(0xbf7+4421-0x1c3c)*
 (0xdf7+2629-0x143c),(0xef7+694-0x112d)*(0xdf7+2629-0x143c),(0xef7+1142-0x132d)*
 (0xdf7+2629-0x143c),(0xeb7+1174-0x132d)*(0xdf7+2629-0x143c)};static const int 
 DATARMNET9dd1382d86[DATARMNETe632b2e0b0]={(0xd35+210-0xdff),(0xd03+244-0xdf1),
-(0xd11+230-0xdf3),(0xd1f+216-0xdf5)};struct DATARMNET74e95d25df{struct 
-qdisc_skb_head DATARMNETb4180393e4[DATARMNETe632b2e0b0];int DATARMNET1de7b3d891[
-DATARMNETe632b2e0b0];int DATARMNETf9afebb887[DATARMNETe632b2e0b0];};static int 
-DATARMNET3a797cc4e9(struct sk_buff*DATARMNET543491eb0f,struct Qdisc*
-DATARMNET9b0193c8c4,struct sk_buff**DATARMNET6af05df5b3){struct 
-DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(DATARMNET9b0193c8c4);unsigned
- int DATARMNET5affe290b8=qdisc_pkt_len(DATARMNET543491eb0f);struct 
-qdisc_skb_head*q;if(likely(DATARMNET9b0193c8c4->q.qlen<qdisc_dev(
-DATARMNET9b0193c8c4)->tx_queue_len)){q=&DATARMNETe823dcf978->DATARMNETb4180393e4
-[DATARMNET93bdeed8cb[DATARMNET543491eb0f->priority&TC_PRIO_MAX]];
-__qdisc_enqueue_tail(DATARMNET543491eb0f,q);qdisc_update_stats_at_enqueue(
-DATARMNET9b0193c8c4,DATARMNET5affe290b8);return NET_XMIT_SUCCESS;}return 
-qdisc_drop(DATARMNET543491eb0f,DATARMNET9b0193c8c4,DATARMNET6af05df5b3);}static 
-u8 DATARMNETf9ac3daa83(struct DATARMNET74e95d25df*DATARMNETe823dcf978){int 
-DATARMNET2372d14a3d,DATARMNET70fa801d65=DATARMNETe632b2e0b0;for(
-DATARMNET2372d14a3d=(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;
-DATARMNET2372d14a3d++){if(!DATARMNETe823dcf978->DATARMNETb4180393e4[
-DATARMNET2372d14a3d].qlen)continue;if(DATARMNETe823dcf978->DATARMNET1de7b3d891[
-DATARMNET2372d14a3d]<=(0xd2d+202-0xdf7)||DATARMNETe823dcf978->
-DATARMNETf9afebb887[DATARMNET2372d14a3d]<=(0xd2d+202-0xdf7)){if(
+(0xd11+230-0xdf3),(0xd1f+216-0xdf5)};static const int DATARMNET14ed95ab67[
+DATARMNETe632b2e0b0]={(0xd11+230-0xdf3),(0xd18+223-0xdf4),(0xd1f+216-0xdf5),
+(0xd26+209-0xdf6)};struct DATARMNET93da852cc2{struct qdisc_skb_head q;int 
+DATARMNET1de7b3d891;int DATARMNETf9afebb887;unsigned int DATARMNETb93c9b44d9;
+unsigned int DATARMNET04fa439380;};struct DATARMNET74e95d25df{struct 
+DATARMNET93da852cc2 DATARMNETb4180393e4[DATARMNETe632b2e0b0];};static int 
+DATARMNETdaae0b9ea8(struct DATARMNET74e95d25df*DATARMNETe823dcf978){int 
+DATARMNET70fa801d65=DATARMNETe632b2e0b0;int DATARMNET3c5d4329d8=
+DATARMNETe632b2e0b0;int DATARMNET2372d14a3d,DATARMNET713b43476b,
+DATARMNETdc41089b89=-(0xd26+209-0xdf6);for(DATARMNET2372d14a3d=(0xd2d+202-0xdf7)
+;DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++){if(
+DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen>
+DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
+DATARMNET04fa439380){DATARMNET713b43476b=DATARMNETe823dcf978->
+DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen-DATARMNETe823dcf978->
+DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNET04fa439380;if(
+DATARMNET713b43476b>=DATARMNETdc41089b89){DATARMNETdc41089b89=
+DATARMNET713b43476b;DATARMNET70fa801d65=DATARMNET2372d14a3d;}}if(
+DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen>
+DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
+DATARMNETb93c9b44d9)DATARMNET3c5d4329d8=DATARMNET2372d14a3d;}if(
+DATARMNET70fa801d65<DATARMNETe632b2e0b0)return DATARMNET70fa801d65;return 
+DATARMNET3c5d4329d8;}static inline void DATARMNET8c1d8c9f65(struct 
+DATARMNET74e95d25df*DATARMNETe823dcf978,int DATARMNET2372d14a3d){
+DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
+DATARMNET1de7b3d891=DATARMNET9dd1382d86[DATARMNET2372d14a3d];DATARMNETe823dcf978
+->DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNETf9afebb887=
+DATARMNET91bbdde74c[DATARMNET2372d14a3d];}static inline void DATARMNET60cff0042c
+(struct DATARMNET74e95d25df*DATARMNETe823dcf978,int DATARMNET2372d14a3d,unsigned
+ int DATARMNETf9d25d31ff){DATARMNETe823dcf978->DATARMNETb4180393e4[
+DATARMNET2372d14a3d].DATARMNETb93c9b44d9=DATARMNETf9d25d31ff/(0xd27+224-0xdfd)*
+DATARMNET14ed95ab67[DATARMNET2372d14a3d];DATARMNETe823dcf978->
+DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNET04fa439380=DATARMNETe823dcf978
+->DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNETb93c9b44d9<<
+(0xd26+209-0xdf6);}static int DATARMNET3a797cc4e9(struct sk_buff*
+DATARMNET543491eb0f,struct Qdisc*DATARMNET9b0193c8c4,struct sk_buff**
+DATARMNET6af05df5b3){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(
+DATARMNET9b0193c8c4);unsigned int DATARMNET5affe290b8=qdisc_pkt_len(
+DATARMNET543491eb0f);int DATARMNETba251b7c9f;int DATARMNETa9b7aedc43;struct 
+sk_buff*DATARMNET7495e55ca2;DATARMNETba251b7c9f=DATARMNET93bdeed8cb[
+DATARMNET543491eb0f->priority&TC_PRIO_MAX];if(unlikely(DATARMNET9b0193c8c4->q.
+qlen>=qdisc_dev(DATARMNET9b0193c8c4)->tx_queue_len)){DATARMNETa9b7aedc43=
+DATARMNETdaae0b9ea8(DATARMNETe823dcf978);if(DATARMNETa9b7aedc43<
+DATARMNETe632b2e0b0&&DATARMNETa9b7aedc43!=DATARMNETba251b7c9f){
+DATARMNET7495e55ca2=__qdisc_dequeue_head(&DATARMNETe823dcf978->
+DATARMNETb4180393e4[DATARMNETa9b7aedc43].q);if(likely(DATARMNET7495e55ca2)){
+DATARMNET9b0193c8c4->qstats.backlog-=qdisc_pkt_len(DATARMNET7495e55ca2);
+DATARMNET9b0193c8c4->q.qlen--;qdisc_drop(DATARMNET7495e55ca2,DATARMNET9b0193c8c4
+,DATARMNET6af05df5b3);}}else{return qdisc_drop(DATARMNET543491eb0f,
+DATARMNET9b0193c8c4,DATARMNET6af05df5b3);}}__qdisc_enqueue_tail(
+DATARMNET543491eb0f,&DATARMNETe823dcf978->DATARMNETb4180393e4[
+DATARMNETba251b7c9f].q);qdisc_update_stats_at_enqueue(DATARMNET9b0193c8c4,
+DATARMNET5affe290b8);return NET_XMIT_SUCCESS;}static u8 DATARMNETf9ac3daa83(
+struct DATARMNET74e95d25df*DATARMNETe823dcf978){int DATARMNET2372d14a3d,
+DATARMNET70fa801d65=DATARMNETe632b2e0b0;for(DATARMNET2372d14a3d=
+(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
+{if(!DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.qlen)
+continue;if(DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
+DATARMNET1de7b3d891<=(0xd2d+202-0xdf7)||DATARMNETe823dcf978->DATARMNETb4180393e4
+[DATARMNET2372d14a3d].DATARMNETf9afebb887<=(0xd2d+202-0xdf7)){if(
 DATARMNET2372d14a3d<DATARMNET70fa801d65)DATARMNET70fa801d65=DATARMNET2372d14a3d;
 continue;}return DATARMNET2372d14a3d;}for(DATARMNET2372d14a3d=(0xd2d+202-0xdf7);
-DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++){
-DATARMNETe823dcf978->DATARMNET1de7b3d891[DATARMNET2372d14a3d]=
-DATARMNET9dd1382d86[DATARMNET2372d14a3d];DATARMNETe823dcf978->
-DATARMNETf9afebb887[DATARMNET2372d14a3d]=DATARMNET91bbdde74c[DATARMNET2372d14a3d
-];}return DATARMNET70fa801d65;}static struct sk_buff*DATARMNET11bbc6360d(struct 
-Qdisc*DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=
-qdisc_priv(DATARMNET9b0193c8c4);struct sk_buff*DATARMNET543491eb0f=NULL;u8 
+DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
+DATARMNET8c1d8c9f65(DATARMNETe823dcf978,DATARMNET2372d14a3d);return 
+DATARMNET70fa801d65;}static struct sk_buff*DATARMNET11bbc6360d(struct Qdisc*
+DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(
+DATARMNET9b0193c8c4);struct sk_buff*DATARMNET543491eb0f=NULL;u8 
 DATARMNET2372d14a3d;DATARMNET2372d14a3d=DATARMNETf9ac3daa83(DATARMNETe823dcf978)
 ;if(DATARMNET2372d14a3d<DATARMNETe632b2e0b0){DATARMNET543491eb0f=
 __qdisc_dequeue_head(&DATARMNETe823dcf978->DATARMNETb4180393e4[
-DATARMNET2372d14a3d]);if(likely(DATARMNET543491eb0f)){DATARMNETe823dcf978->
-DATARMNET1de7b3d891[DATARMNET2372d14a3d]--;DATARMNETe823dcf978->
-DATARMNETf9afebb887[DATARMNET2372d14a3d]-=qdisc_pkt_len(DATARMNET543491eb0f);
+DATARMNET2372d14a3d].q);if(likely(DATARMNET543491eb0f)){DATARMNETe823dcf978->
+DATARMNETb4180393e4[DATARMNET2372d14a3d].DATARMNET1de7b3d891--;
+DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
+DATARMNETf9afebb887-=qdisc_pkt_len(DATARMNET543491eb0f);
 qdisc_update_stats_at_dequeue(DATARMNET9b0193c8c4,DATARMNET543491eb0f);}}return 
 DATARMNET543491eb0f;}static struct sk_buff*DATARMNET5842e6aac7(struct Qdisc*
 DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(
 DATARMNET9b0193c8c4);struct sk_buff*DATARMNET543491eb0f=NULL;u8 
 DATARMNET2372d14a3d;DATARMNET2372d14a3d=DATARMNETf9ac3daa83(DATARMNETe823dcf978)
 ;if(DATARMNET2372d14a3d<DATARMNETe632b2e0b0)DATARMNET543491eb0f=
-DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].head;return 
+DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.head;return 
 DATARMNET543491eb0f;}static int DATARMNET757a7de682(struct Qdisc*
 DATARMNET9b0193c8c4,struct nlattr*DATARMNET8bdeb8bf5c,struct netlink_ext_ack*
 DATARMNET79a1f177ed){struct DATARMNET74e95d25df*DATARMNETe823dcf978=qdisc_priv(
 DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(DATARMNET2372d14a3d=
 (0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
 {qdisc_skb_head_init(&DATARMNETe823dcf978->DATARMNETb4180393e4[
-DATARMNET2372d14a3d]);DATARMNETe823dcf978->DATARMNET1de7b3d891[
-DATARMNET2372d14a3d]=DATARMNET9dd1382d86[DATARMNET2372d14a3d];
-DATARMNETe823dcf978->DATARMNETf9afebb887[DATARMNET2372d14a3d]=
-DATARMNET91bbdde74c[DATARMNET2372d14a3d];}DATARMNET9b0193c8c4->flags|=
+DATARMNET2372d14a3d].q);DATARMNET8c1d8c9f65(DATARMNETe823dcf978,
+DATARMNET2372d14a3d);DATARMNET60cff0042c(DATARMNETe823dcf978,DATARMNET2372d14a3d
+,qdisc_dev(DATARMNET9b0193c8c4)->tx_queue_len);}DATARMNET9b0193c8c4->flags|=
 TCQ_F_CAN_BYPASS;return(0xd2d+202-0xdf7);}static void DATARMNET9593ab9587(struct
  Qdisc*DATARMNET9b0193c8c4){struct DATARMNET74e95d25df*DATARMNETe823dcf978=
 qdisc_priv(DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(DATARMNET2372d14a3d=
 (0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;DATARMNET2372d14a3d++)
-{kfree_skb_list(DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].
+{kfree_skb_list(DATARMNETe823dcf978->DATARMNETb4180393e4[DATARMNET2372d14a3d].q.
 head);qdisc_skb_head_init(&DATARMNETe823dcf978->DATARMNETb4180393e4[
-DATARMNET2372d14a3d]);DATARMNETe823dcf978->DATARMNET1de7b3d891[
-DATARMNET2372d14a3d]=DATARMNET9dd1382d86[DATARMNET2372d14a3d];
-DATARMNETe823dcf978->DATARMNETf9afebb887[DATARMNET2372d14a3d]=
-DATARMNET91bbdde74c[DATARMNET2372d14a3d];}}static struct Qdisc_ops 
+DATARMNET2372d14a3d].q);DATARMNET8c1d8c9f65(DATARMNETe823dcf978,
+DATARMNET2372d14a3d);DATARMNET60cff0042c(DATARMNETe823dcf978,DATARMNET2372d14a3d
+,qdisc_dev(DATARMNET9b0193c8c4)->tx_queue_len);}}static int DATARMNET6647342968(
+struct Qdisc*DATARMNET9b0193c8c4,unsigned int qlen){struct DATARMNET74e95d25df*
+DATARMNETe823dcf978=qdisc_priv(DATARMNET9b0193c8c4);int DATARMNET2372d14a3d;for(
+DATARMNET2372d14a3d=(0xd2d+202-0xdf7);DATARMNET2372d14a3d<DATARMNETe632b2e0b0;
+DATARMNET2372d14a3d++)DATARMNET60cff0042c(DATARMNETe823dcf978,
+DATARMNET2372d14a3d,qlen);return(0xd2d+202-0xdf7);}static struct Qdisc_ops 
 DATARMNET9afaec21de __read_mostly={.id="\x72\x6d\x6e\x65\x74\x5f\x73\x63\x68",.
 priv_size=sizeof(struct DATARMNET74e95d25df),.enqueue=DATARMNET3a797cc4e9,.
 dequeue=DATARMNET11bbc6360d,.peek=DATARMNET5842e6aac7,.init=DATARMNET757a7de682,
-.reset=DATARMNET9593ab9587,.owner=THIS_MODULE,};static int __init 
-DATARMNETe97da0a844(void){pr_info(
+.reset=DATARMNET9593ab9587,.change_tx_queue_len=DATARMNET6647342968,.owner=
+THIS_MODULE,};static int __init DATARMNETe97da0a844(void){pr_info(
 "\x73\x63\x68\x3a\x20\x69\x6e\x69\x74\x20\x28\x25\x73\x29" "\n",
 DATARMNETf1bb41174a);return register_qdisc(&DATARMNET9afaec21de);}static void 
 __exit DATARMNET1dc9099e88(void){unregister_qdisc(&DATARMNET9afaec21de);}

+ 60 - 53
shs/rmnet_shs_main.c

@@ -40,15 +40,16 @@
 #include <linux/cpumask.h>
 #include <linux/icmp.h>
 #include <linux/inet.h>
-static char*verinfo[]={"\x36\x38\x36\x36\x36\x32\x33\x32",
-"\x65\x32\x31\x38\x66\x34\x35\x31","\x63\x66\x39\x62\x62\x61\x63\x34",
-"\x30\x66\x36\x63\x61\x30\x31\x30","\x30\x36\x61\x33\x66\x33\x34\x62",
-"\x38\x65\x30\x61\x35\x38\x36\x62","\x35\x66\x64\x35\x63\x66\x66\x37",
-"\x31\x39\x64\x61\x63\x36\x32\x36","\x35\x65\x31\x64\x38\x37\x39\x62",
-"\x37\x34\x31\x35\x39\x32\x31\x63","\x31\x35\x33\x64\x31\x61\x62\x31",
-"\x34\x66\x64\x35\x39\x63\x66\x35","\x38\x61\x64\x37\x64\x32\x62\x65",
-"\x63\x30\x32\x62\x61\x39\x30\x65"};module_param_array(verinfo,charp,NULL,
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
+static char*verinfo[]={"\x35\x61\x66\x31\x30\x31\x31\x64",
+"\x36\x38\x36\x36\x36\x32\x33\x32","\x65\x32\x31\x38\x66\x34\x35\x31",
+"\x63\x66\x39\x62\x62\x61\x63\x34","\x30\x66\x36\x63\x61\x30\x31\x30",
+"\x30\x36\x61\x33\x66\x33\x34\x62","\x38\x65\x30\x61\x35\x38\x36\x62",
+"\x35\x66\x64\x35\x63\x66\x66\x37","\x31\x39\x64\x61\x63\x36\x32\x36",
+"\x35\x65\x31\x64\x38\x37\x39\x62","\x37\x34\x31\x35\x39\x32\x31\x63",
+"\x31\x35\x33\x64\x31\x61\x62\x31","\x34\x66\x64\x35\x39\x63\x66\x35",
+"\x38\x61\x64\x37\x64\x32\x62\x65","\x63\x30\x32\x62\x61\x39\x30\x65"};
+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"
 );
 #define DATARMNET2f67183a86 2000000
@@ -61,6 +62,7 @@ static char*verinfo[]={"\x36\x38\x36\x36\x36\x32\x33\x32",
 #define DATARMNET00d5787aad 2000000
 #define DATARMNET8948dc953d (0xd0a+237-0xdf2)
 #define DATARMNET20dc6bb36b (0xd26+209-0xdf6)
+#define DATARMNETafc650134e (0xd26+209-0xdf6)
 #define DATARMNET832731a933(CPU) (per_cpu(softnet_data, CPU).input_pkt_queue)
 #define DATARMNET3de2536baf(CPU) (per_cpu(softnet_data, CPU).process_queue)
 #define DATARMNETd2d15e7f67(CPU) (DATARMNET832731a933(CPU).qlen + \
@@ -124,7 +126,7 @@ DATARMNETb7ddf3c5dd[DATARMNET0e398136dc]++;rcu_read_lock();DATARMNETaeb4918e65=
 rcu_dereference(DATARMNETb4180393e4->rps_map);rcu_assign_pointer(
 DATARMNETb4180393e4->rps_map,map);if(DATARMNETaeb4918e65)kfree(
 DATARMNETaeb4918e65);free_cpumask_var(mask);rcu_read_unlock();return
-(0xd2d+202-0xdf7);}int DATARMNET9303cec796(struct sk_buff*skb){int 
+(0xd2d+202-0xdf7);}int DATARMNET9303cec796(struct sk_buff*skb,u8*ret){int 
 DATARMNETbd864aa442=(0xd2d+202-0xdf7);struct iphdr*ip4h,DATARMNETc00baf31c3;
 struct ipv6hdr*ip6h,DATARMNETcf1d9e2c1e;s64 DATARMNETe30c7cdaf5;struct 
 timespec64 time;int DATARMNET441081ddc0;if(rmnet_module_hook_perf_ingress(&
@@ -146,47 +148,48 @@ HRTIMER_MODE_PINNED);__pm_stay_awake(DATARMNETecc0627c70.ws);DATARMNET064fbe9e3a
 ){hrtimer_start(&DATARMNETecc0627c70.DATARMNET645fb3b468,ns_to_ktime(
 (0xdf7+3019-0x160c)*DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);
 if(DATARMNETe30c7cdaf5>DATARMNET12f3a261a0&&DATARMNETecc0627c70.
-DATARMNETdd3caf9200){DATARMNET930a441406[DATARMNETe35e238437]++;}}else{
-DATARMNET930a441406[DATARMNETe35e238437]++;}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);}}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);(void)ktime_get_boottime_ts64(&
-time);DATARMNETe30c7cdaf5=ktime_ms_delta(ktime_set(time.tv_sec,time.tv_nsec),
-DATARMNETecc0627c70.DATARMNETdd3caf9200);if(hrtimer_active(&DATARMNETecc0627c70.
-hrtimer_wake)){hrtimer_cancel(&DATARMNETecc0627c70.hrtimer_wake);hrtimer_start(&
-DATARMNETecc0627c70.hrtimer_wake,ns_to_ktime((0xbf7+4070-0x172d)*
-DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);DATARMNET064fbe9e3a=
-(0xd1f+216-0xdf5);}else{hrtimer_start(&DATARMNETecc0627c70.hrtimer_wake,
-ns_to_ktime((0xbf7+4070-0x172d)*DATARMNET68fc0be252),HRTIMER_MODE_REL|
-HRTIMER_MODE_PINNED);__pm_stay_awake(DATARMNETecc0627c70.ws);DATARMNET064fbe9e3a
-=(0xd1f+216-0xdf5);}if(!hrtimer_active(&DATARMNETecc0627c70.DATARMNET645fb3b468)
-){hrtimer_start(&DATARMNETecc0627c70.DATARMNET645fb3b468,ns_to_ktime(
-(0xdf7+3019-0x160c)*DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);
-if(DATARMNETe30c7cdaf5>DATARMNET12f3a261a0&&DATARMNETecc0627c70.
-DATARMNETdd3caf9200){DATARMNET930a441406[DATARMNETe35e238437]++;}}else{
-DATARMNET930a441406[DATARMNETe35e238437]++;}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,
+DATARMNETdd3caf9200){DATARMNET930a441406[DATARMNETe35e238437]++;}else{*ret=
+(0xd26+209-0xdf6);}}else{DATARMNET930a441406[DATARMNETe35e238437]++;}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);}}
+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);(void)
+ktime_get_boottime_ts64(&time);DATARMNETe30c7cdaf5=ktime_ms_delta(ktime_set(time
+.tv_sec,time.tv_nsec),DATARMNETecc0627c70.DATARMNETdd3caf9200);if(hrtimer_active
+(&DATARMNETecc0627c70.hrtimer_wake)){hrtimer_cancel(&DATARMNETecc0627c70.
+hrtimer_wake);hrtimer_start(&DATARMNETecc0627c70.hrtimer_wake,ns_to_ktime(
+(0xbf7+4070-0x172d)*DATARMNET68fc0be252),HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);
+DATARMNET064fbe9e3a=(0xd1f+216-0xdf5);}else{hrtimer_start(&DATARMNETecc0627c70.
+hrtimer_wake,ns_to_ktime((0xbf7+4070-0x172d)*DATARMNET68fc0be252),
+HRTIMER_MODE_REL|HRTIMER_MODE_PINNED);__pm_stay_awake(DATARMNETecc0627c70.ws);
+DATARMNET064fbe9e3a=(0xd1f+216-0xdf5);}if(!hrtimer_active(&DATARMNETecc0627c70.
+DATARMNET645fb3b468)){hrtimer_start(&DATARMNETecc0627c70.DATARMNET645fb3b468,
+ns_to_ktime((0xdf7+3019-0x160c)*DATARMNET68fc0be252),HRTIMER_MODE_REL|
+HRTIMER_MODE_PINNED);if(DATARMNETe30c7cdaf5>DATARMNET12f3a261a0&&
+DATARMNETecc0627c70.DATARMNETdd3caf9200){DATARMNET930a441406[DATARMNETe35e238437
+]++;}else{*ret=(0xd26+209-0xdf6);}}else{DATARMNET930a441406[DATARMNETe35e238437]
+++;}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);}}DATARMNETf623862dd4:break;default:break;}
 done:DATARMNETda96251102(DATARMNETcd24fca747,DATARMNET116c96c236,
@@ -770,8 +773,12 @@ node_p;struct hlist_node*tmp;int map=DATARMNETecc0627c70.map_mask;unsigned long
 ht_flags;int DATARMNETcfb5dc7296;int map_cpu;u32 DATARMNET5c4a331b9c,hash;u8 
 is_match_found=(0xd2d+202-0xdf7);u8 DATARMNET935af10724=(0xd2d+202-0xdf7);u8 
 DATARMNET7c5ef97eab=(0xd2d+202-0xdf7);struct DATARMNETe600c5b727*
-DATARMNETa4055affd5;struct rmnet_priv*priv;if(!(DATARMNET0bf01e7c6f->config&
-RMNET_SHS_STMP_ALL)&&!DATARMNET9303cec796(skb)){DATARMNETe767554e6e(skb);return
+DATARMNETa4055affd5;struct rmnet_priv*priv;u8 DATARMNET5b3782c91e=
+(0xd2d+202-0xdf7);struct DATARMNET177911299b DATARMNET9f249e95ee;if(!(
+DATARMNET0bf01e7c6f->config&RMNET_SHS_STMP_ALL)&&!DATARMNET9303cec796(skb,&
+DATARMNET5b3782c91e)){if(DATARMNET5b3782c91e){DATARMNETe767554e6e(skb);
+DATARMNET8d0d510d45(DATARMNETafc650134e,&DATARMNET9f249e95ee);
+DATARMNETb5d58adbe7(&DATARMNET9f249e95ee);}else{DATARMNETe767554e6e(skb);}return
 (0xd2d+202-0xdf7);}if((unlikely(!map))||!DATARMNETecc0627c70.DATARMNETfc89d842ae
 ){DATARMNETe767554e6e(skb);DATARMNET015fb2ba0e(DATARMNET720469c0a9,
 DATARMNETe0fee0991a,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),

+ 1 - 0
wlan/Android.mk

@@ -5,6 +5,7 @@ RMNET_WLAN_DLKM_PLATFORMS_LIST := lahaina
 RMNET_WLAN_DLKM_PLATFORMS_LIST += holi
 RMNET_WLAN_DLKM_PLATFORMS_LIST += taro
 RMNET_WLAN_DLKM_PLATFORMS_LIST += kalama
+RMNET_WLAN_DLKM_PLATFORMS_LIST += bengal
 
 ifeq ($(call is-board-platform-in-list, $(RMNET_WLAN_DLKM_PLATFORMS_LIST)),true)
 LOCAL_PATH := $(call my-dir)