|
@@ -38,34 +38,36 @@ DATARMNETddbc1e5435{struct hlist_node hash;struct rcu_head DATARMNET28bfe9e6ad;
|
|
|
struct DATARMNET4b40fe9cd4 DATARMNET54338da2ff;struct sock*DATARMNETa3e9a18f1b;
|
|
|
unsigned long DATARMNET763f2e5fac;u32 DATARMNETfef3675ce7;u32
|
|
|
DATARMNET9076d335ab;u32 DATARMNET9c389f3b86;u32 DATARMNET9a57846b4e;u32
|
|
|
-DATARMNETb8fc35ed64;bool DATARMNET55056146f6;};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
|
|
|
-(DATARMNET248f120dd5<DATARMNETaa18c75b61)DATARMNETeb09e391b5[DATARMNET248f120dd5
|
|
|
-]+=(0xd26+209-0xdf6);}static bool DATARMNETd92eab34a9(struct DATARMNETddbc1e5435
|
|
|
-*DATARMNET63b1a086d5,unsigned long DATARMNET763f2e5fac){unsigned long
|
|
|
-DATARMNETc2d5c71ce1;DATARMNETc2d5c71ce1=msecs_to_jiffies(DATARMNET3dad3dfdc0);if
|
|
|
-(DATARMNET763f2e5fac-DATARMNET63b1a086d5->DATARMNET763f2e5fac>
|
|
|
-DATARMNETc2d5c71ce1)return true;return false;}static void DATARMNET776e08992c(
|
|
|
-struct rcu_head*DATARMNET5d432e897f){struct DATARMNETddbc1e5435*
|
|
|
-DATARMNET63b1a086d5;DATARMNET63b1a086d5=container_of(DATARMNET5d432e897f,struct
|
|
|
-DATARMNETddbc1e5435,DATARMNET28bfe9e6ad);if(DATARMNET63b1a086d5->
|
|
|
-DATARMNETa3e9a18f1b)sock_put(DATARMNET63b1a086d5->DATARMNETa3e9a18f1b);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(
|
|
|
-DATARMNETe78ad140cc||DATARMNETd92eab34a9(DATARMNET63b1a086d5,DATARMNET763f2e5fac
|
|
|
-)){hash_del_rcu(&DATARMNET63b1a086d5->hash);call_rcu(&DATARMNET63b1a086d5->
|
|
|
-DATARMNET28bfe9e6ad,DATARMNET776e08992c);DATARMNET32b91c8ae6(DATARMNET9cc765a89e
|
|
|
-);DATARMNET1c62a8e2c9--;}}return!!DATARMNET1c62a8e2c9;}static void
|
|
|
+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(DATARMNET248f120dd5<
|
|
|
+DATARMNETaa18c75b61)DATARMNETeb09e391b5[DATARMNET248f120dd5]+=(0xd26+209-0xdf6);
|
|
|
+}static bool DATARMNETd92eab34a9(struct DATARMNETddbc1e5435*DATARMNET63b1a086d5,
|
|
|
+unsigned long DATARMNET763f2e5fac){unsigned long DATARMNETc2d5c71ce1;
|
|
|
+DATARMNETc2d5c71ce1=msecs_to_jiffies(DATARMNET3dad3dfdc0);if(DATARMNET763f2e5fac
|
|
|
+-DATARMNET63b1a086d5->DATARMNET763f2e5fac>DATARMNETc2d5c71ce1)return true;return
|
|
|
+ false;}static void DATARMNET776e08992c(struct rcu_head*DATARMNET5d432e897f){
|
|
|
+struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;DATARMNET63b1a086d5=container_of(
|
|
|
+DATARMNET5d432e897f,struct DATARMNETddbc1e5435,DATARMNET28bfe9e6ad);if(!
|
|
|
+IS_ERR_OR_NULL(DATARMNET63b1a086d5->DATARMNETa3e9a18f1b))sock_put(
|
|
|
+DATARMNET63b1a086d5->DATARMNETa3e9a18f1b);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(
|
|
@@ -120,34 +122,34 @@ 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(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;}else if(DATARMNET63b1a086d5
|
|
|
-->DATARMNETa3e9a18f1b){sk=DATARMNET63b1a086d5->DATARMNETa3e9a18f1b;}else if((sk=
|
|
|
-DATARMNETc0b5d624ae(&DATARMNET63b1a086d5->DATARMNET54338da2ff,
|
|
|
-DATARMNET543491eb0f->dev))){DATARMNET63b1a086d5->DATARMNETa3e9a18f1b=sk;}else{
|
|
|
-struct rmnet_skb_cb*DATARMNET1ec4882bf7=RMNET_SKB_CB(DATARMNET543491eb0f);
|
|
|
-DATARMNET32b91c8ae6(DATARMNETb03f9571a3);DATARMNET63b1a086d5->
|
|
|
-DATARMNET55056146f6=true;DATARMNET1ec4882bf7->tethered=true;return;}if(!
|
|
|
-DATARMNET543491eb0f->sk){sock_hold(sk);DATARMNET543491eb0f->sk=sk;
|
|
|
+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;}else if(
|
|
|
+DATARMNET63b1a086d5->DATARMNETa3e9a18f1b){sk=DATARMNET63b1a086d5->
|
|
|
+DATARMNETa3e9a18f1b;}else if((sk=DATARMNETc0b5d624ae(&DATARMNET63b1a086d5->
|
|
|
+DATARMNET54338da2ff,DATARMNET543491eb0f->dev))){DATARMNET63b1a086d5->
|
|
|
+DATARMNETa3e9a18f1b=sk;}else{struct rmnet_skb_cb*DATARMNET1ec4882bf7=
|
|
|
+RMNET_SKB_CB(DATARMNET543491eb0f);DATARMNET32b91c8ae6(DATARMNETb03f9571a3);
|
|
|
+DATARMNET63b1a086d5->DATARMNET55056146f6=true;DATARMNET1ec4882bf7->tethered=true
|
|
|
+;return;}if(!DATARMNET543491eb0f->sk){sock_hold(sk);DATARMNET543491eb0f->sk=sk;
|
|
|
DATARMNET543491eb0f->destructor=sock_edemux;if(sk_fullsock(sk)){struct dst_entry
|
|
|
*dst=rcu_dereference(sk->sk_rx_dst);if(dst){u32 DATARMNETc8fe0ce669=(
|
|
|
DATARMNET63b1a086d5->DATARMNET54338da2ff.DATARMNET0d956cc77a==(0xd11+230-0xdf3))
|