// SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * RMNET PERF TCP framework * */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "rmnet_private.h" #include "rmnet_perf_tcp.h" #define DATARMNET3dad3dfdc0 ((0x16a8+1565-0x14f5)) #define DATARMNETe6309522cf ((0xdf7+6169-0x241c)) #define DATARMNET99a2e6e390 (192000) #define DATARMNET714c9c3081 ((0xeb7+1158-0x132d)) #define DATARMNET347bd5eb15 \ (const_ilog2(DATARMNET714c9c3081)) enum{DATARMNETe0e37fef7a,DATARMNETf354672897,DATARMNET9cc765a89e, DATARMNETb03f9571a3,DATARMNET53c8cfb28e,DATARMNET74f0a28fec,DATARMNETaa18c75b61, };struct DATARMNET4b40fe9cd4{union{__be32 DATARMNETdfe430c2d6;struct in6_addr DATARMNET815cbb4bf5;};union{__be32 DATARMNET2cb607d686;struct in6_addr DATARMNETc3f31215b7;};union{struct{__be16 DATARMNET08e913477e;__be16 DATARMNETda7f7fa492;};u32 DATARMNET556bcfcf8f;};u8 DATARMNET0d956cc77a;};struct DATARMNETddbc1e5435{struct hlist_node hash;struct rcu_head DATARMNET28bfe9e6ad; struct DATARMNET4b40fe9cd4 DATARMNET54338da2ff;unsigned long DATARMNET763f2e5fac ;u32 DATARMNETfef3675ce7;u32 DATARMNET9076d335ab;u32 DATARMNET9c389f3b86;u32 DATARMNET9a57846b4e;u32 DATARMNETb8fc35ed64;bool DATARMNET55056146f6;u8 DATARMNET1717afebc7;};struct DATARMNET74cfea3d20{struct delayed_work DATARMNET190b4452e8;bool DATARMNETcd94e0d3c7;};static DEFINE_SPINLOCK( DATARMNET8e3721c47d);static DEFINE_HASHTABLE(DATARMNET1fd012f255, DATARMNET347bd5eb15);static u32 DATARMNET1c62a8e2c9;static struct DATARMNET74cfea3d20 DATARMNETac6535da80;static u32 DATARMNET84337b8855= (0xeb7+698-0x110d);module_param_named(rmnet_perf_tcp_knob0,DATARMNET84337b8855, uint,(0xdb7+6665-0x261c));static u64 DATARMNETeb09e391b5[DATARMNETaa18c75b61]; module_param_array_named(rmnet_perf_tcp_stat,DATARMNETeb09e391b5,ullong,NULL, (0xcb7+5769-0x221c));static void DATARMNET32b91c8ae6(u32 DATARMNET248f120dd5){if (DATARMNET248f120dd5DATARMNET763f2e5fac> DATARMNETc2d5c71ce1)return true;return false;}static void DATARMNET776e08992c( struct rcu_head*DATARMNET5d432e897f){struct DATARMNETddbc1e5435* DATARMNET63b1a086d5;DATARMNET63b1a086d5=container_of(DATARMNET5d432e897f,struct DATARMNETddbc1e5435,DATARMNET28bfe9e6ad);kfree(DATARMNET63b1a086d5);}static bool DATARMNETb8167597bc(bool DATARMNETe78ad140cc){struct DATARMNETddbc1e5435* DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;unsigned long DATARMNET763f2e5fac;int DATARMNET5c2fd31d7b;DATARMNET763f2e5fac=jiffies; hash_for_each_safe(DATARMNET1fd012f255,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a, DATARMNET63b1a086d5,hash){if(DATARMNET63b1a086d5->DATARMNET1717afebc7)continue; if(DATARMNETe78ad140cc||DATARMNETd92eab34a9(DATARMNET63b1a086d5, DATARMNET763f2e5fac)){DATARMNET63b1a086d5->DATARMNET1717afebc7=true;hash_del_rcu (&DATARMNET63b1a086d5->hash);call_rcu(&DATARMNET63b1a086d5->DATARMNET28bfe9e6ad, DATARMNET776e08992c);DATARMNET32b91c8ae6(DATARMNET9cc765a89e); DATARMNET1c62a8e2c9--;}}return!!DATARMNET1c62a8e2c9;}static void DATARMNETfec9085d8e(struct work_struct*DATARMNET190b4452e8){struct DATARMNET74cfea3d20*DATARMNET9dd153bdf2;unsigned long DATARMNETfb0677cc3c;bool DATARMNET6e1c466378;DATARMNET9dd153bdf2=container_of(to_delayed_work( DATARMNET190b4452e8),struct DATARMNET74cfea3d20,DATARMNET190b4452e8); spin_lock_irqsave(&DATARMNET8e3721c47d,DATARMNETfb0677cc3c);DATARMNET6e1c466378= DATARMNETb8167597bc(DATARMNET9dd153bdf2->DATARMNETcd94e0d3c7);if( DATARMNET6e1c466378){unsigned long DATARMNETf71ef1b8da;DATARMNETf71ef1b8da= msecs_to_jiffies(DATARMNETe6309522cf);schedule_delayed_work(&DATARMNET9dd153bdf2 ->DATARMNET190b4452e8,DATARMNETf71ef1b8da);}spin_unlock_irqrestore(& DATARMNET8e3721c47d,DATARMNETfb0677cc3c);}static bool DATARMNET2f1039220d(struct DATARMNET4b40fe9cd4*DATARMNETae0905b0b3,struct DATARMNET4b40fe9cd4* DATARMNETdb49f21565){if(DATARMNETae0905b0b3->DATARMNET0d956cc77a!= DATARMNETdb49f21565->DATARMNET0d956cc77a||DATARMNETae0905b0b3-> DATARMNET08e913477e!=DATARMNETdb49f21565->DATARMNET08e913477e|| DATARMNETae0905b0b3->DATARMNETda7f7fa492!=DATARMNETdb49f21565-> DATARMNETda7f7fa492)return false;if(DATARMNETae0905b0b3->DATARMNET0d956cc77a== (0xd11+230-0xdf3))return DATARMNETae0905b0b3->DATARMNETdfe430c2d6== DATARMNETdb49f21565->DATARMNETdfe430c2d6&&DATARMNETae0905b0b3-> DATARMNET2cb607d686==DATARMNETdb49f21565->DATARMNET2cb607d686;return! ipv6_addr_cmp(&DATARMNETae0905b0b3->DATARMNET815cbb4bf5,&DATARMNETdb49f21565-> DATARMNET815cbb4bf5)&&!ipv6_addr_cmp(&DATARMNETae0905b0b3->DATARMNETc3f31215b7,& DATARMNETdb49f21565->DATARMNETc3f31215b7);}static struct DATARMNETddbc1e5435* DATARMNETba919c78e5(struct DATARMNET4b40fe9cd4*DATARMNET3396919a68)__must_hold(& DATARMNET8e3721c47d){struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;if( DATARMNET1c62a8e2c9>=DATARMNET84337b8855)return NULL;DATARMNET63b1a086d5=kzalloc (sizeof(*DATARMNET63b1a086d5),GFP_ATOMIC);if(!DATARMNET63b1a086d5){ DATARMNET32b91c8ae6(DATARMNETf354672897);return NULL;}INIT_HLIST_NODE(& DATARMNET63b1a086d5->hash);memcpy(&DATARMNET63b1a086d5->DATARMNET54338da2ff, DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));DATARMNET63b1a086d5-> DATARMNET9a57846b4e=DATARMNET99a2e6e390;DATARMNET63b1a086d5->DATARMNET763f2e5fac =jiffies;hash_add_rcu(DATARMNET1fd012f255,&DATARMNET63b1a086d5->hash, DATARMNET3396919a68->DATARMNET556bcfcf8f);DATARMNET32b91c8ae6( DATARMNETe0e37fef7a);if(!DATARMNET1c62a8e2c9){unsigned long DATARMNETf71ef1b8da; DATARMNETf71ef1b8da=msecs_to_jiffies(DATARMNETe6309522cf);schedule_delayed_work( &DATARMNETac6535da80.DATARMNET190b4452e8,DATARMNETf71ef1b8da);} DATARMNET1c62a8e2c9++;return DATARMNET63b1a086d5;}static void DATARMNET11a5f0fd38(struct DATARMNETddbc1e5435*DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f,bool DATARMNETd147c14c0e)__must_hold(RCU){struct tcphdr*DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f);struct rmnet_skb_cb* DATARMNET1ec4882bf7=RMNET_SKB_CB(DATARMNET543491eb0f);DATARMNET63b1a086d5-> DATARMNET9c389f3b86=DATARMNET543491eb0f->hash;if(DATARMNETd147c14c0e){u32 DATARMNET9076d335ab=ntohl(DATARMNET668416551c->ack_seq);WRITE_ONCE( DATARMNET63b1a086d5->DATARMNET9076d335ab,DATARMNET9076d335ab);WRITE_ONCE( DATARMNET63b1a086d5->DATARMNETfef3675ce7,DATARMNET9076d335ab);}else{u32 DATARMNETfef3675ce7=ntohl(DATARMNET668416551c->seq);WRITE_ONCE( DATARMNET63b1a086d5->DATARMNETfef3675ce7,DATARMNETfef3675ce7);WRITE_ONCE( DATARMNET63b1a086d5->DATARMNET9076d335ab,DATARMNETfef3675ce7-(0xd26+209-0xdf6)); DATARMNET1ec4882bf7->bif=(0xd2d+202-0xdf7);DATARMNET1ec4882bf7->ack_thresh= READ_ONCE(DATARMNET63b1a086d5->DATARMNET9a57846b4e);}}static struct DATARMNETddbc1e5435*DATARMNET9f0aaf07cc(struct DATARMNET4b40fe9cd4* DATARMNET3396919a68,struct sk_buff*DATARMNET543491eb0f,bool DATARMNETd147c14c0e) __must_hold(RCU){struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;unsigned long DATARMNETfb0677cc3c;spin_lock_irqsave(&DATARMNET8e3721c47d,DATARMNETfb0677cc3c); hash_for_each_possible_rcu(DATARMNET1fd012f255,DATARMNET63b1a086d5,hash, DATARMNET3396919a68->DATARMNET556bcfcf8f){if(DATARMNET63b1a086d5-> DATARMNET1717afebc7)continue;if(DATARMNET2f1039220d(&DATARMNET63b1a086d5-> DATARMNET54338da2ff,DATARMNET3396919a68)){spin_unlock_irqrestore(& DATARMNET8e3721c47d,DATARMNETfb0677cc3c);return DATARMNET63b1a086d5;}} DATARMNET63b1a086d5=DATARMNETba919c78e5(DATARMNET3396919a68); spin_unlock_irqrestore(&DATARMNET8e3721c47d,DATARMNETfb0677cc3c);if( DATARMNET63b1a086d5)DATARMNET11a5f0fd38(DATARMNET63b1a086d5,DATARMNET543491eb0f, DATARMNETd147c14c0e);return DATARMNET63b1a086d5;}static struct sock* DATARMNETc0b5d624ae(struct DATARMNET4b40fe9cd4*DATARMNET3396919a68,struct net_device*DATARMNETc96400be1e){struct net*net=dev_net(DATARMNETc96400be1e);if( DATARMNET3396919a68->DATARMNET0d956cc77a==(0xd11+230-0xdf3))return inet_lookup_established(net,&tcp_hashinfo,DATARMNET3396919a68-> DATARMNETdfe430c2d6,DATARMNET3396919a68->DATARMNET08e913477e,DATARMNET3396919a68 ->DATARMNET2cb607d686,DATARMNET3396919a68->DATARMNETda7f7fa492, DATARMNETc96400be1e->ifindex);return __inet6_lookup_established(net,& tcp_hashinfo,&DATARMNET3396919a68->DATARMNET815cbb4bf5,DATARMNET3396919a68-> DATARMNET08e913477e,&DATARMNET3396919a68->DATARMNETc3f31215b7,ntohs( DATARMNET3396919a68->DATARMNETda7f7fa492),DATARMNETc96400be1e->ifindex, (0xd2d+202-0xdf7));}static void DATARMNET31a7673e56(struct DATARMNETddbc1e5435* DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f)__must_hold(RCU){struct sock*sk;if(DATARMNET543491eb0f->sk){sk=DATARMNET543491eb0f->sk;if(sk_fullsock(sk )){if(sk->sk_state==TCP_ESTABLISHED&&!sock_flag(sk,SOCK_DEAD)&&!sk_unhashed(sk) &&sk->sk_shutdown!=SHUTDOWN_MASK){inet_csk(sk)->icsk_ack.pending|=ICSK_ACK_NOW; DATARMNET63b1a086d5->DATARMNETb8fc35ed64++;DATARMNET32b91c8ae6( DATARMNET74f0a28fec);}}return;}sk=DATARMNETc0b5d624ae(&DATARMNET63b1a086d5-> DATARMNET54338da2ff,DATARMNET543491eb0f->dev);if(!sk){struct rmnet_skb_cb* DATARMNET1ec4882bf7=RMNET_SKB_CB(DATARMNET543491eb0f);DATARMNET32b91c8ae6( DATARMNETb03f9571a3);DATARMNET63b1a086d5->DATARMNET55056146f6=true; DATARMNET1ec4882bf7->tethered=true;return;}if(sk_fullsock(sk)){bh_lock_sock(sk); if(sk->sk_state==TCP_ESTABLISHED&&!sock_flag(sk,SOCK_DEAD)&&!sk_unhashed(sk)&&sk ->sk_shutdown!=SHUTDOWN_MASK){inet_csk(sk)->icsk_ack.pending|=ICSK_ACK_NOW; inet_csk_schedule_ack(sk);DATARMNET63b1a086d5->DATARMNETb8fc35ed64++; DATARMNET32b91c8ae6(DATARMNET53c8cfb28e);}bh_unlock_sock(sk);}sock_gen_put(sk);} static u32 DATARMNET62fb576113(struct sk_buff*DATARMNET543491eb0f){struct tcphdr *DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f);return DATARMNET543491eb0f-> len-((u8*)DATARMNET668416551c-DATARMNET543491eb0f->data)-DATARMNET668416551c-> doff*(0xd11+230-0xdf3);}static void DATARMNET55fda9e01e(struct DATARMNETddbc1e5435*DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f,bool DATARMNETd147c14c0e)__must_hold(RCU){struct tcphdr*DATARMNET668416551c=tcp_hdr( DATARMNET543491eb0f);u32 DATARMNET26945497d8=ntohl(DATARMNET668416551c->seq);u32 DATARMNETb1b0ee1b2d=ntohl(DATARMNET668416551c->ack_seq);u32 DATARMNETb6ff6d25f8 =READ_ONCE(DATARMNET63b1a086d5->DATARMNETfef3675ce7);u32 DATARMNET91c1d5c029= READ_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab);u32 DATARMNET9445bc443c= READ_ONCE(DATARMNET63b1a086d5->DATARMNET9a57846b4e);DATARMNET63b1a086d5-> DATARMNET763f2e5fac=jiffies;if(DATARMNET63b1a086d5->DATARMNET55056146f6)return; if(DATARMNETd147c14c0e){if(after(DATARMNETb1b0ee1b2d,DATARMNET91c1d5c029)){u32 DATARMNET4e557c82d6=(0xd2d+202-0xdf7);if(DATARMNETb1b0ee1b2d>DATARMNETb6ff6d25f8 )DATARMNET4e557c82d6=DATARMNETb1b0ee1b2d-DATARMNETb6ff6d25f8;if( DATARMNET4e557c82d6>DATARMNET9445bc443c)DATARMNET31a7673e56(DATARMNET63b1a086d5, DATARMNET543491eb0f);WRITE_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab, DATARMNETb1b0ee1b2d);}}else{u32 DATARMNET4e557c82d6;if(after(DATARMNET26945497d8 ,DATARMNETb6ff6d25f8)){DATARMNET4e557c82d6=DATARMNET26945497d8- DATARMNET91c1d5c029;DATARMNET4e557c82d6+=DATARMNET62fb576113(DATARMNET543491eb0f );if(DATARMNET4e557c82d6>DATARMNET9445bc443c)DATARMNET31a7673e56( DATARMNET63b1a086d5,DATARMNET543491eb0f);WRITE_ONCE(DATARMNET63b1a086d5-> DATARMNETfef3675ce7,DATARMNET26945497d8);}}}static bool DATARMNET6670717310( struct sk_buff*DATARMNET543491eb0f,struct DATARMNET4b40fe9cd4* DATARMNET3396919a68){struct tcphdr*DATARMNET668416551c;u32 DATARMNETd660a1a629; if(!skb_transport_header_was_set(DATARMNET543491eb0f)||DATARMNET543491eb0f-> ip_summed==CHECKSUM_NONE)return false;DATARMNET668416551c=tcp_hdr( DATARMNET543491eb0f);if(DATARMNET668416551c->syn)return false; DATARMNETd660a1a629=DATARMNET62fb576113(DATARMNET543491eb0f);if(! DATARMNETd660a1a629&&DATARMNET668416551c->ack)return false;DATARMNET3396919a68-> DATARMNET08e913477e=DATARMNET668416551c->source;DATARMNET3396919a68-> DATARMNETda7f7fa492=DATARMNET668416551c->dest;if(DATARMNET543491eb0f->protocol== htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9=ip_hdr(DATARMNET543491eb0f); DATARMNET3396919a68->DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9->saddr; DATARMNET3396919a68->DATARMNET2cb607d686=DATARMNET86f1f2cdc9->daddr; DATARMNET3396919a68->DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else{struct ipv6hdr* DATARMNETbf55123e5b=ipv6_hdr(DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68-> DATARMNET815cbb4bf5,&DATARMNETbf55123e5b->saddr,sizeof(DATARMNETbf55123e5b-> saddr));memcpy(&DATARMNET3396919a68->DATARMNETc3f31215b7,&DATARMNETbf55123e5b-> daddr,sizeof(DATARMNETbf55123e5b->daddr));DATARMNET3396919a68-> DATARMNET0d956cc77a=(0xd03+244-0xdf1);}return true;}void DATARMNET9250714999( struct sk_buff*DATARMNET543491eb0f){struct rmnet_skb_cb*DATARMNET1ec4882bf7= RMNET_SKB_CB(DATARMNET543491eb0f);struct DATARMNET4b40fe9cd4 DATARMNET3396919a68 ={};struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;if(!DATARMNET6670717310( DATARMNET543491eb0f,&DATARMNET3396919a68))return;rcu_read_lock(); DATARMNET63b1a086d5=DATARMNET9f0aaf07cc(&DATARMNET3396919a68,DATARMNET543491eb0f ,false);if(!DATARMNET63b1a086d5)goto DATARMNETbf4095f79e;if(unlikely( DATARMNETd92eab34a9(DATARMNET63b1a086d5,jiffies)))goto DATARMNETbf4095f79e;if( DATARMNET63b1a086d5->DATARMNET55056146f6){DATARMNET1ec4882bf7->tethered=true;} else{u32 DATARMNET4e557c82d6=READ_ONCE(DATARMNET63b1a086d5->DATARMNETfef3675ce7) -READ_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab);DATARMNET1ec4882bf7->bif= DATARMNET4e557c82d6;DATARMNET1ec4882bf7->ack_thresh=READ_ONCE( DATARMNET63b1a086d5->DATARMNET9a57846b4e);DATARMNET1ec4882bf7->ack_forced= DATARMNET63b1a086d5->DATARMNETb8fc35ed64;}DATARMNETbf4095f79e:rcu_read_unlock(); }void DATARMNETd8fdde8978(struct sk_buff*DATARMNET543491eb0f){struct DATARMNET4b40fe9cd4 DATARMNET3396919a68={};struct DATARMNETddbc1e5435* DATARMNET63b1a086d5;if(!DATARMNET6670717310(DATARMNET543491eb0f,& DATARMNET3396919a68))return;rcu_read_lock();DATARMNET63b1a086d5= DATARMNET9f0aaf07cc(&DATARMNET3396919a68,DATARMNET543491eb0f,false);if( DATARMNET63b1a086d5){if(likely(!DATARMNETd92eab34a9(DATARMNET63b1a086d5,jiffies) ))DATARMNET55fda9e01e(DATARMNET63b1a086d5,DATARMNET543491eb0f,false);} rcu_read_unlock();}void DATARMNET9d574e64b1(struct sk_buff*DATARMNET543491eb0f){ struct DATARMNET4b40fe9cd4 DATARMNET3396919a68={};struct DATARMNETddbc1e5435* DATARMNET63b1a086d5;struct tcphdr*DATARMNET668416551c;u32 DATARMNETd660a1a629;if (!skb_transport_header_was_set(DATARMNET543491eb0f))return;DATARMNET668416551c= tcp_hdr(DATARMNET543491eb0f);if(DATARMNET668416551c->syn)return; DATARMNETd660a1a629=DATARMNET62fb576113(DATARMNET543491eb0f);if( DATARMNETd660a1a629||!DATARMNET668416551c->ack)return;DATARMNET3396919a68. DATARMNET08e913477e=DATARMNET668416551c->dest;DATARMNET3396919a68. DATARMNETda7f7fa492=DATARMNET668416551c->source;if(DATARMNET543491eb0f->protocol ==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9=ip_hdr(DATARMNET543491eb0f); DATARMNET3396919a68.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9->daddr; DATARMNET3396919a68.DATARMNET2cb607d686=DATARMNET86f1f2cdc9->saddr; DATARMNET3396919a68.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else{struct ipv6hdr* DATARMNETbf55123e5b=ipv6_hdr(DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68. DATARMNET815cbb4bf5,&DATARMNETbf55123e5b->daddr,sizeof(DATARMNETbf55123e5b-> daddr));memcpy(&DATARMNET3396919a68.DATARMNETc3f31215b7,&DATARMNETbf55123e5b-> saddr,sizeof(DATARMNETbf55123e5b->saddr));DATARMNET3396919a68. DATARMNET0d956cc77a=(0xd03+244-0xdf1);}rcu_read_lock();DATARMNET63b1a086d5= DATARMNET9f0aaf07cc(&DATARMNET3396919a68,DATARMNET543491eb0f,true);if( DATARMNET63b1a086d5){if(likely(!DATARMNETd92eab34a9(DATARMNET63b1a086d5,jiffies) ))DATARMNET55fda9e01e(DATARMNET63b1a086d5,DATARMNET543491eb0f,true);} rcu_read_unlock();}void DATARMNET7fa1835595(u32 DATARMNET556bcfcf8f,u32 DATARMNET9445bc443c){struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;int DATARMNET5c2fd31d7b;if(DATARMNET556bcfcf8f==(0xd2d+202-0xdf7)){if( DATARMNET9445bc443c==(0xd2d+202-0xdf7)){DATARMNETc03b668e4c=false;}else if( DATARMNET9445bc443c==(0xd26+209-0xdf6)){DATARMNETc03b668e4c=true;}return;} rcu_read_lock();hash_for_each_rcu(DATARMNET1fd012f255,DATARMNET5c2fd31d7b, DATARMNET63b1a086d5,hash){if(DATARMNET63b1a086d5->DATARMNET9c389f3b86== DATARMNET556bcfcf8f)WRITE_ONCE(DATARMNET63b1a086d5->DATARMNET9a57846b4e, DATARMNET9445bc443c);}rcu_read_unlock();}int DATARMNET7e9995246e(void){ INIT_DELAYED_WORK(&DATARMNETac6535da80.DATARMNET190b4452e8,DATARMNETfec9085d8e); return(0xd2d+202-0xdf7);}void DATARMNET38bb6f2b7a(void){cancel_delayed_work_sync (&DATARMNETac6535da80.DATARMNET190b4452e8);DATARMNETac6535da80. DATARMNETcd94e0d3c7=true;schedule_delayed_work(&DATARMNETac6535da80. DATARMNET190b4452e8,(0xd2d+202-0xdf7));cancel_delayed_work_sync(& DATARMNETac6535da80.DATARMNET190b4452e8);}