summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Tranchetti <quic_stranche@quicinc.com>2022-05-05 10:42:31 -0700
committerSean Tranchetti <quic_stranche@quicinc.com>2022-06-09 09:04:55 -0700
commit4456a2029a9f696a7ddc0d7c694a82845cc484ad (patch)
treedc1a2169db0151e7f30dcfd69af31119f7c9284e
parentf3b24a59ae76b823a217b24bc2cd8c13b34ee25a (diff)
downloaddatarmnet-ext-4456a2029a9f696a7ddc0d7c694a82845cc484ad.tar.gz
Updates modules to version I9df774e092cc6b420ed46206101e31f6e218f451
Updates modules to version I9df774e092cc6b420ed46206101e31f6e218f451. Change-Id: I9df774e092cc6b420ed46206101e31f6e218f451 Signed-off-by: Sean Tranchetti <quic_stranche@quicinc.com>
-rw-r--r--aps/rmnet_aps_main.c25
-rw-r--r--offload/rmnet_offload_engine.c32
-rw-r--r--offload/rmnet_offload_main.c70
-rw-r--r--offload/rmnet_offload_main.h19
-rw-r--r--perf/rmnet_perf_main.c32
-rw-r--r--perf_tether/rmnet_perf_tether_main.c33
-rw-r--r--shs/rmnet_shs.h4
-rw-r--r--shs/rmnet_shs_config.c27
-rw-r--r--shs/rmnet_shs_main.c119
-rw-r--r--shs/rmnet_shs_wq.c37
-rw-r--r--shs/rmnet_shs_wq_genl.c21
-rw-r--r--wlan/rmnet_wlan_connection.c15
-rw-r--r--wlan/rmnet_wlan_main.c15
13 files changed, 249 insertions, 200 deletions
diff --git a/aps/rmnet_aps_main.c b/aps/rmnet_aps_main.c
index fde175e..3270b35 100644
--- a/aps/rmnet_aps_main.c
+++ b/aps/rmnet_aps_main.c
@@ -17,12 +17,14 @@
#include <net/ip.h>
#include <net/ipv6.h>
#include "rmnet_config.h"
+#include "rmnet_module.h"
#include "rmnet_aps.h"
#include "rmnet_aps_genl.h"
-static char*verinfo[]={"\x33\x32\x61\x36\x65\x62\x61\x39",
-"\x36\x39\x30\x35\x35\x36\x38\x65","\x37\x34\x31\x35\x39\x32\x31\x63",
-"\x39\x66\x36\x36\x38\x31\x62\x34"};module_param_array(verinfo,charp,NULL,
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
+static char*verinfo[]={"\x65\x32\x31\x38\x66\x34\x35\x31",
+"\x33\x32\x61\x36\x65\x62\x61\x39","\x36\x39\x30\x35\x35\x36\x38\x65",
+"\x37\x34\x31\x35\x39\x32\x31\x63","\x39\x66\x36\x36\x38\x31\x62\x34"};
+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 DATARMNET63ff5c35c2 (0xd26+209-0xdf6)
@@ -490,7 +492,10 @@ DATARMNET912d2a7edd;if(aps_cb->DATARMNET91119c34ed&&skb_hwtstamps(
DATARMNET543491eb0f)->hwtstamp&&DATARMNETe7a1ab1dab){DATARMNET912d2a7edd=
ktime_get_boottime();if(ktime_sub(DATARMNET912d2a7edd,skb_hwtstamps(
DATARMNET543491eb0f)->hwtstamp)>DATARMNETe7a1ab1dab)return-ETIMEDOUT;}return
-(0xd2d+202-0xdf7);}static int __init DATARMNET0718a3fa4c(void){int
+(0xd2d+202-0xdf7);}static const struct rmnet_module_hook_register_info
+DATARMNET509284caa6[]={{.hooknum=RMNET_MODULE_HOOK_APS_PRE_QUEUE,.func=
+DATARMNETe0c7b9d5a4,},{.hooknum=RMNET_MODULE_HOOK_APS_POST_QUEUE,.func=
+DATARMNET6ab4bbdaf4,},};static int __init DATARMNET0718a3fa4c(void){int
DATARMNETb14e52a504;pr_info(
"\x61\x70\x73\x3a\x20\x69\x6e\x69\x74\x20\x28\x25\x73\x29" "\n",
DATARMNETe5ef0e617c);DATARMNETb14e52a504=DATARMNETcfa8d492f8();if(
@@ -498,11 +503,13 @@ DATARMNETb14e52a504){pr_err(
"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x72\x65\x67\x69\x73\x74\x65\x72\x20\x67\x65\x6e\x6c\x20\x66\x61\x6d\x69\x6c\x79" "\n"
);return DATARMNETb14e52a504;}register_netdevice_notifier(&DATARMNETc580548769);
rcu_assign_pointer(rmnet_aps_pre_queue,DATARMNETe0c7b9d5a4);rcu_assign_pointer(
-rmnet_aps_post_queue,DATARMNET6ab4bbdaf4);mutex_lock(&DATARMNETd7b5a80f84);
-DATARMNET54b95e4416=true;mutex_unlock(&DATARMNETd7b5a80f84);return
-(0xd2d+202-0xdf7);}static void __exit DATARMNETff67054ba9(void){
+rmnet_aps_post_queue,DATARMNET6ab4bbdaf4);rmnet_module_hook_register(
+DATARMNET509284caa6,ARRAY_SIZE(DATARMNET509284caa6));mutex_lock(&
+DATARMNETd7b5a80f84);DATARMNET54b95e4416=true;mutex_unlock(&DATARMNETd7b5a80f84)
+;return(0xd2d+202-0xdf7);}static void __exit DATARMNETff67054ba9(void){
rcu_assign_pointer(rmnet_aps_pre_queue,NULL);rcu_assign_pointer(
-rmnet_aps_post_queue,NULL);synchronize_rcu();mutex_lock(&DATARMNETd7b5a80f84);
+rmnet_aps_post_queue,NULL);rmnet_module_hook_unregister(DATARMNET509284caa6,
+ARRAY_SIZE(DATARMNET509284caa6));mutex_lock(&DATARMNETd7b5a80f84);
DATARMNET54b95e4416=false;DATARMNET9ac8a34003();mutex_unlock(&
DATARMNETd7b5a80f84);DATARMNET446f780f19((0xd2d+202-0xdf7),DATARMNET94016043b8);
cancel_delayed_work_sync(&DATARMNET3481998252);del_timer_sync(&
diff --git a/offload/rmnet_offload_engine.c b/offload/rmnet_offload_engine.c
index 1d1f6c5..2e075b1 100644
--- a/offload/rmnet_offload_engine.c
+++ b/offload/rmnet_offload_engine.c
@@ -1,4 +1,5 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -14,6 +15,7 @@
#include <linux/list.h>
#include <linux/hashtable.h>
#include "rmnet_descriptor.h"
+#include "rmnet_module.h"
#include "rmnet_offload_state.h"
#include "rmnet_offload_engine.h"
#include "rmnet_offload_main.h"
@@ -94,20 +96,24 @@ DATARMNETa00cda79d0(DATARMNETf3f92fc0b9);DATARMNETa3055c21f2(DATARMNET6745427f98
DATARMNET6745427f98;}static void DATARMNETbe30d096c6(void){LIST_HEAD(
DATARMNET6f9bfa17e6);DATARMNET664568fcd0();if(DATARMNETae70636c90(&
DATARMNET6f9bfa17e6))DATARMNETa00cda79d0(DATARMNET5727f095ec);
-DATARMNET6a76048590();DATARMNETc70e73c8d4(&DATARMNET6f9bfa17e6);}void
+DATARMNET6a76048590();DATARMNETc70e73c8d4(&DATARMNET6f9bfa17e6);}static const
+struct rmnet_module_hook_register_info DATARMNETcbc211d052={.hooknum=
+RMNET_MODULE_HOOK_OFFLOAD_CHAIN_END,.func=DATARMNETbe30d096c6,};void
DATARMNETd4230b6bfe(void){rcu_assign_pointer(rmnet_perf_chain_end,
-DATARMNETbe30d096c6);}void DATARMNET560e127137(void){rcu_assign_pointer(
-rmnet_perf_chain_end,NULL);}int DATARMNET241493ab9a(u64 DATARMNET0470698d6c,u64
-DATARMNETfeff65e096){LIST_HEAD(DATARMNET6f9bfa17e6);u32 DATARMNET737bbd41c3=
-(0xd2d+202-0xdf7);if(DATARMNET0470698d6c==DATARMNET5fe3af8828||
-DATARMNETfeff65e096==DATARMNET2d89680280)return(0xd2d+202-0xdf7);switch(
-DATARMNETfeff65e096){case DATARMNET03daf91a60:DATARMNET737bbd41c3=
-DATARMNET1993bae165(DATARMNETa656f324b2,&DATARMNET6f9bfa17e6);break;case
-DATARMNET88a9920663:DATARMNET737bbd41c3=DATARMNET1993bae165(DATARMNETfd5c3d30e5,
-&DATARMNET6f9bfa17e6);break;case DATARMNET5fe3af8828:DATARMNET737bbd41c3=
-DATARMNETae70636c90(&DATARMNET6f9bfa17e6);break;}DATARMNETbad3b5165e(
-DATARMNETddf572458d,DATARMNET737bbd41c3);DATARMNETc70e73c8d4(&
-DATARMNET6f9bfa17e6);return(0xd2d+202-0xdf7);}void DATARMNETa3055c21f2(struct
+DATARMNETbe30d096c6);rmnet_module_hook_register(&DATARMNETcbc211d052,
+(0xd26+209-0xdf6));}void DATARMNET560e127137(void){rcu_assign_pointer(
+rmnet_perf_chain_end,NULL);rmnet_module_hook_unregister_no_sync(&
+DATARMNETcbc211d052,(0xd26+209-0xdf6));}int DATARMNET241493ab9a(u64
+DATARMNET0470698d6c,u64 DATARMNETfeff65e096){LIST_HEAD(DATARMNET6f9bfa17e6);u32
+DATARMNET737bbd41c3=(0xd2d+202-0xdf7);if(DATARMNET0470698d6c==
+DATARMNET5fe3af8828||DATARMNETfeff65e096==DATARMNET2d89680280)return
+(0xd2d+202-0xdf7);switch(DATARMNETfeff65e096){case DATARMNET03daf91a60:
+DATARMNET737bbd41c3=DATARMNET1993bae165(DATARMNETa656f324b2,&DATARMNET6f9bfa17e6
+);break;case DATARMNET88a9920663:DATARMNET737bbd41c3=DATARMNET1993bae165(
+DATARMNETfd5c3d30e5,&DATARMNET6f9bfa17e6);break;case DATARMNET5fe3af8828:
+DATARMNET737bbd41c3=DATARMNETae70636c90(&DATARMNET6f9bfa17e6);break;}
+DATARMNETbad3b5165e(DATARMNETddf572458d,DATARMNET737bbd41c3);DATARMNETc70e73c8d4
+(&DATARMNET6f9bfa17e6);return(0xd2d+202-0xdf7);}void DATARMNETa3055c21f2(struct
DATARMNETd7c9631acd*DATARMNETaa568481cf,struct list_head*DATARMNET6f9bfa17e6){
struct DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();struct
rmnet_frag_descriptor*DATARMNETd74aeaa49a,*DATARMNETa1625e27e2,*
diff --git a/offload/rmnet_offload_main.c b/offload/rmnet_offload_main.c
index 7a2c72e..03917e6 100644
--- a/offload/rmnet_offload_main.c
+++ b/offload/rmnet_offload_main.c
@@ -18,14 +18,15 @@
#include "rmnet_descriptor.h"
#include "rmnet_handlers.h"
#include "rmnet_map.h"
+#include "rmnet_module.h"
#include "rmnet_offload_main.h"
#include "rmnet_offload_state.h"
#include "rmnet_offload_engine.h"
#include "rmnet_offload_stats.h"
-static char*verinfo[]={"\x32\x61\x34\x34\x66\x36\x62\x65",
-"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x31\x32\x39\x36\x62\x30\x39"};
-module_param_array(verinfo,charp,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
-verinfo,
+static char*verinfo[]={"\x65\x32\x31\x38\x66\x34\x35\x31",
+"\x32\x61\x34\x34\x66\x36\x62\x65","\x37\x34\x31\x35\x39\x32\x31\x63",
+"\x34\x31\x32\x39\x36\x62\x30\x39"};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 DEFINE_SPINLOCK(DATARMNET0b5e447f18);static u32 DATARMNETcb7325e02d(
struct DATARMNETd812bcdbb5*DATARMNET458b70e7e5){struct DATARMNET4287f07234*
@@ -179,7 +180,7 @@ DATARMNET5affe290b8-DATARMNET8814564ab9->DATARMNET4ca5ac9de1-DATARMNET8814564ab9
->DATARMNET0aeee57ceb;if(DATARMNET458b70e7e5->DATARMNET8f59f5a745)
DATARMNETa00cda79d0(DATARMNET52b7da9033);DATARMNET458b70e7e5->
DATARMNET719f68fb88=DATARMNET9d1b321642;return false;}static void
-DATARMNET29e8d137c4(struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct
+DATARMNETb56d685c50(struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct
rmnet_port*DATARMNETf0d9de7e2f){struct DATARMNET70f3b87b5d*DATARMNETe05748b000=
DATARMNETc2a630b113();struct DATARMNETd812bcdbb5 DATARMNET458b70e7e5;LIST_HEAD(
DATARMNET6f9bfa17e6);memset(&DATARMNET458b70e7e5,(0xd2d+202-0xdf7),sizeof(
@@ -196,33 +197,38 @@ DATARMNET806c6f8e60;}if(!DATARMNETfbf5798e15(&DATARMNET458b70e7e5,&
DATARMNET6f9bfa17e6))goto DATARMNET806c6f8e60;goto DATARMNETbf4095f79e;
DATARMNET806c6f8e60:DATARMNET19d190f2bd(&DATARMNET458b70e7e5,&
DATARMNET6f9bfa17e6);DATARMNETbf4095f79e:DATARMNET6a76048590();
-DATARMNETc70e73c8d4(&DATARMNET6f9bfa17e6);}void DATARMNET664568fcd0(void){
-spin_lock_bh(&DATARMNET0b5e447f18);}void DATARMNET6a76048590(void){
-spin_unlock_bh(&DATARMNET0b5e447f18);}void DATARMNET818b960147(void){
-rcu_assign_pointer(rmnet_perf_desc_entry,DATARMNET29e8d137c4);}void
-DATARMNETba38823a2f(void){rcu_assign_pointer(rmnet_perf_desc_entry,NULL);}bool
-DATARMNET19eb0de3b2(void){void(*DATARMNET27ebcde4bf)(struct
-rmnet_frag_descriptor*DATARMNET9d1b321642,struct rmnet_port*DATARMNETf0d9de7e2f)
-;rcu_read_lock();DATARMNET27ebcde4bf=rcu_dereference(rmnet_perf_desc_entry);
-rcu_read_unlock();return DATARMNET27ebcde4bf!=NULL;}void DATARMNETc70e73c8d4(
-struct list_head*DATARMNETb5730f5283){struct DATARMNET70f3b87b5d*
-DATARMNETe05748b000=DATARMNETc2a630b113();struct rmnet_frag_descriptor*
-DATARMNET9d1b321642,*DATARMNET0386f6f82a;list_for_each_entry_safe(
-DATARMNET9d1b321642,DATARMNET0386f6f82a,DATARMNETb5730f5283,list){
-DATARMNETe26a68d20e(DATARMNET9d1b321642->len);DATARMNETa00cda79d0(
-DATARMNET65843ad009);list_del_init(&DATARMNET9d1b321642->list);
-rmnet_frag_deliver(DATARMNET9d1b321642,DATARMNETe05748b000->DATARMNET403589239f)
-;}}void DATARMNET19d190f2bd(struct DATARMNETd812bcdbb5*DATARMNET458b70e7e5,
-struct list_head*DATARMNET6f9bfa17e6){struct rmnet_frag_descriptor*
-DATARMNET9d1b321642=DATARMNET458b70e7e5->DATARMNET719f68fb88;u32
-DATARMNET5affe290b8=DATARMNET458b70e7e5->DATARMNET1ef22e4c76+DATARMNET458b70e7e5
-->DATARMNET144d119066.DATARMNET4ca5ac9de1+DATARMNET458b70e7e5->
-DATARMNET144d119066.DATARMNET0aeee57ceb;if(DATARMNET5affe290b8>65536)return;if(!
-DATARMNET458b70e7e5->DATARMNET3eb91ee54d)DATARMNET9d1b321642->hash=
-DATARMNET458b70e7e5->DATARMNET645e8912b8;list_add_tail(&DATARMNET9d1b321642->
-list,DATARMNET6f9bfa17e6);}void DATARMNET9292bebdd3(void*DATARMNETf0d9de7e2f){}
-void DATARMNETb7e47d7254(void*DATARMNETf0d9de7e2f){}void DATARMNET95e1703026(
-struct rmnet_map_dl_ind_hdr*DATARMNET7c7748ef7a,struct
+DATARMNETc70e73c8d4(&DATARMNET6f9bfa17e6);}static void DATARMNET29e8d137c4(
+struct list_head*DATARMNETb5730f5283,struct rmnet_port*DATARMNETf0d9de7e2f){
+struct rmnet_frag_descriptor*DATARMNETced5b4128f,*DATARMNET0386f6f82a;
+list_for_each_entry_safe(DATARMNETced5b4128f,DATARMNET0386f6f82a,
+DATARMNETb5730f5283,list){list_del_init(&DATARMNETced5b4128f->list);
+DATARMNETb56d685c50(DATARMNETced5b4128f,DATARMNETf0d9de7e2f);}}void
+DATARMNET664568fcd0(void){spin_lock_bh(&DATARMNET0b5e447f18);}void
+DATARMNET6a76048590(void){spin_unlock_bh(&DATARMNET0b5e447f18);}static const
+struct rmnet_module_hook_register_info DATARMNET162e7a2013={.hooknum=
+RMNET_MODULE_HOOK_OFFLOAD_INGRESS,.func=DATARMNET29e8d137c4,};void
+DATARMNET818b960147(void){rcu_assign_pointer(rmnet_perf_desc_entry,
+DATARMNETb56d685c50);rmnet_module_hook_register(&DATARMNET162e7a2013,
+(0xd26+209-0xdf6));}void DATARMNETba38823a2f(void){rcu_assign_pointer(
+rmnet_perf_desc_entry,NULL);rmnet_module_hook_unregister_no_sync(&
+DATARMNET162e7a2013,(0xd26+209-0xdf6));}void DATARMNETc70e73c8d4(struct
+list_head*DATARMNETb5730f5283){struct DATARMNET70f3b87b5d*DATARMNETe05748b000=
+DATARMNETc2a630b113();struct rmnet_frag_descriptor*DATARMNET9d1b321642,*
+DATARMNET0386f6f82a;list_for_each_entry_safe(DATARMNET9d1b321642,
+DATARMNET0386f6f82a,DATARMNETb5730f5283,list){DATARMNETe26a68d20e(
+DATARMNET9d1b321642->len);DATARMNETa00cda79d0(DATARMNET65843ad009);list_del_init
+(&DATARMNET9d1b321642->list);rmnet_frag_deliver(DATARMNET9d1b321642,
+DATARMNETe05748b000->DATARMNET403589239f);}}void DATARMNET19d190f2bd(struct
+DATARMNETd812bcdbb5*DATARMNET458b70e7e5,struct list_head*DATARMNET6f9bfa17e6){
+struct rmnet_frag_descriptor*DATARMNET9d1b321642=DATARMNET458b70e7e5->
+DATARMNET719f68fb88;u32 DATARMNET5affe290b8=DATARMNET458b70e7e5->
+DATARMNET1ef22e4c76+DATARMNET458b70e7e5->DATARMNET144d119066.DATARMNET4ca5ac9de1
++DATARMNET458b70e7e5->DATARMNET144d119066.DATARMNET0aeee57ceb;if(
+DATARMNET5affe290b8>65536)return;if(!DATARMNET458b70e7e5->DATARMNET3eb91ee54d)
+DATARMNET9d1b321642->hash=DATARMNET458b70e7e5->DATARMNET645e8912b8;list_add_tail
+(&DATARMNET9d1b321642->list,DATARMNET6f9bfa17e6);}void DATARMNET9292bebdd3(void*
+DATARMNETf0d9de7e2f){}void DATARMNETb7e47d7254(void*DATARMNETf0d9de7e2f){}void
+DATARMNET95e1703026(struct rmnet_map_dl_ind_hdr*DATARMNET7c7748ef7a,struct
rmnet_map_control_command_header*DATARMNET8b07ee3e82){struct DATARMNET70f3b87b5d
*DATARMNETe05748b000=DATARMNETc2a630b113();LIST_HEAD(DATARMNET6f9bfa17e6);(void)
DATARMNET8b07ee3e82;DATARMNET664568fcd0();if(DATARMNETe05748b000->
diff --git a/offload/rmnet_offload_main.h b/offload/rmnet_offload_main.h
index ccb3712..5a3c142 100644
--- a/offload/rmnet_offload_main.h
+++ b/offload/rmnet_offload_main.h
@@ -1,4 +1,5 @@
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -60,14 +61,14 @@ rmnet_frag_descriptor*DATARMNET719f68fb88;struct DATARMNET4287f07234
DATARMNET144d119066;u32 DATARMNET645e8912b8;u16 DATARMNET1ef22e4c76;bool
DATARMNETf1b6b0a6cc;bool DATARMNET3eb91ee54d;bool DATARMNET8f59f5a745;};void
DATARMNET664568fcd0(void);void DATARMNET6a76048590(void);void
-DATARMNET818b960147(void);void DATARMNETba38823a2f(void);bool
-DATARMNET19eb0de3b2(void);void DATARMNETc70e73c8d4(struct list_head*
-DATARMNETb5730f5283);void DATARMNET19d190f2bd(struct DATARMNETd812bcdbb5*
-DATARMNET458b70e7e5,struct list_head*DATARMNET6f9bfa17e6);void
-DATARMNET9292bebdd3(void*DATARMNETf0d9de7e2f);void DATARMNETb7e47d7254(void*
-DATARMNETf0d9de7e2f);void DATARMNET95e1703026(struct rmnet_map_dl_ind_hdr*
-DATARMNET7c7748ef7a,struct rmnet_map_control_command_header*DATARMNET8b07ee3e82)
-;void DATARMNETc9dd320f49(struct rmnet_map_dl_ind_trl*DATARMNET2541770fea,struct
- rmnet_map_control_command_header*DATARMNET8b07ee3e82);
+DATARMNET818b960147(void);void DATARMNETba38823a2f(void);void
+DATARMNETc70e73c8d4(struct list_head*DATARMNETb5730f5283);void
+DATARMNET19d190f2bd(struct DATARMNETd812bcdbb5*DATARMNET458b70e7e5,struct
+list_head*DATARMNET6f9bfa17e6);void DATARMNET9292bebdd3(void*DATARMNETf0d9de7e2f
+);void DATARMNETb7e47d7254(void*DATARMNETf0d9de7e2f);void DATARMNET95e1703026(
+struct rmnet_map_dl_ind_hdr*DATARMNET7c7748ef7a,struct
+rmnet_map_control_command_header*DATARMNET8b07ee3e82);void DATARMNETc9dd320f49(
+struct rmnet_map_dl_ind_trl*DATARMNET2541770fea,struct
+rmnet_map_control_command_header*DATARMNET8b07ee3e82);
#endif
diff --git a/perf/rmnet_perf_main.c b/perf/rmnet_perf_main.c
index b71efda..b727455 100644
--- a/perf/rmnet_perf_main.c
+++ b/perf/rmnet_perf_main.c
@@ -10,14 +10,14 @@
#include <linux/udp.h>
#include <linux/ip.h>
#include <linux/ipv6.h>
+#include "rmnet_module.h"
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={
-"\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,
+"\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"
-);extern int(*rmnet_perf_ingress_hook1)(struct sk_buff*DATARMNET543491eb0f);
-extern void(*rmnet_perf_egress_hook1)(struct sk_buff*DATARMNET543491eb0f);
+);extern void(*rmnet_perf_egress_hook1)(struct sk_buff*DATARMNET543491eb0f);
#define DATARMNETf241a4b20f (0xe07+6616-0x2624)
static inline bool DATARMNETe1ef3edea2(struct udphdr*DATARMNETa1abb4897c){return
be16_to_cpu(DATARMNETa1abb4897c->source)==DATARMNETf241a4b20f||be16_to_cpu(
@@ -44,13 +44,17 @@ protocol==htons(ETH_P_IP)){if(ip_hdr(DATARMNET543491eb0f)->protocol!=IPPROTO_UDP
(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){if(ipv6_hdr(
DATARMNET543491eb0f)->nexthdr!=IPPROTO_UDP)return;if(DATARMNET77ab42949f(
DATARMNET543491eb0f))goto DATARMNETb261f33b7b;}return;DATARMNETb261f33b7b:
-DATARMNET543491eb0f->priority=14286874;}void DATARMNET49c17a32bc(void){
-rcu_assign_pointer(rmnet_perf_ingress_hook1,DATARMNETee9214ce9b);
-rcu_assign_pointer(rmnet_perf_egress_hook1,DATARMNET05c4bf8af9);}void
-DATARMNET41e8cc085c(void){rcu_assign_pointer(rmnet_perf_ingress_hook1,NULL);
-rcu_assign_pointer(rmnet_perf_egress_hook1,NULL);synchronize_rcu();}static int
-__init DATARMNET63abbdc3d3(void){pr_info("%s(): Loading\n",__func__);
-DATARMNET49c17a32bc();return(0xd2d+202-0xdf7);}static void __exit
-DATARMNETa343229e33(void){DATARMNET41e8cc085c();pr_info(
+DATARMNET543491eb0f->priority=14286874;}static const struct
+rmnet_module_hook_register_info DATARMNET95a71e03c1[]={{.hooknum=
+RMNET_MODULE_HOOK_PERF_INGRESS,.func=DATARMNETee9214ce9b,},{.hooknum=
+RMNET_MODULE_HOOK_PERF_EGRESS,.func=DATARMNET05c4bf8af9,},};void
+DATARMNET49c17a32bc(void){rcu_assign_pointer(rmnet_perf_egress_hook1,
+DATARMNET05c4bf8af9);rmnet_module_hook_register(DATARMNET95a71e03c1,ARRAY_SIZE(
+DATARMNET95a71e03c1));}void DATARMNET41e8cc085c(void){rcu_assign_pointer(
+rmnet_perf_egress_hook1,NULL);rmnet_module_hook_unregister(DATARMNET95a71e03c1,
+ARRAY_SIZE(DATARMNET95a71e03c1));}static int __init DATARMNET63abbdc3d3(void){
+pr_info("%s(): Loading\n",__func__);DATARMNET49c17a32bc();return
+(0xd2d+202-0xdf7);}static void __exit DATARMNETa343229e33(void){
+DATARMNET41e8cc085c();pr_info(
"\x25\x73\x28\x29\x3a\x20\x65\x78\x69\x74\x69\x6e\x67" "\n",__func__);}
module_init(DATARMNET63abbdc3d3);module_exit(DATARMNETa343229e33);
diff --git a/perf_tether/rmnet_perf_tether_main.c b/perf_tether/rmnet_perf_tether_main.c
index 0301030..ad8f16c 100644
--- a/perf_tether/rmnet_perf_tether_main.c
+++ b/perf_tether/rmnet_perf_tether_main.c
@@ -11,10 +11,12 @@
#include "rmnet_descriptor.h"
#include "rmnet_map.h"
#include "rmnet_qmap.h"
+#include "rmnet_module.h"
MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={
-"\x36\x34\x38\x62\x37\x30\x39\x35","\x37\x34\x31\x35\x39\x32\x31\x63",
-"\x34\x39\x61\x66\x39\x62\x64\x34"};module_param_array(verinfo,charp,NULL,
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
+"\x65\x32\x31\x38\x66\x34\x35\x31","\x36\x34\x38\x62\x37\x30\x39\x35",
+"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x39\x61\x66\x39\x62\x64\x34"};
+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"
);extern void(*rmnet_perf_tether_ingress_hook)(struct tcphdr*DATARMNET2e7cc88971
,struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct iphdr*
@@ -178,15 +180,22 @@ sizeof(*DATARMNETf937c77d8f)+sizeof(*DATARMNETb87c07b92a));DATARMNETcd32395e82->
DATARMNETba8c503d04=DATARMNET7bd625a8c0;DATARMNETcd32395e82->DATARMNETc59f891d69
=!DATARMNETcc6099cb14;DATARMNET543491eb0f->dev=dev;DATARMNET543491eb0f->protocol
=htons(ETH_P_MAP);rmnet_qmap_send(DATARMNET543491eb0f,RMNET_CH_CTL,false);}
-DATARMNETaabe3a05f8:dev_put(dev);}void DATARMNET5fe3ffe2ab(void){
-rcu_assign_pointer(rmnet_perf_tether_ingress_hook,DATARMNETe70d5ec61a);
-rcu_assign_pointer(rmnet_perf_tether_egress_hook,DATARMNET6ab362e985);
-rcu_assign_pointer(rmnet_perf_tether_cmd_hook,DATARMNET136e008d70);}void
-DATARMNET229327cbd2(void){rcu_assign_pointer(rmnet_perf_tether_ingress_hook,NULL
-);rcu_assign_pointer(rmnet_perf_tether_egress_hook,NULL);rcu_assign_pointer(
-rmnet_perf_tether_cmd_hook,NULL);}static int DATARMNETaa549ce89a(void){int
-DATARMNETefc9df3df2;DATARMNET8a1e9920bf=kzalloc(sizeof(*DATARMNET8a1e9920bf),
-GFP_KERNEL);if(!DATARMNET8a1e9920bf){pr_err(
+DATARMNETaabe3a05f8:dev_put(dev);}static const struct
+rmnet_module_hook_register_info DATARMNET0762b4f121[]={{.hooknum=
+RMNET_MODULE_HOOK_PERF_TETHER_INGRESS,.func=DATARMNETe70d5ec61a,},{.hooknum=
+RMNET_MODULE_HOOK_PERF_TETHER_EGRESS,.func=DATARMNET6ab362e985,},{.hooknum=
+RMNET_MODULE_HOOK_PERF_TETHER_CMD,.func=DATARMNET136e008d70,},};void
+DATARMNET5fe3ffe2ab(void){rcu_assign_pointer(rmnet_perf_tether_ingress_hook,
+DATARMNETe70d5ec61a);rcu_assign_pointer(rmnet_perf_tether_egress_hook,
+DATARMNET6ab362e985);rcu_assign_pointer(rmnet_perf_tether_cmd_hook,
+DATARMNET136e008d70);rmnet_module_hook_register(DATARMNET0762b4f121,ARRAY_SIZE(
+DATARMNET0762b4f121));}void DATARMNET229327cbd2(void){rcu_assign_pointer(
+rmnet_perf_tether_ingress_hook,NULL);rcu_assign_pointer(
+rmnet_perf_tether_egress_hook,NULL);rcu_assign_pointer(
+rmnet_perf_tether_cmd_hook,NULL);rmnet_module_hook_unregister(
+DATARMNET0762b4f121,ARRAY_SIZE(DATARMNET0762b4f121));}static int
+DATARMNETaa549ce89a(void){int DATARMNETefc9df3df2;DATARMNET8a1e9920bf=kzalloc(
+sizeof(*DATARMNET8a1e9920bf),GFP_KERNEL);if(!DATARMNET8a1e9920bf){pr_err(
"\x25\x73\x28\x29\x3a\x20\x52\x65\x73\x6f\x75\x72\x63\x65\x20\x61\x6c\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);return-(0xd26+209-0xdf6);}DATARMNET8a1e9920bf->DATARMNETd0ef85194f++;
for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);DATARMNETefc9df3df2<
diff --git a/shs/rmnet_shs.h b/shs/rmnet_shs.h
index d8e8215..714844c 100644
--- a/shs/rmnet_shs.h
+++ b/shs/rmnet_shs.h
@@ -143,7 +143,9 @@ extern spinlock_t DATARMNETfbdbab2ef6;extern struct hlist_head
DATARMNETe603c3a4b3[(0xd26+209-0xdf6)<<(DATARMNET25437d35fd)];extern int(*
rmnet_shs_skb_entry)(struct sk_buff*skb,struct rmnet_shs_clnt_s*
DATARMNET9e820fbfe3);extern int(*rmnet_shs_switch)(struct sk_buff*skb,struct
-rmnet_shs_clnt_s*DATARMNET9e820fbfe3);int DATARMNET362b15f941(u16 cpu);void
+rmnet_shs_clnt_s*DATARMNET9e820fbfe3);void DATARMNET203752febd(void);void
+DATARMNET7520667b38(void);void DATARMNETa871eeb7e7(void);void
+DATARMNET8f9da46b14(void);int DATARMNET362b15f941(u16 cpu);void
DATARMNETeacad8334e(void);void DATARMNETe1f95274f1(void);unsigned int
DATARMNET02cdd9b125(void);int DATARMNET310c3eb16e(u8 mask);int
DATARMNETe02152c351(struct DATARMNET63d7680df2*DATARMNET63b1a086d5,u8
diff --git a/shs/rmnet_shs_config.c b/shs/rmnet_shs_config.c
index 15a94fe..e6cfe23 100644
--- a/shs/rmnet_shs_config.c
+++ b/shs/rmnet_shs_config.c
@@ -56,16 +56,16 @@ DATARMNETd6ee05f1b4(dev);break;case NETDEV_UNREGISTER:DATARMNET2cb9ae589c--;if(!
DATARMNET2cb9ae589c&&DATARMNETecc0627c70.DATARMNETfc89d842ae){unsigned int
DATARMNET9f4bc49c6f;pr_info(
"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x20\x64\x65\x69\x6e\x69\x74\x20\x25\x73\x20\x67\x6f\x69\x6e\x67\x20\x64\x6f\x77\x6e\x20"
-,dev->name);RCU_INIT_POINTER(rmnet_shs_skb_entry,NULL);RCU_INIT_POINTER(
-rmnet_shs_switch,NULL);qmi_rmnet_ps_ind_deregister(DATARMNETecc0627c70.port,&
-DATARMNETecc0627c70.rmnet_idl_ind_cb);rmnet_map_dl_ind_deregister(
-DATARMNETecc0627c70.port,&DATARMNETecc0627c70.DATARMNET08dbb5ab35);
-DATARMNETeacad8334e();DATARMNET9f4bc49c6f=DATARMNET02cdd9b125();
-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(
+,dev->name);DATARMNET203752febd();DATARMNETa871eeb7e7();
+qmi_rmnet_ps_ind_deregister(DATARMNETecc0627c70.port,&DATARMNETecc0627c70.
+rmnet_idl_ind_cb);rmnet_map_dl_ind_deregister(DATARMNETecc0627c70.port,&
+DATARMNETecc0627c70.DATARMNET08dbb5ab35);DATARMNETeacad8334e();
+DATARMNET9f4bc49c6f=DATARMNET02cdd9b125();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(
@@ -92,7 +92,6 @@ rmnet_idl_ind_cb);if(ret)pr_err(
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);
-DATARMNETcd6e26f0ad();RCU_INIT_POINTER(rmnet_shs_switch,NULL);RCU_INIT_POINTER(
-rmnet_shs_skb_entry,DATARMNET756778f14f);break;}DATARMNET7492293980(dev);break;
-default:break;}return NOTIFY_DONE;}module_init(DATARMNET163e93649e);module_exit(
-DATARMNETf3298dab6f);
+DATARMNETcd6e26f0ad();DATARMNETa871eeb7e7();DATARMNET7520667b38();break;}
+DATARMNET7492293980(dev);break;default:break;}return NOTIFY_DONE;}module_init(
+DATARMNET163e93649e);module_exit(DATARMNETf3298dab6f);
diff --git a/shs/rmnet_shs_main.c b/shs/rmnet_shs_main.c
index 3a86a70..8e0f1ee 100644
--- a/shs/rmnet_shs_main.c
+++ b/shs/rmnet_shs_main.c
@@ -27,6 +27,7 @@
#include <linux/ipv6.h>
#include <linux/netdevice.h>
#include <linux/percpu-defs.h>
+#include "rmnet_module.h"
#include "rmnet_shs.h"
#include "rmnet_shs_config.h"
#include "rmnet_shs_wq.h"
@@ -38,14 +39,14 @@
#include <linux/cpumask.h>
#include <linux/icmp.h>
#include <linux/inet.h>
-static char*verinfo[]={"\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[]={"\x65\x32\x31\x38\x66\x34\x35\x31",
+"\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
@@ -105,9 +106,7 @@ DATARMNET673cf85e28,
"\x4d\x61\x78\x20\x70\x68\x79\x20\x62\x61\x63\x6b\x6c\x6f\x67\x20\x73\x65\x65\x6e"
);struct DATARMNETa6b20d7e8b DATARMNETecc0627c70;struct DATARMNET37ef896af8
shs_rx_work;int DATARMNET762cfa52fe(u8 mask);unsigned DATARMNET016351c9e4=
-(0xd2d+202-0xdf7);typedef int(*DATARMNET318cb01989)(struct sk_buff*skb);
-DATARMNET318cb01989 rmnet_perf_ingress_hook1 __rcu __read_mostly;EXPORT_SYMBOL(
-rmnet_perf_ingress_hook1);ssize_t DATARMNET713da9913c(struct netdev_rx_queue*
+(0xd2d+202-0xdf7);ssize_t DATARMNET713da9913c(struct netdev_rx_queue*
DATARMNETb4180393e4,u8 cpu,u8 DATARMNET5780499e9c){struct rps_map*
DATARMNETaeb4918e65,*map;cpumask_var_t mask;map=rcu_dereference(
DATARMNETb4180393e4->rps_map);if(map){map->cpus[(0xd2d+202-0xdf7)]=cpu;map->len=
@@ -134,18 +133,18 @@ offset-=frag_size;continue;}if(frag_size>=offset+DATARMNET567bdc7221)return
skb_frag_address(frag)+offset;}if(skb_copy_bits(skb,(int)DATARMNETedc267a909,buf
,(int)DATARMNET567bdc7221))return NULL;return buf;}int DATARMNET9303cec796(
struct sk_buff*skb){int DATARMNETbd864aa442=(0xd2d+202-0xdf7);struct iphdr*ip4h,
-DATARMNETc00baf31c3;struct ipv6hdr*ip6h,DATARMNETcf1d9e2c1e;DATARMNET318cb01989
-DATARMNET9a0f3e1b3a;s64 DATARMNETe30c7cdaf5;struct timespec64 time;
-DATARMNET9a0f3e1b3a=rcu_dereference(rmnet_perf_ingress_hook1);if(
-DATARMNET9a0f3e1b3a){if(!DATARMNET9a0f3e1b3a(skb)){goto done;}}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);(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(&
+DATARMNETc00baf31c3;struct ipv6hdr*ip6h,DATARMNETcf1d9e2c1e;s64
+DATARMNETe30c7cdaf5;struct timespec64 time;int DATARMNET441081ddc0;if(
+rmnet_module_hook_perf_ingress(&DATARMNET441081ddc0,skb)){if(!
+DATARMNET441081ddc0){goto done;}}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);(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,
@@ -433,15 +432,15 @@ DATARMNET132b9c7dc4[DATARMNET42a992465f].DATARMNETe61d62310f=(0xd2d+202-0xdf7);
DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNET4133fc9428=(0xd2d+202-0xdf7);
spin_unlock_irqrestore(&DATARMNET3764d083f0,ht_flags);local_bh_enable();if(
DATARMNET42a992465f==DATARMNETecc0627c70.DATARMNET6625085b71&&rcu_dereference(
-rmnet_shs_switch)){RCU_INIT_POINTER(rmnet_shs_switch,NULL);DATARMNETecc0627c70.
-DATARMNETfeee6933fc=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNET6625085b71=
-DATARMNETecc0627c70.DATARMNET7d667e828e;}DATARMNET52de1f3dc0(DATARMNET4510abc30d
-,DATARMNET576793621a,DATARMNETecc0627c70.DATARMNETa2e32cdd3a,DATARMNETecc0627c70
-.DATARMNETc252a1f55d,DATARMNET8bf94cc2f7,DATARMNET76192fa639,NULL,NULL);}void
-DATARMNET056c939591(struct work_struct*DATARMNET33110a3ff5){struct
-DATARMNETa6f2d499b2*DATARMNET4b39dc1574=container_of(DATARMNET33110a3ff5,struct
-DATARMNETa6f2d499b2,DATARMNET33110a3ff5);DATARMNETfbc06e60f1(DATARMNET4b39dc1574
-->DATARMNET42c3ecbd5e);DATARMNET14ed771dfb[DATARMNETbb5757569c]++;}void
+rmnet_shs_switch)){DATARMNETa871eeb7e7();DATARMNETecc0627c70.DATARMNETfeee6933fc
+=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNET6625085b71=DATARMNETecc0627c70.
+DATARMNET7d667e828e;}DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNET576793621a
+,DATARMNETecc0627c70.DATARMNETa2e32cdd3a,DATARMNETecc0627c70.DATARMNETc252a1f55d
+,DATARMNET8bf94cc2f7,DATARMNET76192fa639,NULL,NULL);}void DATARMNET056c939591(
+struct work_struct*DATARMNET33110a3ff5){struct DATARMNETa6f2d499b2*
+DATARMNET4b39dc1574=container_of(DATARMNET33110a3ff5,struct DATARMNETa6f2d499b2,
+DATARMNET33110a3ff5);DATARMNETfbc06e60f1(DATARMNET4b39dc1574->
+DATARMNET42c3ecbd5e);DATARMNET14ed771dfb[DATARMNETbb5757569c]++;}void
DATARMNETcba2f7f7b6(struct DATARMNET63d7680df2*DATARMNET63b1a086d5,u8
DATARMNETf345c1d909){struct sk_buff*skb=NULL;struct sk_buff*DATARMNETcebafc57a4=
NULL;struct DATARMNETe600c5b727*DATARMNETa4055affd5;u32 DATARMNETe20a9cab2b=
@@ -481,25 +480,24 @@ DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNET6215127f48=(0xd2d+202-0xdf7);
DATARMNET63b1a086d5->DATARMNETae4b27456e.DATARMNETbaa5765693=(0xd2d+202-0xdf7);
DATARMNET63b1a086d5->DATARMNETae4b27456e.head=NULL;DATARMNET63b1a086d5->
DATARMNETae4b27456e.tail=NULL;if(DATARMNET63b1a086d5->DATARMNET85c698ec34){
-RCU_INIT_POINTER(rmnet_shs_switch,NULL);DATARMNET63b1a086d5->DATARMNET0371465875
-=(0xd2d+202-0xdf7);DATARMNETecc0627c70.DATARMNETfeee6933fc=(0xd2d+202-0xdf7);
-DATARMNETecc0627c70.DATARMNET6625085b71=DATARMNETecc0627c70.DATARMNET7d667e828e;
-}DATARMNET52de1f3dc0(DATARMNET4510abc30d,DATARMNETfb753e521e,DATARMNET63b1a086d5
-->hash,DATARMNET1fcbf046ec,DATARMNETe20a9cab2b,DATARMNETb481d13a78,
-DATARMNET63b1a086d5,NULL);}void DATARMNET23c7ddd780(struct DATARMNET63d7680df2*
-DATARMNET63b1a086d5,u8 DATARMNET5447204733){struct sk_buff*skb;struct sk_buff*
-DATARMNETcebafc57a4=NULL;u32 DATARMNETe20a9cab2b=(0xd2d+202-0xdf7);u32
-DATARMNETb481d13a78=(0xd2d+202-0xdf7);u32 DATARMNET1fcbf046ec;u8 map,
-DATARMNET0258668025;if(!DATARMNET63b1a086d5->DATARMNETae4b27456e.head)return;map
-=DATARMNET63b1a086d5->DATARMNETfbbec4c537;DATARMNET0258668025=
-DATARMNET63b1a086d5->DATARMNETa59ce1fd2d;if(map){DATARMNET1fcbf046ec=
-DATARMNET8532ab3089(DATARMNET63b1a086d5->map_index,DATARMNET0258668025,
-DATARMNET63b1a086d5->DATARMNETae4b27456e.head->hash);}else{DATARMNET63b1a086d5->
-DATARMNET6250e93187=(0xd2d+202-0xdf7);}for((skb=DATARMNET63b1a086d5->
-DATARMNETae4b27456e.head);skb!=NULL;skb=DATARMNETcebafc57a4){DATARMNETcebafc57a4
-=skb->next;if(DATARMNET63b1a086d5->DATARMNET6250e93187)skb->hash=
-DATARMNET1fcbf046ec;skb->next=NULL;DATARMNETe20a9cab2b+=(0xd26+209-0xdf6);
-DATARMNETb481d13a78+=skb->len;if(DATARMNET5447204733==DATARMNET0b15fd8b54&&(!
+DATARMNETa871eeb7e7();DATARMNET63b1a086d5->DATARMNET0371465875=(0xd2d+202-0xdf7)
+;DATARMNETecc0627c70.DATARMNETfeee6933fc=(0xd2d+202-0xdf7);DATARMNETecc0627c70.
+DATARMNET6625085b71=DATARMNETecc0627c70.DATARMNET7d667e828e;}DATARMNET52de1f3dc0
+(DATARMNET4510abc30d,DATARMNETfb753e521e,DATARMNET63b1a086d5->hash,
+DATARMNET1fcbf046ec,DATARMNETe20a9cab2b,DATARMNETb481d13a78,DATARMNET63b1a086d5,
+NULL);}void DATARMNET23c7ddd780(struct DATARMNET63d7680df2*DATARMNET63b1a086d5,
+u8 DATARMNET5447204733){struct sk_buff*skb;struct sk_buff*DATARMNETcebafc57a4=
+NULL;u32 DATARMNETe20a9cab2b=(0xd2d+202-0xdf7);u32 DATARMNETb481d13a78=
+(0xd2d+202-0xdf7);u32 DATARMNET1fcbf046ec;u8 map,DATARMNET0258668025;if(!
+DATARMNET63b1a086d5->DATARMNETae4b27456e.head)return;map=DATARMNET63b1a086d5->
+DATARMNETfbbec4c537;DATARMNET0258668025=DATARMNET63b1a086d5->DATARMNETa59ce1fd2d
+;if(map){DATARMNET1fcbf046ec=DATARMNET8532ab3089(DATARMNET63b1a086d5->map_index,
+DATARMNET0258668025,DATARMNET63b1a086d5->DATARMNETae4b27456e.head->hash);}else{
+DATARMNET63b1a086d5->DATARMNET6250e93187=(0xd2d+202-0xdf7);}for((skb=
+DATARMNET63b1a086d5->DATARMNETae4b27456e.head);skb!=NULL;skb=DATARMNETcebafc57a4
+){DATARMNETcebafc57a4=skb->next;if(DATARMNET63b1a086d5->DATARMNET6250e93187)skb
+->hash=DATARMNET1fcbf046ec;skb->next=NULL;DATARMNETe20a9cab2b+=(0xd26+209-0xdf6)
+;DATARMNETb481d13a78+=skb->len;if(DATARMNET5447204733==DATARMNET0b15fd8b54&&(!
DATARMNET63b1a086d5->DATARMNET85c698ec34))DATARMNETe767554e6e(skb);else if(
DATARMNET5447204733==DATARMNET5b5927fd7e&&(!DATARMNET63b1a086d5->
DATARMNET85c698ec34))DATARMNET514ce0bf59(skb);else{netif_rx_ni(skb);}}
@@ -832,8 +830,8 @@ hash=57005;if(raw_smp_processor_id()==DATARMNETecc0627c70.DATARMNET6625085b71&&
DATARMNETecc0627c70.DATARMNET6625085b71!=DATARMNETecc0627c70.DATARMNET7d667e828e
){netif_rx(skb);DATARMNETecc0627c70.DATARMNETfeee6933fc++;if(DATARMNETecc0627c70
.DATARMNETfeee6933fc>DATARMNETf4cacbb5dc){DATARMNETa4bf9fbf64(
-DATARMNETf3dfa53867,DATARMNET0b15fd8b54);RCU_INIT_POINTER(rmnet_shs_switch,NULL)
-;DATARMNET68d84e7b98[DATARMNET43405942ed]++;DATARMNETecc0627c70.
+DATARMNETf3dfa53867,DATARMNET0b15fd8b54);DATARMNETa871eeb7e7();
+DATARMNET68d84e7b98[DATARMNET43405942ed]++;DATARMNETecc0627c70.
DATARMNETfeee6933fc=(0xd2d+202-0xdf7);}return(0xd2d+202-0xdf7);}}
spin_lock_irqsave(&DATARMNET3764d083f0,ht_flags);do{hash_for_each_possible_safe(
DATARMNETe603c3a4b3,node_p,tmp,list,hash){if(hash!=node_p->hash)continue;
@@ -928,7 +926,20 @@ NULL,NULL);DATARMNETa4bf9fbf64((0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}else if(!
DATARMNETa2e32cdd3a&&DATARMNETecc0627c70.DATARMNET6fe0db3a49!=
DATARMNET1c55e5fdb1){DATARMNET14ed771dfb[DATARMNET01bf75e27c]++;
DATARMNETa4bf9fbf64((0xd2d+202-0xdf7),DATARMNET0b15fd8b54);}return
-(0xd2d+202-0xdf7);}void DATARMNET9297340f58(unsigned int DATARMNET9f4bc49c6f){
+(0xd2d+202-0xdf7);}static const struct rmnet_module_hook_register_info
+DATARMNETef42b9f0b2={.hooknum=RMNET_MODULE_HOOK_SHS_SKB_ENTRY,.func=
+DATARMNET756778f14f,};void DATARMNET203752febd(void){RCU_INIT_POINTER(
+rmnet_shs_skb_entry,NULL);rmnet_module_hook_unregister_no_sync(&
+DATARMNETef42b9f0b2,(0xd26+209-0xdf6));}void DATARMNET7520667b38(void){
+RCU_INIT_POINTER(rmnet_shs_skb_entry,DATARMNET756778f14f);
+rmnet_module_hook_register(&DATARMNETef42b9f0b2,(0xd26+209-0xdf6));}static const
+ struct rmnet_module_hook_register_info DATARMNET28a9685974={.hooknum=
+RMNET_MODULE_HOOK_SHS_SWITCH,.func=DATARMNET756778f14f,};void
+DATARMNETa871eeb7e7(void){RCU_INIT_POINTER(rmnet_shs_switch,NULL);
+rmnet_module_hook_unregister_no_sync(&DATARMNET28a9685974,(0xd26+209-0xdf6));}
+void DATARMNET8f9da46b14(void){RCU_INIT_POINTER(rmnet_shs_switch,
+DATARMNET756778f14f);rmnet_module_hook_register(&DATARMNET28a9685974,
+(0xd26+209-0xdf6));}void DATARMNET9297340f58(unsigned int DATARMNET9f4bc49c6f){
DATARMNETdf74db7e38();DATARMNETecc0627c70.DATARMNET9c869c1ec2=(0xd2d+202-0xdf7);
unregister_oom_notifier(&DATARMNET105c85d84c);wakeup_source_unregister(
DATARMNETecc0627c70.ws);if(DATARMNETecc0627c70.DATARMNETf5ab31b9b0)
diff --git a/shs/rmnet_shs_wq.c b/shs/rmnet_shs_wq.c
index d544fd1..a8efff3 100644
--- a/shs/rmnet_shs_wq.c
+++ b/shs/rmnet_shs_wq.c
@@ -816,26 +816,25 @@ DATARMNET9dc7755be5->DATARMNET1150269da2);for(cpu=(0xd2d+202-0xdf7);cpu<
DATARMNETc6782fed88;cpu++)DATARMNET2d482e7d9f[cpu]=(0xd2d+202-0xdf7);
rcu_read_lock();if(((0xd26+209-0xdf6)<<DATARMNETecc0627c70.DATARMNET7d667e828e)&
DATARMNETbc3c416b77){DATARMNETecc0627c70.DATARMNET5c24e1df05=(0xd26+209-0xdf6);
-RCU_INIT_POINTER(rmnet_shs_switch,DATARMNET756778f14f);DATARMNETb7ddf3c5dd[
-DATARMNET6ea8a58f4e]++;}rcu_read_unlock();}void DATARMNET7b6c061b06(void){if(
-DATARMNETf141197982&&DATARMNET9dc7755be5)queue_delayed_work(DATARMNETf141197982,
-&DATARMNET9dc7755be5->DATARMNET1150269da2,(0xd2d+202-0xdf7));}void
-DATARMNET3ae0d614d6(void){if(DATARMNETf141197982)return;DATARMNETf5f83b943f();
-trace_rmnet_shs_wq_high(DATARMNET9104d544fa,DATARMNET1b421b0381,
+DATARMNET8f9da46b14();DATARMNETb7ddf3c5dd[DATARMNET6ea8a58f4e]++;}
+rcu_read_unlock();}void DATARMNET7b6c061b06(void){if(DATARMNETf141197982&&
+DATARMNET9dc7755be5)queue_delayed_work(DATARMNETf141197982,&DATARMNET9dc7755be5
+->DATARMNET1150269da2,(0xd2d+202-0xdf7));}void DATARMNET3ae0d614d6(void){if(
+DATARMNETf141197982)return;DATARMNETf5f83b943f();trace_rmnet_shs_wq_high(
+DATARMNET9104d544fa,DATARMNET1b421b0381,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
+(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);DATARMNETf141197982=
+alloc_workqueue("\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x77\x71",WQ_UNBOUND,
+(0xd26+209-0xdf6));if(!DATARMNETf141197982){DATARMNET68d84e7b98[
+DATARMNETecdf13872c]++;return;}DATARMNET9dc7755be5=kmalloc(sizeof(struct
+DATARMNETa144e2bd00),GFP_ATOMIC);if(!DATARMNET9dc7755be5){DATARMNET68d84e7b98[
+DATARMNETd1687e0776]++;DATARMNETf7dcab9a9e();return;}DATARMNETf5b8fce55d(
+DATARMNET138a989ecb,(0xd26+209-0xdf6));DATARMNETd3d1d13f44();INIT_DELAYED_WORK(&
+DATARMNET9dc7755be5->DATARMNET1150269da2,DATARMNETb4b5fc9686);
+trace_rmnet_shs_wq_high(DATARMNET9104d544fa,DATARMNETb196f64ee0,
(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL
-,NULL);DATARMNETf141197982=alloc_workqueue(
-"\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x5f\x77\x71",WQ_UNBOUND,(0xd26+209-0xdf6))
-;if(!DATARMNETf141197982){DATARMNET68d84e7b98[DATARMNETecdf13872c]++;return;}
-DATARMNET9dc7755be5=kmalloc(sizeof(struct DATARMNETa144e2bd00),GFP_ATOMIC);if(!
-DATARMNET9dc7755be5){DATARMNET68d84e7b98[DATARMNETd1687e0776]++;
-DATARMNETf7dcab9a9e();return;}DATARMNETf5b8fce55d(DATARMNET138a989ecb,
-(0xd26+209-0xdf6));DATARMNETd3d1d13f44();INIT_DELAYED_WORK(&DATARMNET9dc7755be5
-->DATARMNET1150269da2,DATARMNETb4b5fc9686);trace_rmnet_shs_wq_high(
-DATARMNET9104d544fa,DATARMNETb196f64ee0,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
-(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);}int DATARMNETb709a938b5(u16
-cpu){int flows=-(0xd26+209-0xdf6);if(cpu>=DATARMNETc6782fed88){
-DATARMNET68d84e7b98[DATARMNET709b59b0e6]++;return flows;}flows=
-DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows;trace_rmnet_shs_wq_low(
+,NULL);}int DATARMNETb709a938b5(u16 cpu){int flows=-(0xd26+209-0xdf6);if(cpu>=
+DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET709b59b0e6]++;return flows;}
+flows=DATARMNET6cdd58e74c.DATARMNET73464778dc[cpu].flows;trace_rmnet_shs_wq_low(
DATARMNET39a68a0eba,DATARMNET0e287157de,cpu,flows,(0x16e8+787-0xc0c),
(0x16e8+787-0xc0c),NULL,NULL);return flows;}int DATARMNET392890a12b(void){u16
cpu;int DATARMNET59bd820724=-(0xd26+209-0xdf6);int DATARMNET847bd62811;for(cpu=
diff --git a/shs/rmnet_shs_wq_genl.c b/shs/rmnet_shs_wq_genl.c
index 1f5aa58..913f7ed 100644
--- a/shs/rmnet_shs_wq_genl.c
+++ b/shs/rmnet_shs_wq_genl.c
@@ -156,17 +156,16 @@ DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d)&DATARMNET9273f84bf1)||((
(0xd26+209-0xdf6)<<DATARMNETecc0627c70.DATARMNET5c24e1df05)&DATARMNET9273f84bf1)
){DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET2d19c9b1ef);return-
(0xd26+209-0xdf6);}DATARMNETecc0627c70.DATARMNET5c24e1df05=DATARMNET7f0ce2d6ad.
-DATARMNET208ea67e1d;rcu_read_lock();RCU_INIT_POINTER(rmnet_shs_switch,
-DATARMNET756778f14f);rcu_read_unlock();DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
-DATARMNET2d19c9b1ef);return(0xd2d+202-0xdf7);}if(DATARMNET7f0ce2d6ad.
-DATARMNETa3f89581b5==DATARMNET37da25c8e8){DATARMNETb7ddf3c5dd[
-DATARMNETb6eae1e097]++;if(!(((0xd26+209-0xdf6)<<DATARMNET7f0ce2d6ad.
-DATARMNET208ea67e1d)&DATARMNETbc3c416b77)||(((0xd26+209-0xdf6)<<
-DATARMNETecc0627c70.DATARMNET5c24e1df05)&DATARMNETbc3c416b77)){
-DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET2d19c9b1ef);return-
-(0xd26+209-0xdf6);}DATARMNETecc0627c70.DATARMNET5c24e1df05=DATARMNET7f0ce2d6ad.
-DATARMNET208ea67e1d;rcu_read_lock();RCU_INIT_POINTER(rmnet_shs_switch,
-DATARMNET756778f14f);rcu_read_unlock();DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
+DATARMNET208ea67e1d;rcu_read_lock();DATARMNET8f9da46b14();rcu_read_unlock();
+DATARMNET5d4ca1da1c(DATARMNET54338da2ff,DATARMNET2d19c9b1ef);return
+(0xd2d+202-0xdf7);}if(DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5==
+DATARMNET37da25c8e8){DATARMNETb7ddf3c5dd[DATARMNETb6eae1e097]++;if(!((
+(0xd26+209-0xdf6)<<DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d)&DATARMNETbc3c416b77)
+||(((0xd26+209-0xdf6)<<DATARMNETecc0627c70.DATARMNET5c24e1df05)&
+DATARMNETbc3c416b77)){DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
+DATARMNET2d19c9b1ef);return-(0xd26+209-0xdf6);}DATARMNETecc0627c70.
+DATARMNET5c24e1df05=DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d;rcu_read_lock();
+DATARMNET8f9da46b14();rcu_read_unlock();DATARMNET5d4ca1da1c(DATARMNET54338da2ff,
DATARMNET2d19c9b1ef);return(0xd2d+202-0xdf7);}rc=DATARMNET5f72606f6f(
DATARMNET7f0ce2d6ad.DATARMNETc790ff30fc,DATARMNET7f0ce2d6ad.DATARMNET208ea67e1d,
DATARMNET7f0ce2d6ad.DATARMNET4da4612f1e,DATARMNET7f0ce2d6ad.DATARMNETa3f89581b5)
diff --git a/wlan/rmnet_wlan_connection.c b/wlan/rmnet_wlan_connection.c
index d7649c7..858ad73 100644
--- a/wlan/rmnet_wlan_connection.c
+++ b/wlan/rmnet_wlan_connection.c
@@ -18,6 +18,7 @@
#include <net/ipv6.h>
#include <net/dst.h>
#include <net/netfilter/nf_conntrack.h>
+#include "rmnet_module.h"
#include "rmnet_wlan.h"
#include "rmnet_wlan_connection.h"
#include "rmnet_wlan_stats.h"
@@ -329,11 +330,15 @@ IPPROTO_UDP){if(udp_hdr(DATARMNET543491eb0f)->source==DATARMNET3396919a68->
DATARMNET08e913477e&&udp_hdr(DATARMNET543491eb0f)->dest==DATARMNET3396919a68->
DATARMNETda7f7fa492)goto DATARMNET9573fcc9c6;}return;DATARMNET9573fcc9c6:
DATARMNET543491eb0f->priority=2607612160;DATARMNET5ca94dbc3c(DATARMNETc2cade1d75
-);}void DATARMNET333c107558(void){rcu_assign_pointer(rmnet_wlan_ll_tuple_hook,
-DATARMNET6f73df41cd);}void DATARMNET4c08c7210c(void){rcu_assign_pointer(
-rmnet_wlan_ll_tuple_hook,NULL);synchronize_rcu();}int DATARMNET9f106ed933(void){
-int DATARMNET268a8314cf;DATARMNET268a8314cf=register_netdevice_notifier(&
-DATARMNET61d0113123);if(DATARMNET268a8314cf)pr_err(
+);}static const struct rmnet_module_hook_register_info DATARMNETd0b5ecd937={.
+hooknum=RMNET_MODULE_HOOK_WLAN_FLOW_MATCH,.func=DATARMNET6f73df41cd,};void
+DATARMNET333c107558(void){rcu_assign_pointer(rmnet_wlan_ll_tuple_hook,
+DATARMNET6f73df41cd);rmnet_module_hook_register(&DATARMNETd0b5ecd937,
+(0xd26+209-0xdf6));}void DATARMNET4c08c7210c(void){rcu_assign_pointer(
+rmnet_wlan_ll_tuple_hook,NULL);rmnet_module_hook_unregister(&DATARMNETd0b5ecd937
+,(0xd26+209-0xdf6));}int DATARMNET9f106ed933(void){int DATARMNET268a8314cf;
+DATARMNET268a8314cf=register_netdevice_notifier(&DATARMNET61d0113123);if(
+DATARMNET268a8314cf)pr_err(
"\x25\x73\x28\x29\x3a\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);return DATARMNET268a8314cf;}int DATARMNETf56cbaa2b1(void){int
DATARMNET268a8314cf;DATARMNET268a8314cf=unregister_netdevice_notifier(&
diff --git a/wlan/rmnet_wlan_main.c b/wlan/rmnet_wlan_main.c
index 0717e76..48db0bf 100644
--- a/wlan/rmnet_wlan_main.c
+++ b/wlan/rmnet_wlan_main.c
@@ -25,13 +25,14 @@
#include "rmnet_wlan_stats.h"
#include "rmnet_wlan_fragment.h"
#include "rmnet_wlan_connection.h"
-static char*verinfo[]={"\x30\x65\x33\x34\x62\x31\x39\x31",
-"\x39\x66\x33\x66\x31\x31\x33\x30","\x62\x31\x62\x63\x64\x66\x66\x61",
-"\x61\x33\x33\x33\x36\x37\x61\x31","\x37\x34\x31\x35\x39\x32\x31\x63",
-"\x33\x35\x36\x63\x34\x39\x31\x63","\x34\x64\x32\x32\x34\x33\x36\x33",
-"\x61\x34\x31\x63\x39\x64\x37\x62","\x38\x66\x32\x66\x65\x64\x32\x66",
-"\x63\x30\x32\x62\x61\x39\x30\x65"};module_param_array(verinfo,charp,NULL,
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
+static char*verinfo[]={"\x65\x32\x31\x38\x66\x34\x35\x31",
+"\x30\x65\x33\x34\x62\x31\x39\x31","\x39\x66\x33\x66\x31\x31\x33\x30",
+"\x62\x31\x62\x63\x64\x66\x66\x61","\x61\x33\x33\x33\x36\x37\x61\x31",
+"\x37\x34\x31\x35\x39\x32\x31\x63","\x33\x35\x36\x63\x34\x39\x31\x63",
+"\x34\x64\x32\x32\x34\x33\x36\x33","\x61\x34\x31\x63\x39\x64\x37\x62",
+"\x38\x66\x32\x66\x65\x64\x32\x66","\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 DATARMNETaf49b04806 ((0xeb7+1158-0x132d))