Преглед на файлове

rmnet_aps: I9a1f87045e8ea1ab108d0ebf0afc5ee76905568e

Update to I9a1f87045e8ea1ab108d0ebf0afc5ee76905568e.

Change-Id: I9a1f87045e8ea1ab108d0ebf0afc5ee76905568e
Signed-off-by: Weiyi Chen <[email protected]>
Weiyi Chen преди 3 години
родител
ревизия
36b1c52e67
променени са 4 файла, в които са добавени 141 реда и са изтрити 82 реда
  1. 7 2
      aps/rmnet_aps.h
  2. 10 8
      aps/rmnet_aps_genl.c
  3. 3 2
      aps/rmnet_aps_genl.h
  4. 121 70
      aps/rmnet_aps_main.c

+ 7 - 2
aps/rmnet_aps.h

@@ -22,7 +22,12 @@
 struct DATARMNET5d4139d9d7{u32 cmd;u32 DATARMNETbb588401ec;u32 
 DATARMNET655f822a62;u32 ifindex;u8 DATARMNET6c2cba039d;u8 DATARMNET626c626b74;u8
  DATARMNET40bb1d945b;u8 DATARMNETecca9147fd;};struct DATARMNETca79857d4a{u32 cmd
-;u32 DATARMNETe65883bfce;u32 DATARMNETbb588401ec;};int DATARMNET37a9efbbcb(
-struct sk_buff*DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff);
+;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*DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff);int 
+DATARMNET1998d09852(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
+DATARMNET54338da2ff);
 #endif 
 

+ 10 - 8
aps/rmnet_aps_genl.c

@@ -15,7 +15,9 @@
 static struct nla_policy DATARMNET157d4c7a8a[DATARMNET3b044438b9+
 (0xd26+209-0xdf6)]={[DATARMNET98b93f2e86]=NLA_POLICY_EXACT_LEN(sizeof(struct 
 DATARMNET5d4139d9d7)),[DATARMNET818a0b6438]=NLA_POLICY_EXACT_LEN(sizeof(struct 
-DATARMNETca79857d4a)),};
+DATARMNETca79857d4a)),[DATARMNET572e4a28eb]=NLA_POLICY_EXACT_LEN(sizeof(struct 
+DATARMNET797a5b1493)),[DATARMNETe54d857ffe]=NLA_POLICY_EXACT_LEN(sizeof(struct 
+DATARMNET9a727f81bc)),};
 #define DATARMNET7dc6237681(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e)\
                                          \
 	{                                                                      \
@@ -23,10 +25,10 @@ DATARMNETca79857d4a)),};
 flags = (0xd2d+202-0xdf7),        \
 	}
 static const struct genl_ops DATARMNET27a52625e4[]={DATARMNET7dc6237681(
-DATARMNET15437be67e,DATARMNET37a9efbbcb),};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);}
+DATARMNET15437be67e,DATARMNET37a9efbbcb),DATARMNET7dc6237681(DATARMNET4f09ad7688
+,DATARMNET1998d09852),};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);}

+ 3 - 2
aps/rmnet_aps_genl.h

@@ -15,8 +15,9 @@
 #include <net/genetlink.h>
 #define DATARMNET33d1a3e23a (0xd26+209-0xdf6)
 #define DATARMNETa4a6e34e45 "\x52\x4d\x4e\x45\x54\x5f\x41\x50\x53"
-enum{DATARMNETeafde44f15,DATARMNET15437be67e,DATARMNET4ac82df478,};enum{
-DATARMNET900754429d,DATARMNET98b93f2e86,DATARMNET818a0b6438,DATARMNET074e71007e,
+enum{DATARMNETeafde44f15,DATARMNET15437be67e,DATARMNET4f09ad7688,
+DATARMNET4ac82df478,};enum{DATARMNET900754429d,DATARMNET98b93f2e86,
+DATARMNET818a0b6438,DATARMNET572e4a28eb,DATARMNETe54d857ffe,DATARMNET074e71007e,
 };
 #define DATARMNET3b044438b9 (DATARMNET074e71007e - (0xd26+209-0xdf6))
 int DATARMNETcfa8d492f8(void);void DATARMNETca7606cfd1(void);

+ 121 - 70
aps/rmnet_aps_main.c

@@ -18,9 +18,10 @@
 #include "rmnet_config.h"
 #include "rmnet_aps.h"
 #include "rmnet_aps_genl.h"
-static char*verinfo[]={"\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[]={"\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)
@@ -41,7 +42,7 @@ static char*verinfo[]={"\x37\x34\x31\x35\x39\x32\x31\x63",
 (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\x30";static u16 
+static const char*DATARMNETe5ef0e617c="\x31\x2e\x31";static u16 
 DATARMNET2fe4661b82=DATARMNET810b8d04cd;static struct genl_info 
 DATARMNET7d98961cbe;static u32 DATARMNETfef55eaf9a;static u8 DATARMNET9628311a6b
 [DATARMNET3bc5e7094a]={(0xd2d+202-0xdf7),(0xd03+244-0xdf1),(0xcfc+267-0xe00),
@@ -51,36 +52,36 @@ DATARMNET7520901fb5);struct DATARMNET6fd48c33f6{struct hlist_node hash_list;
 struct list_head DATARMNETed4d7b4a3c;struct DATARMNET5d4139d9d7 
 DATARMNET54338da2ff;u32 DATARMNET556cdfb5eb;u32 DATARMNETee01ad514b;unsigned 
 long expires;u64 DATARMNETa27e524d8a;bool DATARMNET626c626b74;bool 
-DATARMNET40bb1d945b;};extern void(*rmnet_aps_set_prio)(struct net_device*
-DATARMNET413e8dcf7b,struct sk_buff*DATARMNET543491eb0f);extern struct 
-genl_family DATARMNETcdba30eca9;static void DATARMNET30dd480cad(struct 
-net_device*DATARMNET413e8dcf7b,struct sk_buff*DATARMNET543491eb0f);static void 
-DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 DATARMNETf8bbe3b0fb);static void 
-DATARMNETf844db79d9(struct timer_list*DATARMNET6e4292679f);static DEFINE_TIMER(
-DATARMNETd21629e047,DATARMNETf844db79d9);static void DATARMNET5979020f87(struct 
-work_struct*DATARMNET33110a3ff5);static DECLARE_DELAYED_WORK(DATARMNET3481998252
-,DATARMNET5979020f87);static int DATARMNET998f6cbce7(struct notifier_block*
-DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*DATARMNETaef95eabe8);
-static struct notifier_block DATARMNETc580548769 __read_mostly={.notifier_call=
-DATARMNET998f6cbce7,.priority=(0xd1f+216-0xdf5),};static struct 
-DATARMNET6fd48c33f6*DATARMNET3ed11fdc8d(u32 DATARMNETbb588401ec){struct 
-DATARMNET6fd48c33f6*DATARMNETaa568481cf;hash_for_each_possible(
-DATARMNET2ee773c365,DATARMNETaa568481cf,hash_list,DATARMNETbb588401ec){if(
-DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec==
-DATARMNETbb588401ec)return DATARMNETaa568481cf;}return NULL;}static void 
-DATARMNET1e616c2160(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){hash_add(
-DATARMNET2ee773c365,&DATARMNETaa568481cf->hash_list,DATARMNETaa568481cf->
-DATARMNET54338da2ff.DATARMNETbb588401ec);list_add(&DATARMNETaa568481cf->
-DATARMNETed4d7b4a3c,&DATARMNET7520901fb5);DATARMNETfef55eaf9a++;if(
-DATARMNETaa568481cf->expires){if(!timer_pending(&DATARMNETd21629e047)||
-time_before(DATARMNETaa568481cf->expires,DATARMNETd21629e047.expires))mod_timer(
-&DATARMNETd21629e047,DATARMNETaa568481cf->expires);}if(DATARMNETfef55eaf9a==
-(0xd26+209-0xdf6))WRITE_ONCE(rmnet_aps_set_prio,DATARMNET30dd480cad);}static 
-void DATARMNET7fa3dd63cb(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){
-hash_del(&DATARMNETaa568481cf->hash_list);list_del(&DATARMNETaa568481cf->
-DATARMNETed4d7b4a3c);if(likely(DATARMNETfef55eaf9a))DATARMNETfef55eaf9a--;else 
-DATARMNET112d724eff("aps: flow count is aleady 0\n");if(!DATARMNETfef55eaf9a){
-WRITE_ONCE(rmnet_aps_set_prio,NULL);del_timer(&DATARMNETd21629e047);}kfree(
+DATARMNET40bb1d945b;};extern void(*rmnet_aps_pre_queue)(struct net_device*
+DATARMNET413e8dcf7b,struct sk_buff*DATARMNET543491eb0f);extern int(*
+rmnet_aps_post_queue)(struct net_device*DATARMNET413e8dcf7b,struct sk_buff*
+DATARMNET543491eb0f);extern struct genl_family DATARMNETcdba30eca9;static void 
+DATARMNET30dd480cad(struct net_device*DATARMNET413e8dcf7b,struct sk_buff*
+DATARMNET543491eb0f);static void DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 
+DATARMNETf8bbe3b0fb);static void DATARMNETf844db79d9(struct timer_list*
+DATARMNET6e4292679f);static DEFINE_TIMER(DATARMNETd21629e047,DATARMNETf844db79d9
+);static void DATARMNET5979020f87(struct work_struct*DATARMNET33110a3ff5);static
+ DECLARE_DELAYED_WORK(DATARMNET3481998252,DATARMNET5979020f87);static int 
+DATARMNET998f6cbce7(struct notifier_block*DATARMNET272c159b3c,unsigned long 
+DATARMNET9a4761f31c,void*DATARMNETaef95eabe8);static struct notifier_block 
+DATARMNETc580548769 __read_mostly={.notifier_call=DATARMNET998f6cbce7,.priority=
+(0xd1f+216-0xdf5),};static struct DATARMNET6fd48c33f6*DATARMNET3ed11fdc8d(u32 
+DATARMNETbb588401ec){struct DATARMNET6fd48c33f6*DATARMNETaa568481cf;
+hash_for_each_possible(DATARMNET2ee773c365,DATARMNETaa568481cf,hash_list,
+DATARMNETbb588401ec){if(DATARMNETaa568481cf->DATARMNET54338da2ff.
+DATARMNETbb588401ec==DATARMNETbb588401ec)return DATARMNETaa568481cf;}return NULL
+;}static void DATARMNET1e616c2160(struct DATARMNET6fd48c33f6*DATARMNETaa568481cf
+){hash_add(DATARMNET2ee773c365,&DATARMNETaa568481cf->hash_list,
+DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec);list_add(&
+DATARMNETaa568481cf->DATARMNETed4d7b4a3c,&DATARMNET7520901fb5);
+DATARMNETfef55eaf9a++;if(DATARMNETaa568481cf->expires){if(!timer_pending(&
+DATARMNETd21629e047)||time_before(DATARMNETaa568481cf->expires,
+DATARMNETd21629e047.expires))mod_timer(&DATARMNETd21629e047,DATARMNETaa568481cf
+->expires);}}static void DATARMNET7fa3dd63cb(struct DATARMNET6fd48c33f6*
+DATARMNETaa568481cf){hash_del(&DATARMNETaa568481cf->hash_list);list_del(&
+DATARMNETaa568481cf->DATARMNETed4d7b4a3c);if(likely(DATARMNETfef55eaf9a))
+DATARMNETfef55eaf9a--;else DATARMNET112d724eff("aps: flow count is aleady 0\n");
+if(!DATARMNETfef55eaf9a)del_timer(&DATARMNETd21629e047);kfree(
 DATARMNETaa568481cf);}static void DATARMNET9ac8a34003(void){struct 
 DATARMNET6fd48c33f6*DATARMNETaa568481cf,*DATARMNETaf503e06a5;struct hlist_node*
 DATARMNET0386f6f82a;int DATARMNET5c2fd31d7b;del_timer(&DATARMNETd21629e047);
@@ -89,7 +90,7 @@ DATARMNET7520901fb5,DATARMNETed4d7b4a3c){list_del(&DATARMNETaa568481cf->
 DATARMNETed4d7b4a3c);}hash_for_each_safe(DATARMNET2ee773c365,DATARMNET5c2fd31d7b
 ,DATARMNET0386f6f82a,DATARMNETaa568481cf,hash_list){hash_del(&
 DATARMNETaa568481cf->hash_list);kfree(DATARMNETaa568481cf);}DATARMNETfef55eaf9a=
-(0xd2d+202-0xdf7);WRITE_ONCE(rmnet_aps_set_prio,NULL);DATARMNET112d724eff(
+(0xd2d+202-0xdf7);DATARMNET112d724eff(
 "\x61\x70\x73\x3a\x20\x61\x6c\x6c\x20\x66\x6c\x6f\x77\x73\x20\x72\x65\x6d\x6f\x76\x65\x64" "\n"
 );}static void DATARMNET250448eb06(int ifindex){struct DATARMNET6fd48c33f6*
 DATARMNETaa568481cf;struct hlist_node*DATARMNET0386f6f82a;int 
@@ -204,53 +205,55 @@ DATARMNET54338da2ff.DATARMNET626c626b74;DATARMNETaa568481cf->DATARMNET40bb1d945b
 DATARMNET3281082da4(DATARMNETaa568481cf);DATARMNET112d724eff(
 "\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x75\x70\x64\x61\x74\x65\x64\x2c\x20\x63\x6e\x74\x20\x25\x75" "\n"
 ,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec,
-DATARMNETfef55eaf9a);}return(0xd2d+202-0xdf7);}static int DATARMNET1d51fe00f2(
-struct genl_info*DATARMNET54338da2ff,struct DATARMNETca79857d4a*
-DATARMNETa13fcf9070,gfp_t flags){struct sk_buff*DATARMNET543491eb0f;void*
-DATARMNETd7f97e2e5a;int DATARMNETb14e52a504;if(!DATARMNET54338da2ff||!
-DATARMNETa13fcf9070)return-EINVAL;DATARMNET543491eb0f=genlmsg_new(sizeof(*
-DATARMNETa13fcf9070),flags);if(!DATARMNET543491eb0f)goto DATARMNETbf4095f79e;
-DATARMNETd7f97e2e5a=genlmsg_put(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
-DATARMNET54338da2ff->snd_seq+(0xd26+209-0xdf6),&DATARMNETcdba30eca9,
-(0xd2d+202-0xdf7),DATARMNET15437be67e);if(!DATARMNETd7f97e2e5a)goto 
+DATARMNETfef55eaf9a);}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*DATARMNETd7f97e2e5a;int DATARMNETb14e52a504;if(unlikely
+(!DATARMNET54338da2ff))return-EINVAL;DATARMNET543491eb0f=genlmsg_new(
+nla_total_size(DATARMNET5d9df1c423),flags);if(!DATARMNET543491eb0f)goto 
+DATARMNETbf4095f79e;DATARMNETd7f97e2e5a=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,
-DATARMNET818a0b6438,sizeof(*DATARMNETa13fcf9070),DATARMNETa13fcf9070);if(
+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("\x25\x73",
-"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x61\x70\x73\x20\x61\x64\x64\x20\x66\x6c\x6f\x77\x20\x72\x65\x73\x70" "\n"
-);return-EFAULT;}static void DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 
+return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:DATARMNET112d724eff(
+"\x41\x50\x53\x5f\x47\x4e\x4c\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(
 "\x61\x70\x73\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=
-DATARMNETbb588401ec;if(DATARMNET1d51fe00f2(&DATARMNET7d98961cbe,&
+DATARMNETbb588401ec;if(DATARMNETbd1d5c8f28(&DATARMNET7d98961cbe,
+DATARMNET15437be67e,DATARMNET818a0b6438,sizeof(DATARMNETa13fcf9070),&
 DATARMNETa13fcf9070,GFP_ATOMIC)){DATARMNET112d724eff(
 "\x61\x70\x73\x20\x63\x6c\x69\x65\x6e\x74\x20\x73\x65\x6e\x64\x20\x66\x61\x69\x6c\x65\x64\x2e\x20\x64\x69\x73\x61\x62\x6c\x65\x20\x63\x6c\x69\x65\x6e\x74" "\n"
 );DATARMNET7d98961cbe.snd_portid=(0xd2d+202-0xdf7);}}static void 
 DATARMNET30dd480cad(struct net_device*DATARMNET413e8dcf7b,struct sk_buff*
 DATARMNET543491eb0f){struct DATARMNET6fd48c33f6*DATARMNETaa568481cf;if(
 DATARMNET543491eb0f->priority>>(0xeb7+1158-0x132d)!=DATARMNET2fe4661b82)return;
-if(!READ_ONCE(DATARMNETfef55eaf9a))return;spin_lock_bh(&DATARMNET33bd4139f4);
-DATARMNETaa568481cf=DATARMNET3ed11fdc8d(DATARMNET543491eb0f->priority);if(
-DATARMNETaa568481cf){DATARMNET543491eb0f->priority=DATARMNETaa568481cf->
-DATARMNET556cdfb5eb;DATARMNETaa568481cf->expires=jiffies+DATARMNETaa568481cf->
-DATARMNETee01ad514b;DATARMNETaa568481cf->DATARMNETa27e524d8a+=
-DATARMNET543491eb0f->len;}spin_unlock_bh(&DATARMNET33bd4139f4);if(
-DATARMNETaa568481cf)schedule_delayed_work(&DATARMNET3481998252,
-DATARMNETfd026b105a);}static int DATARMNET998f6cbce7(struct notifier_block*
-DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*DATARMNETaef95eabe8){
-struct net_device*DATARMNET413e8dcf7b;DATARMNET413e8dcf7b=
-netdev_notifier_info_to_dev(DATARMNETaef95eabe8);if(unlikely(!
-DATARMNET413e8dcf7b))return NOTIFY_DONE;if(strncmp(DATARMNET413e8dcf7b->name,
-"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd27+224-0xdfd)))return NOTIFY_DONE
-;switch(DATARMNET9a4761f31c){case NETDEV_DOWN:spin_lock_bh(&DATARMNET33bd4139f4)
-;DATARMNET250448eb06(DATARMNET413e8dcf7b->ifindex);spin_unlock_bh(&
-DATARMNET33bd4139f4);break;default:break;}return NOTIFY_DONE;}int 
-DATARMNET37a9efbbcb(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
+spin_lock_bh(&DATARMNET33bd4139f4);DATARMNETaa568481cf=DATARMNET3ed11fdc8d(
+DATARMNET543491eb0f->priority);if(DATARMNETaa568481cf){DATARMNET543491eb0f->
+priority=DATARMNETaa568481cf->DATARMNET556cdfb5eb;DATARMNETaa568481cf->expires=
+jiffies+DATARMNETaa568481cf->DATARMNETee01ad514b;DATARMNETaa568481cf->
+DATARMNETa27e524d8a+=DATARMNET543491eb0f->len;}spin_unlock_bh(&
+DATARMNET33bd4139f4);if(DATARMNETaa568481cf)schedule_delayed_work(&
+DATARMNET3481998252,DATARMNETfd026b105a);}static int DATARMNET998f6cbce7(struct 
+notifier_block*DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*
+DATARMNETaef95eabe8){struct net_device*DATARMNET413e8dcf7b;struct rmnet_priv*
+DATARMNETe823dcf978;DATARMNET413e8dcf7b=netdev_notifier_info_to_dev(
+DATARMNETaef95eabe8);if(unlikely(!DATARMNET413e8dcf7b))return NOTIFY_DONE;if(
+strncmp(DATARMNET413e8dcf7b->name,"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",
+(0xd27+224-0xdfd)))return NOTIFY_DONE;DATARMNETe823dcf978=netdev_priv(
+DATARMNET413e8dcf7b);switch(DATARMNET9a4761f31c){case NETDEV_DOWN:
+DATARMNETe823dcf978->aps_cb[(0xd2d+202-0xdf7)]=(0xd2d+202-0xdf7);spin_lock_bh(&
+DATARMNET33bd4139f4);DATARMNET250448eb06(DATARMNET413e8dcf7b->ifindex);
+spin_unlock_bh(&DATARMNET33bd4139f4);break;default:break;}return NOTIFY_DONE;}
+int DATARMNET37a9efbbcb(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
 DATARMNET54338da2ff){struct nlattr*DATARMNET9c5e00ef03;struct 
 DATARMNET5d4139d9d7 DATARMNETddcafd8b91;struct DATARMNETca79857d4a 
 DATARMNETa13fcf9070;int DATARMNETb14e52a504;DATARMNET112d724eff(
@@ -275,15 +278,63 @@ DATARMNETb14e52a504=DATARMNET82d65f9ca6(&DATARMNETddcafd8b91);break;default:
 DATARMNETb14e52a504=-EINVAL;break;}spin_unlock_bh(&DATARMNET33bd4139f4);
 DATARMNETa13fcf9070.cmd=DATARMNETddcafd8b91.cmd;DATARMNETa13fcf9070.
 DATARMNETe65883bfce=DATARMNETb14e52a504;DATARMNETa13fcf9070.DATARMNETbb588401ec=
-DATARMNETddcafd8b91.DATARMNETbb588401ec;DATARMNETb14e52a504=DATARMNET1d51fe00f2(
-DATARMNET54338da2ff,&DATARMNETa13fcf9070,GFP_KERNEL);return DATARMNETb14e52a504;
-}static int __init DATARMNET0718a3fa4c(void){int DATARMNETb14e52a504;pr_info(
+DATARMNETddcafd8b91.DATARMNETbb588401ec;DATARMNETb14e52a504=DATARMNETbd1d5c8f28(
+DATARMNET54338da2ff,DATARMNET15437be67e,DATARMNET818a0b6438,sizeof(
+DATARMNETa13fcf9070),&DATARMNETa13fcf9070,GFP_KERNEL);return DATARMNETb14e52a504
+;}static ktime_t DATARMNETe7a1ab1dab;int DATARMNET1998d09852(struct sk_buff*
+DATARMNETaafc1d9519,struct genl_info*DATARMNET54338da2ff){struct nlattr*
+DATARMNET9c5e00ef03;struct DATARMNET797a5b1493 DATARMNETddcafd8b91;struct 
+DATARMNET9a727f81bc DATARMNETa13fcf9070;struct net_device*DATARMNET413e8dcf7b;
+struct rmnet_priv*DATARMNETe823dcf978;int DATARMNETb14e52a504;
+DATARMNET112d724eff("\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x25\x73" "\n",__func__
+);if(!DATARMNET54338da2ff){DATARMNET112d724eff(
+"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x65\x72\x72\x6f\x72\x20\x2d\x20\x69\x6e\x66\x6f\x20\x69\x73\x20\x6e\x75\x6c\x6c" "\n"
+);return-EINVAL;}DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[
+DATARMNET572e4a28eb];if(DATARMNET9c5e00ef03){if(nla_memcpy(&DATARMNETddcafd8b91,
+DATARMNET9c5e00ef03,sizeof(DATARMNETddcafd8b91))<=(0xd2d+202-0xdf7)){
+DATARMNET112d724eff(
+"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6c\x61\x5f\x6d\x65\x6d\x63\x70\x79\x20\x66\x61\x69\x6c\x65\x64\x20\x25\x64" "\n"
+,DATARMNET572e4a28eb);return-EINVAL;}}else{DATARMNET112d724eff(
+"\x41\x50\x53\x5f\x47\x4e\x4c\x3a\x20\x6e\x6f\x20\x69\x6e\x66\x6f\x2d\x3e\x61\x74\x74\x72\x73\x20\x25\x64" "\n"
+,DATARMNET572e4a28eb);return-EINVAL;}DATARMNET112d724eff(
+"\x69\x66\x69\x6e\x64\x65\x78\x20\x25\x75\x20\x65\x78\x70\x69\x72\x65\x5f\x6d\x73\x20\x25\x75" "\n"
+,DATARMNETddcafd8b91.ifindex,DATARMNETddcafd8b91.DATARMNETc277c62678);if(
+DATARMNETddcafd8b91.DATARMNETc277c62678){ktime_t DATARMNET35f4c14174=ms_to_ktime
+(DATARMNETddcafd8b91.DATARMNETc277c62678);if(DATARMNETe7a1ab1dab!=
+DATARMNET35f4c14174)DATARMNETe7a1ab1dab=DATARMNET35f4c14174;}DATARMNET413e8dcf7b
+=dev_get_by_index(&init_net,DATARMNETddcafd8b91.ifindex);if(DATARMNET413e8dcf7b)
+{if(!strncmp(DATARMNET413e8dcf7b->name,
+"\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd27+224-0xdfd))){
+DATARMNETe823dcf978=netdev_priv(DATARMNET413e8dcf7b);DATARMNETe823dcf978->aps_cb
+[(0xd2d+202-0xdf7)]=DATARMNETddcafd8b91.DATARMNETc277c62678?(0xd26+209-0xdf6):
+(0xd2d+202-0xdf7);}dev_put(DATARMNET413e8dcf7b);}memset(&DATARMNETa13fcf9070,
+(0xd2d+202-0xdf7),sizeof(DATARMNETa13fcf9070));DATARMNETa13fcf9070.ifindex=
+DATARMNETddcafd8b91.ifindex;DATARMNETb14e52a504=DATARMNETbd1d5c8f28(
+DATARMNET54338da2ff,DATARMNET4f09ad7688,DATARMNETe54d857ffe,sizeof(
+DATARMNETa13fcf9070),&DATARMNETa13fcf9070,GFP_KERNEL);return DATARMNETb14e52a504
+;}static void DATARMNETe0c7b9d5a4(struct net_device*DATARMNET413e8dcf7b,struct 
+sk_buff*DATARMNET543491eb0f){struct rmnet_priv*DATARMNETe823dcf978=netdev_priv(
+DATARMNET413e8dcf7b);if(DATARMNETe823dcf978->aps_cb[(0xd2d+202-0xdf7)])
+skb_hwtstamps(DATARMNET543491eb0f)->hwtstamp=ktime_get_boottime();else 
+skb_hwtstamps(DATARMNET543491eb0f)->hwtstamp=(0xd2d+202-0xdf7);if(READ_ONCE(
+DATARMNETfef55eaf9a))DATARMNET30dd480cad(DATARMNET413e8dcf7b,DATARMNET543491eb0f
+);}static int DATARMNET6ab4bbdaf4(struct net_device*DATARMNET413e8dcf7b,struct 
+sk_buff*DATARMNET543491eb0f){struct rmnet_priv*DATARMNETe823dcf978=netdev_priv(
+DATARMNET413e8dcf7b);ktime_t DATARMNET912d2a7edd;if(DATARMNETe823dcf978->aps_cb[
+(0xd2d+202-0xdf7)]&&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 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(
 "\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);
-return(0xd2d+202-0xdf7);}static void __exit DATARMNETff67054ba9(void){
+rcu_assign_pointer(rmnet_aps_pre_queue,DATARMNETe0c7b9d5a4);rcu_assign_pointer(
+rmnet_aps_post_queue,DATARMNET6ab4bbdaf4);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();
 DATARMNET446f780f19((0xd2d+202-0xdf7),DATARMNET94016043b8);spin_lock_bh(&
 DATARMNET33bd4139f4);DATARMNET9ac8a34003();spin_unlock_bh(&DATARMNET33bd4139f4);
 cancel_delayed_work_sync(&DATARMNET3481998252);del_timer_sync(&