Browse Source

rmnet_aps: Update to 8dedc718

update to I23b389a289fbe9f499d7562dace0be678dedc718

Change-Id: I23b389a289fbe9f499d7562dace0be678dedc718
Signed-off-by: Weiyi Chen <[email protected]>
Weiyi Chen 2 years ago
parent
commit
2ca42799a2
4 changed files with 187 additions and 63 deletions
  1. 7 4
      aps/rmnet_aps.h
  2. 10 8
      aps/rmnet_aps_genl.c
  3. 5 4
      aps/rmnet_aps_genl.h
  4. 165 47
      aps/rmnet_aps_main.c

+ 7 - 4
aps/rmnet_aps.h

@@ -1,4 +1,4 @@
-/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+/* Copyright (c) 2021-2023 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
@@ -33,10 +33,13 @@ DATARMNETecca9147fd[(0xef7+1114-0x130d)];};struct DATARMNET15bcb4844b{u32 cmd;
 u32 DATARMNETe65883bfce;u32 DATARMNETbb588401ec;};struct DATARMNET797a5b1493{u32
  ifindex;u64 DATARMNET9c9a589dce;u32 DATARMNETc277c62678;u32 DATARMNETecca9147fd
 [(0xd35+210-0xdff)];};struct DATARMNET9a727f81bc{u32 ifindex;u32 
-DATARMNETecca9147fd[(0xcfc+267-0xe00)];};int DATARMNET37a9efbbcb(struct sk_buff*
+DATARMNETecca9147fd[(0xcfc+267-0xe00)];};struct DATARMNET7fb3ee4333{u8 mux_id;u8
+ DATARMNET6f031e7934;u8 DATARMNET08e1628d23;u8 len;u32 DATARMNETa960d37cad[
+(0xd35+210-0xdff)];};int DATARMNET37a9efbbcb(struct sk_buff*DATARMNETaafc1d9519,
+struct genl_info*DATARMNET54338da2ff);int DATARMNET1998d09852(struct sk_buff*
 DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff);int 
-DATARMNET1998d09852(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
-DATARMNET54338da2ff);int DATARMNETae6b282c61(struct sk_buff*DATARMNETaafc1d9519,
+DATARMNETae6b282c61(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
+DATARMNET54338da2ff);int DATARMNET568dffe281(struct sk_buff*DATARMNETaafc1d9519,
 struct genl_info*DATARMNET54338da2ff);
 #endif 
 

+ 10 - 8
aps/rmnet_aps_genl.c

@@ -1,4 +1,4 @@
-/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+/* Copyright (c) 2021-2023 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
@@ -19,7 +19,8 @@ DATARMNETca79857d4a)),[DATARMNET572e4a28eb]=NLA_POLICY_EXACT_LEN(sizeof(struct
 DATARMNET797a5b1493)),[DATARMNETe54d857ffe]=NLA_POLICY_EXACT_LEN(sizeof(struct 
 DATARMNET9a727f81bc)),[DATARMNET7edfedec7f]=NLA_POLICY_EXACT_LEN(sizeof(struct 
 DATARMNETd51e57e3f4)),[DATARMNETd2b1517d6b]=NLA_POLICY_EXACT_LEN(sizeof(struct 
-DATARMNET15bcb4844b)),};
+DATARMNET15bcb4844b)),[DATARMNET24b8b9ef93]=NLA_POLICY_EXACT_LEN(sizeof(struct 
+DATARMNET7fb3ee4333)),};
 #define DATARMNET7dc6237681(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e)\
                                          \
 	{                                                                      \
@@ -29,9 +30,10 @@ flags = (0xd2d+202-0xdf7),        \
 static const struct genl_ops DATARMNET27a52625e4[]={DATARMNET7dc6237681(
 DATARMNET15437be67e,DATARMNET37a9efbbcb),DATARMNET7dc6237681(DATARMNET4f09ad7688
 ,DATARMNET1998d09852),DATARMNET7dc6237681(DATARMNET97eefd45e3,
-DATARMNETae6b282c61),};struct genl_family DATARMNETcdba30eca9={.hdrsize=
-(0xd2d+202-0xdf7),.name=DATARMNETa4a6e34e45,.version=DATARMNET33d1a3e23a,.
-maxattr=DATARMNET3b044438b9,.policy=DATARMNET157d4c7a8a,.ops=DATARMNET27a52625e4
-,.n_ops=ARRAY_SIZE(DATARMNET27a52625e4),};int DATARMNETcfa8d492f8(void){return 
-genl_register_family(&DATARMNETcdba30eca9);}void DATARMNETca7606cfd1(void){
-genl_unregister_family(&DATARMNETcdba30eca9);}
+DATARMNETae6b282c61),DATARMNET7dc6237681(DATARMNET30180ab70e,DATARMNET568dffe281
+),};struct genl_family DATARMNETcdba30eca9={.hdrsize=(0xd2d+202-0xdf7),.name=
+DATARMNETa4a6e34e45,.version=DATARMNET33d1a3e23a,.maxattr=DATARMNET3b044438b9,.
+policy=DATARMNET157d4c7a8a,.ops=DATARMNET27a52625e4,.n_ops=ARRAY_SIZE(
+DATARMNET27a52625e4),};int DATARMNETcfa8d492f8(void){return genl_register_family
+(&DATARMNETcdba30eca9);}void DATARMNETca7606cfd1(void){genl_unregister_family(&
+DATARMNETcdba30eca9);}

+ 5 - 4
aps/rmnet_aps_genl.h

@@ -1,4 +1,4 @@
-/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+/* Copyright (c) 2021-2023 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
@@ -16,9 +16,10 @@
 #define DATARMNET33d1a3e23a (0xd26+209-0xdf6)
 #define DATARMNETa4a6e34e45 "\x52\x4d\x4e\x45\x54\x5f\x41\x50\x53"
 enum{DATARMNETeafde44f15,DATARMNET15437be67e,DATARMNET4f09ad7688,
-DATARMNET97eefd45e3,DATARMNET4ac82df478,};enum{DATARMNET900754429d,
-DATARMNET98b93f2e86,DATARMNET818a0b6438,DATARMNET572e4a28eb,DATARMNETe54d857ffe,
-DATARMNET7edfedec7f,DATARMNETd2b1517d6b,DATARMNET074e71007e,};
+DATARMNET97eefd45e3,DATARMNET30180ab70e,DATARMNET4ac82df478,};enum{
+DATARMNET900754429d,DATARMNET98b93f2e86,DATARMNET818a0b6438,DATARMNET572e4a28eb,
+DATARMNETe54d857ffe,DATARMNET7edfedec7f,DATARMNETd2b1517d6b,DATARMNET24b8b9ef93,
+DATARMNET074e71007e,};
 #define DATARMNET3b044438b9 (DATARMNET074e71007e - (0xd26+209-0xdf6))
 int DATARMNETcfa8d492f8(void);void DATARMNETca7606cfd1(void);
 #endif 

+ 165 - 47
aps/rmnet_aps_main.c

@@ -20,13 +20,15 @@
 #include "rmnet_config.h"
 #include "rmnet_module.h"
 #include "rmnet_descriptor.h"
+#include "rmnet_qmap.h"
 #include "rmnet_aps.h"
 #include "rmnet_aps_genl.h"
-static char*verinfo[]={"\x36\x35\x35\x33\x39\x62\x38\x34",
-"\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,
+static char*verinfo[]={"\x38\x64\x65\x64\x63\x37\x31\x38",
+"\x36\x35\x35\x33\x39\x62\x38\x34","\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)
@@ -47,7 +49,7 @@ static char*verinfo[]={"\x36\x35\x35\x33\x39\x62\x38\x34",
 (0xdf7+2629-0x143c) / (0xd35+210-0xdff) * DATARMNET7b5bbaa047)
 #define DATARMNETb8ab933cae ((0xc07+4861-0x1e3c) * (0xdf7+2629-0x143c) * \
 (0xdf7+2629-0x143c) / (0xd35+210-0xdff) * DATARMNET7b5bbaa047)
-static const char*DATARMNETe5ef0e617c="\x31\x2e\x33";static u16 
+static const char*DATARMNETe5ef0e617c="\x31\x2e\x34";static u16 
 DATARMNET2fe4661b82;static struct genl_info DATARMNET7d98961cbe;static bool 
 DATARMNET54b95e4416;static u32 DATARMNETfef55eaf9a;static u8 DATARMNET9628311a6b
 [DATARMNET3bc5e7094a]={(0xd2d+202-0xdf7),(0xd03+244-0xdf1),(0xcfc+267-0xe00),
@@ -355,7 +357,7 @@ DATARMNET112d724eff(
 ,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec);}return
 (0xd2d+202-0xdf7);}static int DATARMNETbd1d5c8f28(struct genl_info*
 DATARMNET54338da2ff,u8 cmd,int DATARMNETbc8c3c13e8,int DATARMNET5d9df1c423,void*
-DATARMNET8dad72c67a,gfp_t flags){struct sk_buff*DATARMNET543491eb0f;void*
+DATARMNET8dad72c67a,gfp_t flags){struct sk_buff*DATARMNET543491eb0f=NULL;void*
 DATARMNETd7f97e2e5a;int DATARMNETb14e52a504;if(unlikely(!DATARMNET54338da2ff))
 return-EINVAL;DATARMNET543491eb0f=genlmsg_new(nla_total_size(DATARMNET5d9df1c423
 ),flags);if(!DATARMNET543491eb0f)goto DATARMNETbf4095f79e;DATARMNETd7f97e2e5a=
@@ -363,15 +365,16 @@ genlmsg_put(DATARMNET543491eb0f,(0xd2d+202-0xdf7),DATARMNET54338da2ff->snd_seq+
 (0xd26+209-0xdf6),&DATARMNETcdba30eca9,(0xd2d+202-0xdf7),cmd);if(!
 DATARMNETd7f97e2e5a)goto DATARMNETbf4095f79e;DATARMNETb14e52a504=nla_put(
 DATARMNET543491eb0f,DATARMNETbc8c3c13e8,DATARMNET5d9df1c423,DATARMNET8dad72c67a)
-;if(DATARMNETb14e52a504!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;genlmsg_end(
-DATARMNET543491eb0f,DATARMNETd7f97e2e5a);DATARMNETb14e52a504=genlmsg_unicast(
-genl_info_net(DATARMNET54338da2ff),DATARMNET543491eb0f,DATARMNET54338da2ff->
-snd_portid);if(DATARMNETb14e52a504!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;
-return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:DATARMNET112d724eff(
+;if(DATARMNETb14e52a504)goto DATARMNETbf4095f79e;genlmsg_end(DATARMNET543491eb0f
+,DATARMNETd7f97e2e5a);DATARMNETb14e52a504=genlmsg_unicast(genl_info_net(
+DATARMNET54338da2ff),DATARMNET543491eb0f,DATARMNET54338da2ff->snd_portid);if(
+DATARMNETb14e52a504){DATARMNET543491eb0f=NULL;goto DATARMNETbf4095f79e;}return
+(0xd2d+202-0xdf7);DATARMNETbf4095f79e:DATARMNET112d724eff(
 "\x61\x70\x73\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x6d\x73\x67\x20\x25\x64" "\n"
-,cmd);return-EFAULT;}static void DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 
-DATARMNETf8bbe3b0fb){struct DATARMNETca79857d4a DATARMNETa13fcf9070;if(!
-DATARMNET7d98961cbe.snd_portid){DATARMNET112d724eff(
+,cmd);if(DATARMNET543491eb0f)kfree_skb(DATARMNET543491eb0f);return-EFAULT;}
+static void DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 DATARMNETf8bbe3b0fb){
+struct DATARMNETca79857d4a DATARMNETa13fcf9070;if(!DATARMNET7d98961cbe.
+snd_portid){DATARMNET112d724eff(
 "\x61\x70\x73\x3a\x20\x63\x6c\x69\x65\x6e\x74\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64" "\n"
 );return;}DATARMNETa13fcf9070.cmd=DATARMNETdc217f1b29;DATARMNETa13fcf9070.
 DATARMNETe65883bfce=DATARMNETf8bbe3b0fb;DATARMNETa13fcf9070.DATARMNETbb588401ec=
@@ -548,7 +551,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 struct proc_dir_entry*DATARMNET147f9b9f22;static 
+(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 struct proc_dir_entry*DATARMNET147f9b9f22;static 
 struct proc_dir_entry*DATARMNETf9422af3b0;static DEFINE_SPINLOCK(
 DATARMNET86e81617f0);struct DATARMNET837f670f1d{ktime_t DATARMNET763f2e5fac;
 struct DATARMNETf21ed5deb4 DATARMNET5fe4c722a8;};
@@ -573,34 +579,35 @@ DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2==IPPROTO_TCP||
 DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2==IPPROTO_UDP){if(
 DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET9d758b8e5b==(0xd11+230-0xdf3))
 seq_printf(DATARMNET80f4138358,
-"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x34\x2f\x25\x75\x20"
-"\x25\x70\x49\x34\x2f\x25\x75" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
+"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20"
+"\x25\x70\x49\x34\x2f\x25\x75\x20\x25\x70\x49\x34\x2f\x25\x75" "\n",
+DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f,
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,DATARMNET590c4d44f6
+->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->
+DATARMNET5fe4c722a8.dport);else seq_printf(DATARMNET80f4138358,
+"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20"
+"\x25\x70\x49\x36\x2f\x25\x75\x20\x25\x70\x49\x36\x2f\x25\x75" "\n",
+DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f,
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,DATARMNET590c4d44f6
+->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->
+DATARMNET5fe4c722a8.dport);}else{if(DATARMNET590c4d44f6->DATARMNET5fe4c722a8.
+DATARMNET9d758b8e5b==(0xd11+230-0xdf3))seq_printf(DATARMNET80f4138358,
+"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x34\x20"
+"\x25\x70\x49\x34" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
 DATARMNETa845529338,DATARMNET35784a722f,DATARMNET590c4d44f6->DATARMNET5fe4c722a8
 .DATARMNET06d2413ad2,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,
-DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,DATARMNET590c4d44f6->
-DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.dport);else 
-seq_printf(DATARMNET80f4138358,
-"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x36\x2f\x25\x75\x20"
-"\x25\x70\x49\x36\x2f\x25\x75" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr);else seq_printf(
+DATARMNET80f4138358,
+"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x36\x20"
+"\x25\x70\x49\x36" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
 DATARMNETa845529338,DATARMNET35784a722f,DATARMNET590c4d44f6->DATARMNET5fe4c722a8
 .DATARMNET06d2413ad2,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,
-DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,DATARMNET590c4d44f6->
-DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.dport);}else{
-if(DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET9d758b8e5b==
-(0xd11+230-0xdf3))seq_printf(DATARMNET80f4138358,
-"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x34\x20\x25\x70\x49\x34" "\n"
-,DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f
-,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,
-DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->
-DATARMNET5fe4c722a8.daddr);else seq_printf(DATARMNET80f4138358,
-"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x36\x20\x25\x70\x49\x36" "\n"
-,DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f
-,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,
-DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->
-DATARMNET5fe4c722a8.daddr);}if(++DATARMNETefc9df3df2>=DATARMNET137373fbd9)
-DATARMNETefc9df3df2=(0xd2d+202-0xdf7);}while(DATARMNETefc9df3df2!=
-DATARMNET04583f0705);spin_unlock_bh(&DATARMNET86e81617f0);return
-(0xd2d+202-0xdf7);}static void DATARMNET71e03e7287(void){spin_lock_bh(&
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr);}if(++DATARMNETefc9df3df2>=
+DATARMNET137373fbd9)DATARMNETefc9df3df2=(0xd2d+202-0xdf7);}while(
+DATARMNETefc9df3df2!=DATARMNET04583f0705);spin_unlock_bh(&DATARMNET86e81617f0);
+return(0xd2d+202-0xdf7);}static void DATARMNET71e03e7287(void){spin_lock_bh(&
 DATARMNET86e81617f0);DATARMNETd4b2cd928c=ktime_get_coarse_boottime();
 spin_unlock_bh(&DATARMNET86e81617f0);}static void DATARMNETfb7a2ce025(struct 
 rmnet_frag_descriptor*DATARMNET9d1b321642,struct sk_buff*DATARMNET543491eb0f){
@@ -645,11 +652,119 @@ inactive_time,(0xdb7+6665-0x261c));MODULE_PARM_DESC(inactive_time,
 DATARMNET147f9b9f22,DATARMNETd7fae4b1c9,NULL);if(!DATARMNETf9422af3b0)pr_err(
 "\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x72\x65\x61\x74\x65\x20\x64\x6c\x5f\x61\x63\x74\x69\x76\x69\x74\x79\x20\x65\x6e\x74\x72\x79" "\n"
 );}static void DATARMNETb4a75cfdea(void){proc_remove(DATARMNETf9422af3b0);
-proc_remove(DATARMNET147f9b9f22);}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(
+proc_remove(DATARMNET147f9b9f22);}static bool DATARMNET5500f4ed98=true;static 
+u32 DATARMNETb666ba3e85;static DEFINE_SPINLOCK(DATARMNETc3c07e6644);static 
+LIST_HEAD(DATARMNET5e3c62e3a4);static void DATARMNET2cc15953ac(struct timer_list
+*DATARMNET6e4292679f);static DEFINE_TIMER(DATARMNET2d8efce4f0,
+DATARMNET2cc15953ac);struct DATARMNET321b555862{struct list_head 
+DATARMNET46c1c4375f;struct genl_info DATARMNET54338da2ff;__be32 tx_id;unsigned 
+long expires;};struct DATARMNET548caa01db{struct qmap_cmd_hdr 
+DATARMNET9eab1e957c;u8 DATARMNETde8ef6e56a;u8 DATARMNET6f031e7934;u8 
+DATARMNET08e1628d23;u8 len;__be32 DATARMNETa960d37cad[(0xd35+210-0xdff)];}
+__aligned((0xd26+209-0xdf6));static int DATARMNET3eadc89edf(u8 
+DATARMNET6f031e7934,u8 mux_id,u8 DATARMNETc2284e5688,__be32*DATARMNET40f827eabe)
+{struct sk_buff*DATARMNET543491eb0f;struct DATARMNET548caa01db*
+DATARMNET791beb2b4a;unsigned int len;len=sizeof(struct DATARMNET548caa01db);
+DATARMNET543491eb0f=alloc_skb(len,GFP_ATOMIC);if(!DATARMNET543491eb0f)return-
+ENOMEM;DATARMNET543491eb0f->protocol=htons(ETH_P_MAP);DATARMNET791beb2b4a=
+skb_put(DATARMNET543491eb0f,len);memset(DATARMNET791beb2b4a,(0xd2d+202-0xdf7),
+len);DATARMNET791beb2b4a->DATARMNET9eab1e957c.cd_bit=(0xd26+209-0xdf6);
+DATARMNET791beb2b4a->DATARMNET9eab1e957c.mux_id=DATARMNETc2284e5688?
+(0xbf7+4364-0x1c04):mux_id;DATARMNET791beb2b4a->DATARMNET9eab1e957c.pkt_len=
+htons(len-QMAP_HDR_LEN);DATARMNET791beb2b4a->DATARMNET9eab1e957c.cmd_name=
+QMAP_DATA_REPORT;DATARMNET791beb2b4a->DATARMNET9eab1e957c.cmd_type=
+QMAP_CMD_REQUEST;DATARMNET791beb2b4a->DATARMNET9eab1e957c.tx_id=htonl(
+rmnet_qmap_next_txid());DATARMNET791beb2b4a->DATARMNETde8ef6e56a=
+(0xd26+209-0xdf6);DATARMNET791beb2b4a->DATARMNET6f031e7934=DATARMNET6f031e7934;
+DATARMNET791beb2b4a->DATARMNET08e1628d23=DATARMNETc2284e5688?(0xd26+209-0xdf6):
+(0xd2d+202-0xdf7);if(DATARMNET40f827eabe)*DATARMNET40f827eabe=
+DATARMNET791beb2b4a->DATARMNET9eab1e957c.tx_id;return rmnet_qmap_send(
+DATARMNET543491eb0f,RMNET_CH_CTL,false);}void DATARMNET5ff569bc33(struct sk_buff
+*DATARMNET543491eb0f){struct DATARMNET548caa01db*DATARMNET791beb2b4a;struct 
+DATARMNET321b555862*DATARMNET66942f9c00=NULL;struct DATARMNET321b555862*
+DATARMNETf7b3d2c1a0;struct DATARMNET7fb3ee4333 DATARMNETa13fcf9070;int 
+DATARMNETefc9df3df2;if(DATARMNET543491eb0f->len<sizeof(struct 
+DATARMNET548caa01db))return;DATARMNET791beb2b4a=(struct DATARMNET548caa01db*)
+DATARMNET543491eb0f->data;if(!DATARMNET791beb2b4a||DATARMNET791beb2b4a->
+DATARMNET9eab1e957c.cmd_name!=QMAP_DATA_REPORT||DATARMNET791beb2b4a->
+DATARMNET9eab1e957c.cmd_type!=QMAP_CMD_ACK)return;if(DATARMNET791beb2b4a->len>
+ARRAY_SIZE(DATARMNET791beb2b4a->DATARMNETa960d37cad))return;spin_lock_bh(&
+DATARMNETc3c07e6644);list_for_each_entry(DATARMNETf7b3d2c1a0,&
+DATARMNET5e3c62e3a4,DATARMNET46c1c4375f){if(DATARMNETf7b3d2c1a0->tx_id==
+DATARMNET791beb2b4a->DATARMNET9eab1e957c.tx_id){DATARMNET66942f9c00=
+DATARMNETf7b3d2c1a0;list_del(&DATARMNET66942f9c00->DATARMNET46c1c4375f);
+DATARMNETb666ba3e85--;break;}}spin_unlock_bh(&DATARMNETc3c07e6644);if(
+DATARMNET66942f9c00){DATARMNETa13fcf9070.mux_id=DATARMNET791beb2b4a->
+DATARMNET9eab1e957c.mux_id;DATARMNETa13fcf9070.DATARMNET6f031e7934=
+DATARMNET791beb2b4a->DATARMNET6f031e7934;DATARMNETa13fcf9070.DATARMNET08e1628d23
+=DATARMNET791beb2b4a->DATARMNET08e1628d23;DATARMNETa13fcf9070.len=
+DATARMNET791beb2b4a->len;for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);
+DATARMNETefc9df3df2<DATARMNETa13fcf9070.len;DATARMNETefc9df3df2++)
+DATARMNETa13fcf9070.DATARMNETa960d37cad[DATARMNETefc9df3df2]=ntohl(
+DATARMNET791beb2b4a->DATARMNETa960d37cad[DATARMNETefc9df3df2]);
+DATARMNETbd1d5c8f28(&DATARMNET66942f9c00->DATARMNET54338da2ff,
+DATARMNET30180ab70e,DATARMNET24b8b9ef93,sizeof(DATARMNETa13fcf9070),&
+DATARMNETa13fcf9070,GFP_ATOMIC);kfree(DATARMNET66942f9c00);}}int 
+DATARMNET568dffe281(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
+DATARMNET54338da2ff){struct nlattr*DATARMNET9c5e00ef03;struct 
+DATARMNET7fb3ee4333 DATARMNETddcafd8b91;__be32 DATARMNET40f827eabe;struct 
+DATARMNET321b555862*DATARMNET66942f9c00;unsigned long DATARMNETfb1521ef26=
+(0xd2d+202-0xdf7);int DATARMNETb14e52a504;if(!DATARMNET54338da2ff)return-EINVAL;
+DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[DATARMNET24b8b9ef93];if(!
+DATARMNET9c5e00ef03){DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x4e\x6f\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x61\x74\x74\x72" "\n"
+);return-EINVAL;}if(nla_memcpy(&DATARMNETddcafd8b91,DATARMNET9c5e00ef03,sizeof(
+DATARMNETddcafd8b91))<=(0xd2d+202-0xdf7)){DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x63\x6f\x70\x79\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x61\x74\x74\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
+);return-EINVAL;}spin_lock_bh(&DATARMNETc3c07e6644);if(!DATARMNET5500f4ed98){
+DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x69\x67\x6e\x6f\x72\x65\x20\x74\x68\x65\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x72\x65\x71\x75\x65\x73\x74" "\n"
+);goto DATARMNETbf2e68b8a3;}if(DATARMNETb666ba3e85>=(0xd0a+237-0xdf2)){
+DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x74\x6f\x6f\x20\x6d\x61\x6e\x79\x20\x6f\x75\x74\x73\x74\x61\x6e\x64\x69\x6e\x67\x20\x72\x65\x71\x75\x65\x73\x74\x73" "\n"
+);goto DATARMNETbf2e68b8a3;}if(DATARMNET3eadc89edf(DATARMNETddcafd8b91.
+DATARMNET6f031e7934,DATARMNETddcafd8b91.mux_id,DATARMNETddcafd8b91.
+DATARMNET08e1628d23,&DATARMNET40f827eabe)){DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x63\x6f\x6d\x6d\x61\x6e\x64"
+);goto DATARMNETbf2e68b8a3;}DATARMNET66942f9c00=kzalloc(sizeof(*
+DATARMNET66942f9c00),GFP_ATOMIC);if(!DATARMNET66942f9c00){DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x6d\x65\x6d\x6f\x72\x79\x20\x66\x6f\x72\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74" "\n"
+);goto DATARMNETbf2e68b8a3;}DATARMNET66942f9c00->DATARMNET54338da2ff=*
+DATARMNET54338da2ff;DATARMNET66942f9c00->tx_id=DATARMNET40f827eabe;
+DATARMNET66942f9c00->expires=jiffies+HZ;if(list_empty(&DATARMNET5e3c62e3a4))
+DATARMNETfb1521ef26=DATARMNET66942f9c00->expires;list_add(&DATARMNET66942f9c00->
+DATARMNET46c1c4375f,&DATARMNET5e3c62e3a4);DATARMNETb666ba3e85++;spin_unlock_bh(&
+DATARMNETc3c07e6644);if(DATARMNETfb1521ef26){DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x69\x6d\x65\x72" "\n"
+);mod_timer(&DATARMNET2d8efce4f0,DATARMNETfb1521ef26);}return(0xd2d+202-0xdf7);
+DATARMNETbf2e68b8a3:spin_unlock_bh(&DATARMNETc3c07e6644);DATARMNETddcafd8b91.len
+=(0xd2d+202-0xdf7);DATARMNETb14e52a504=DATARMNETbd1d5c8f28(DATARMNET54338da2ff,
+DATARMNET30180ab70e,DATARMNET24b8b9ef93,sizeof(DATARMNETddcafd8b91),&
+DATARMNETddcafd8b91,GFP_KERNEL);return DATARMNETb14e52a504;}static void 
+DATARMNET2cc15953ac(struct timer_list*DATARMNET6e4292679f){struct 
+DATARMNET321b555862*DATARMNET66942f9c00;struct DATARMNET321b555862*
+DATARMNETf7b3d2c1a0;unsigned long DATARMNET02dfdbc38d=jiffies;bool 
+DATARMNETb7430302d6=false;DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x69\x6d\x65\x72\x20\x66\x69\x72\x65\x64" "\n"
+);spin_lock_bh(&DATARMNETc3c07e6644);list_for_each_entry_safe(
+DATARMNET66942f9c00,DATARMNETf7b3d2c1a0,&DATARMNET5e3c62e3a4,DATARMNET46c1c4375f
+){if(time_before_eq(DATARMNET66942f9c00->expires,DATARMNET02dfdbc38d)){list_del(
+&DATARMNET66942f9c00->DATARMNET46c1c4375f);kfree(DATARMNET66942f9c00);
+DATARMNETb666ba3e85--;DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x72\x65\x6d\x6f\x76\x65\x64\x20\x6f\x6e\x65\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x72\x65\x71\x75\x65\x73\x74" "\n"
+);}}if(!list_empty(&DATARMNET5e3c62e3a4))DATARMNETb7430302d6=true;spin_unlock_bh
+(&DATARMNETc3c07e6644);if(DATARMNETb7430302d6){DATARMNET112d724eff(
+"\x61\x70\x73\x3a\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x69\x6d\x65\x72\x20\x72\x65\x2d\x61\x72\x6d\x65\x64" "\n"
+);mod_timer(&DATARMNET2d8efce4f0,jiffies+HZ);}}static void DATARMNETb3f219d872(
+void){struct DATARMNET321b555862*DATARMNET66942f9c00;struct DATARMNET321b555862*
+DATARMNETf7b3d2c1a0;spin_lock_bh(&DATARMNETc3c07e6644);list_for_each_entry_safe(
+DATARMNET66942f9c00,DATARMNETf7b3d2c1a0,&DATARMNET5e3c62e3a4,DATARMNET46c1c4375f
+){list_del(&DATARMNET66942f9c00->DATARMNET46c1c4375f);kfree(DATARMNET66942f9c00)
+;}DATARMNET5500f4ed98=false;DATARMNETb666ba3e85=(0xd2d+202-0xdf7);spin_unlock_bh
+(&DATARMNETc3c07e6644);}static const struct rmnet_module_hook_register_info 
+DATARMNET644887c40e[]={{.hooknum=RMNET_MODULE_HOOK_APS_DATA_REPORT,.func=
+DATARMNET5ff569bc33,},};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(
 DATARMNETb14e52a504){pr_err(
@@ -657,18 +772,21 @@ DATARMNETb14e52a504){pr_err(
 );return DATARMNETb14e52a504;}register_netdevice_notifier(&DATARMNETc580548769);
 rcu_assign_pointer(rmnet_aps_pre_queue,DATARMNETe0c7b9d5a4);rcu_assign_pointer(
 rmnet_aps_post_queue,DATARMNET6ab4bbdaf4);rmnet_module_hook_register(
-DATARMNET509284caa6,ARRAY_SIZE(DATARMNET509284caa6));mutex_lock(&
+DATARMNET509284caa6,ARRAY_SIZE(DATARMNET509284caa6));rmnet_module_hook_register(
+DATARMNET644887c40e,ARRAY_SIZE(DATARMNET644887c40e));mutex_lock(&
 DATARMNETd7b5a80f84);DATARMNET54b95e4416=true;mutex_unlock(&DATARMNETd7b5a80f84)
 ;DATARMNET519162865c();return(0xd2d+202-0xdf7);}static void __exit 
 DATARMNETff67054ba9(void){DATARMNETb4a75cfdea();
 rmnet_module_hook_unregister_no_sync(DATARMNETbdf157f06a,ARRAY_SIZE(
-DATARMNETbdf157f06a));rcu_assign_pointer(rmnet_aps_pre_queue,NULL);
+DATARMNETbdf157f06a));rmnet_module_hook_unregister_no_sync(DATARMNET644887c40e,
+ARRAY_SIZE(DATARMNET644887c40e));rcu_assign_pointer(rmnet_aps_pre_queue,NULL);
 rcu_assign_pointer(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(&DATARMNETd21629e047);cancel_work_sync(&DATARMNET8e3aef0760);
+DATARMNETb3f219d872();del_timer_sync(&DATARMNET2d8efce4f0);
 unregister_netdevice_notifier(&DATARMNETc580548769);DATARMNETca7606cfd1();
 DATARMNET112d724eff("\x61\x70\x73\x3a\x20\x65\x78\x69\x74" "\n");}MODULE_LICENSE
 ("\x47\x50\x4c\x20\x76\x32");module_init(DATARMNET0718a3fa4c);module_exit(