|
@@ -21,176 +21,175 @@
|
|
|
#include "rmnet_offload_udp.h"
|
|
|
#include "rmnet_offload_stats.h"
|
|
|
#include "rmnet_offload_knob.h"
|
|
|
-#define DATARMNETc9a92fd5dc \
|
|
|
- (const_ilog2(DATARMNET51fcd2e93a))
|
|
|
-static DEFINE_HASHTABLE(DATARMNETab0dbdf89d,DATARMNETc9a92fd5dc);static u32
|
|
|
-DATARMNETb2ff7800c4(u8 DATARMNET22afafde5e){struct DATARMNET31caee06e2*
|
|
|
-DATARMNET0277af6816;int DATARMNET6090c652d3;u32 DATARMNET67497a3454=
|
|
|
-(0x145b+644-0x16df);hash_for_each(DATARMNETab0dbdf89d,DATARMNET6090c652d3,
|
|
|
-DATARMNET0277af6816,DATARMNET0a9c7c9a12){if(DATARMNET0277af6816->
|
|
|
-DATARMNET30d367f886&&DATARMNET0277af6816->DATARMNETb2a7197d60==
|
|
|
-DATARMNET22afafde5e){DATARMNET67497a3454++;DATARMNET3bdaf91675(
|
|
|
-DATARMNET0277af6816);}}return DATARMNET67497a3454;}static bool
|
|
|
-DATARMNET5d54389061(u8 DATARMNET22afafde5e){u64 DATARMNET75cb1c0f3f;
|
|
|
-DATARMNET75cb1c0f3f=DATARMNET3d487d950f(DATARMNETe9b360aea8);if(
|
|
|
-DATARMNET75cb1c0f3f==DATARMNET651e3c6554)return true;if(DATARMNET75cb1c0f3f==
|
|
|
-DATARMNETb94ae69059&&DATARMNET22afafde5e==DATARMNET70889e5696)return true;if(
|
|
|
-DATARMNET75cb1c0f3f==DATARMNETda679f58ba&&DATARMNET22afafde5e==
|
|
|
-DATARMNETb02d95e937)return true;return false;}static bool DATARMNET9c6847635e(
|
|
|
-struct DATARMNET31caee06e2*DATARMNETd44a80d414,struct DATARMNETadd6ff90d0*
|
|
|
-DATARMNETc3ffad4b30){if(!DATARMNETd44a80d414->DATARMNET30d367f886)return false;
|
|
|
-if(DATARMNETc3ffad4b30->DATARMNET9f5b2909c8==(0x54a+6318-0x1df4)){struct
|
|
|
-DATARMNETf61a39bce9*DATARMNETb5da236f91,*DATARMNET4e35bbb67d;DATARMNETb5da236f91
|
|
|
-=DATARMNETd44a80d414->DATARMNETd321db9bb1;DATARMNET4e35bbb67d=
|
|
|
-DATARMNETc3ffad4b30->DATARMNET574a565f78;if(DATARMNETb5da236f91->
|
|
|
-DATARMNET58886f3d9d^DATARMNET4e35bbb67d->DATARMNET58886f3d9d||
|
|
|
-DATARMNETb5da236f91->DATARMNET14d3de9c1a^DATARMNET4e35bbb67d->
|
|
|
-DATARMNET14d3de9c1a||DATARMNETb5da236f91->DATARMNETa803e4f68b^
|
|
|
-DATARMNET4e35bbb67d->DATARMNETa803e4f68b||DATARMNETb5da236f91->
|
|
|
-DATARMNET422c25939d^DATARMNET4e35bbb67d->DATARMNET422c25939d)return true;}else
|
|
|
-if(DATARMNETc3ffad4b30->DATARMNET9f5b2909c8==(0x1ff5+182-0x20a5)){__be32
|
|
|
-DATARMNET55aa748931,DATARMNET34282dc487;__be32 DATARMNETfc68f228ca;
|
|
|
-DATARMNET55aa748931=DATARMNETd44a80d414->DATARMNET85d5545fb8->
|
|
|
-DATARMNETd750a8b9e5;DATARMNET34282dc487=DATARMNETc3ffad4b30->DATARMNET1dab0af728
|
|
|
-->DATARMNETd750a8b9e5;DATARMNETfc68f228ca=DATARMNET55aa748931^
|
|
|
-DATARMNET34282dc487;if(DATARMNETfc68f228ca&htonl(267386880))return true;}return
|
|
|
-false;}static bool DATARMNETa96491b775(struct DATARMNET31caee06e2*
|
|
|
-DATARMNETd44a80d414,struct DATARMNETadd6ff90d0*DATARMNETc3ffad4b30){__be16
|
|
|
-DATARMNETffe972c30a,DATARMNETfee6a33770,DATARMNET063a3638c1,DATARMNETf80930b49f;
|
|
|
-if(!DATARMNETd44a80d414->DATARMNET30d367f886)return DATARMNETd44a80d414->
|
|
|
-DATARMNET2bb18bc9dd==DATARMNETc3ffad4b30->DATARMNET68ad0738e2;if(
|
|
|
-DATARMNETd44a80d414->DATARMNETb2a7197d60!=DATARMNETc3ffad4b30->
|
|
|
-DATARMNET072708db10)return false;DATARMNETffe972c30a=DATARMNETd44a80d414->
|
|
|
-DATARMNETef42c82b6f->DATARMNETaad9b0a864;DATARMNET063a3638c1=DATARMNETd44a80d414
|
|
|
-->DATARMNETef42c82b6f->DATARMNETd751c12d13;DATARMNETfee6a33770=
|
|
|
-DATARMNETc3ffad4b30->DATARMNETc51cdf696b->DATARMNETaad9b0a864;
|
|
|
-DATARMNETf80930b49f=DATARMNETc3ffad4b30->DATARMNETc51cdf696b->
|
|
|
-DATARMNETd751c12d13;if(DATARMNETffe972c30a^DATARMNETfee6a33770||
|
|
|
-DATARMNET063a3638c1^DATARMNETf80930b49f)return false;if(DATARMNETc3ffad4b30->
|
|
|
-DATARMNET9f5b2909c8==(0x19f+8819-0x240e)){struct DATARMNETf61a39bce9*
|
|
|
-DATARMNETb5da236f91,*DATARMNET4e35bbb67d;DATARMNETb5da236f91=DATARMNETd44a80d414
|
|
|
-->DATARMNETd321db9bb1;DATARMNET4e35bbb67d=DATARMNETc3ffad4b30->
|
|
|
-DATARMNET574a565f78;if(DATARMNETb5da236f91->DATARMNET7c6ed51964^
|
|
|
-DATARMNET4e35bbb67d->DATARMNET7c6ed51964||DATARMNETb5da236f91->
|
|
|
-DATARMNET799b2a47a5^DATARMNET4e35bbb67d->DATARMNET799b2a47a5)return false;}else
|
|
|
-if(DATARMNETc3ffad4b30->DATARMNET9f5b2909c8==(0x53a+3466-0x12be)){struct
|
|
|
-DATARMNETfab66e680d*DATARMNETb5da236f91,*DATARMNET4e35bbb67d;DATARMNETb5da236f91
|
|
|
-=DATARMNETd44a80d414->DATARMNET85d5545fb8;DATARMNET4e35bbb67d=
|
|
|
-DATARMNETc3ffad4b30->DATARMNET1dab0af728;if(memcmp(DATARMNETb5da236f91->
|
|
|
-DATARMNET0f6f3a8868,DATARMNET4e35bbb67d->DATARMNET0f6f3a8868,sizeof(
|
|
|
-DATARMNET4e35bbb67d->DATARMNET0f6f3a8868))||memcmp(DATARMNETb5da236f91->
|
|
|
-DATARMNET818f335f71,DATARMNET4e35bbb67d->DATARMNET818f335f71,sizeof(
|
|
|
-DATARMNET4e35bbb67d->DATARMNET818f335f71)))return false;}else{return false;}
|
|
|
-return true;}static struct DATARMNET31caee06e2*DATARMNET30062b5353(void){struct
|
|
|
-DATARMNET8357daf015*DATARMNETf7e8f6395c=DATARMNETccc25794e0();struct
|
|
|
-DATARMNET337e435e40*DATARMNET048da5e00c;struct DATARMNET31caee06e2*
|
|
|
-DATARMNETc5c31601b9;DATARMNET048da5e00c=&DATARMNETf7e8f6395c->
|
|
|
-DATARMNETa3d1da1cba;if(DATARMNET048da5e00c->DATARMNET762f0d12b6<
|
|
|
-DATARMNET51fcd2e93a){DATARMNETc5c31601b9=&DATARMNET048da5e00c->
|
|
|
-DATARMNET51e299cf9c[DATARMNET048da5e00c->DATARMNET762f0d12b6];
|
|
|
-DATARMNET048da5e00c->DATARMNET762f0d12b6++;return DATARMNETc5c31601b9;}
|
|
|
-DATARMNETc5c31601b9=&DATARMNET048da5e00c->DATARMNET51e299cf9c[
|
|
|
-DATARMNET048da5e00c->DATARMNETded3d12c96];DATARMNET048da5e00c->
|
|
|
-DATARMNETded3d12c96++;DATARMNET048da5e00c->DATARMNETded3d12c96%=
|
|
|
-DATARMNET51fcd2e93a;hash_del(&DATARMNETc5c31601b9->DATARMNET0a9c7c9a12);
|
|
|
-if(DATARMNETc5c31601b9->DATARMNET30d367f886){DATARMNET5d24865423(
|
|
|
-DATARMNETa05aa2c4a7);DATARMNET3bdaf91675(DATARMNETc5c31601b9);}return
|
|
|
-DATARMNETc5c31601b9;}static void DATARMNET3d9424a1f2(void){
|
|
|
-DATARMNET8f8c3a4cc3();if(DATARMNET54fd6bf483())DATARMNET5d24865423(
|
|
|
-DATARMNETc0fe927262);DATARMNET4c69e80b6f();}void DATARMNETafcdd1146f(void){
|
|
|
-rcu_assign_pointer(rmnet_perf_chain_end,DATARMNET3d9424a1f2);}void
|
|
|
-DATARMNET28dfa538f2(void){rcu_assign_pointer(rmnet_perf_chain_end,NULL);}int
|
|
|
-DATARMNET467c2610cd(u64 DATARMNET842aaafdc8,u64 DATARMNET7c1185ffbf){u32
|
|
|
-DATARMNET67497a3454=(0x52d+7239-0x2174);if(DATARMNET842aaafdc8==
|
|
|
-DATARMNET7d2f8bdc64||DATARMNET7c1185ffbf==DATARMNET651e3c6554)return
|
|
|
-(0x1053+1012-0x1447);switch(DATARMNET7c1185ffbf){case DATARMNETb94ae69059:
|
|
|
-DATARMNET67497a3454=DATARMNETb2ff7800c4(DATARMNETb02d95e937);break;case
|
|
|
-DATARMNETda679f58ba:DATARMNET67497a3454=DATARMNETb2ff7800c4(DATARMNET70889e5696)
|
|
|
-;break;case DATARMNET7d2f8bdc64:DATARMNET67497a3454=DATARMNET54fd6bf483();break;
|
|
|
-}DATARMNETa3edc29191(DATARMNET2ec91e73cf,DATARMNET67497a3454);return
|
|
|
-(0x349+1374-0x8a7);}void DATARMNET3bdaf91675(struct DATARMNET31caee06e2*
|
|
|
-DATARMNETd44a80d414){struct DATARMNET8357daf015*DATARMNETf7e8f6395c=
|
|
|
-DATARMNETccc25794e0();struct rmnet_frag_descriptor*DATARMNETb2b92619af,*
|
|
|
-DATARMNETe6a1f8e9a8,*DATARMNETb9b0dca770;u32 DATARMNET439e3442b2=
|
|
|
-DATARMNETd44a80d414->DATARMNET5f92dbf405+DATARMNETd44a80d414->
|
|
|
-DATARMNET2e943b139f+DATARMNETd44a80d414->DATARMNET00656e1145;if(!
|
|
|
-DATARMNETd44a80d414->DATARMNET30d367f886)return;DATARMNETb2b92619af=
|
|
|
-list_first_entry(&DATARMNETd44a80d414->DATARMNETdaf24e965e,struct
|
|
|
-rmnet_frag_descriptor,list);if(!DATARMNETb2b92619af->gso_segs)
|
|
|
-DATARMNETb2b92619af->gso_segs=(0x1058+4757-0x22ec);DATARMNETb2b92619af->gso_size
|
|
|
-=DATARMNETd44a80d414->DATARMNET632219f39d;DATARMNETe6a1f8e9a8=
|
|
|
-DATARMNETb2b92619af;list_for_each_entry_safe_continue(DATARMNETe6a1f8e9a8,
|
|
|
-DATARMNETb9b0dca770,&DATARMNETd44a80d414->DATARMNETdaf24e965e,list){if(
|
|
|
-DATARMNETe6a1f8e9a8->hdr_ptr==rmnet_frag_data_ptr(DATARMNETe6a1f8e9a8)){if(!
|
|
|
-rmnet_frag_pull(DATARMNETe6a1f8e9a8,DATARMNETf7e8f6395c->DATARMNET547651077b,
|
|
|
-DATARMNETd44a80d414->DATARMNET2e943b139f+DATARMNETd44a80d414->
|
|
|
-DATARMNET00656e1145))continue;}list_del(&DATARMNETe6a1f8e9a8->list);
|
|
|
-list_add_tail(&DATARMNETe6a1f8e9a8->list,&DATARMNETb2b92619af->sub_frags);
|
|
|
-DATARMNETb2b92619af->gso_segs+=(DATARMNETe6a1f8e9a8->gso_segs)?:
|
|
|
-(0x11b6+461-0x1382);}DATARMNETb2b92619af->hash=DATARMNETd44a80d414->
|
|
|
-DATARMNET2bb18bc9dd;DATARMNET654b85a739(DATARMNETb2b92619af,DATARMNET439e3442b2)
|
|
|
-;DATARMNETd44a80d414->DATARMNET30d367f886=(0x1c9b+1105-0x20ec);
|
|
|
-DATARMNETd44a80d414->DATARMNET5f92dbf405=(0xb26+2684-0x15a2);}void
|
|
|
-DATARMNET8b657e07e9(u32 DATARMNETb7b515b920){struct DATARMNET31caee06e2*
|
|
|
-DATARMNETd44a80d414;hash_for_each_possible(DATARMNETab0dbdf89d,
|
|
|
-DATARMNETd44a80d414,DATARMNET0a9c7c9a12,DATARMNETb7b515b920){if(
|
|
|
-DATARMNETd44a80d414->DATARMNET2bb18bc9dd==DATARMNETb7b515b920&&
|
|
|
-DATARMNETd44a80d414->DATARMNET30d367f886)DATARMNET3bdaf91675(DATARMNETd44a80d414
|
|
|
-);}}u32 DATARMNET54fd6bf483(void){struct DATARMNET31caee06e2*DATARMNETd44a80d414
|
|
|
-;int DATARMNET6090c652d3;u32 DATARMNET67497a3454=(0x16b4+2078-0x1ed2);
|
|
|
-hash_for_each(DATARMNETab0dbdf89d,DATARMNET6090c652d3,DATARMNETd44a80d414,
|
|
|
-DATARMNET0a9c7c9a12){if(DATARMNETd44a80d414->DATARMNET30d367f886){
|
|
|
-DATARMNET67497a3454++;DATARMNET3bdaf91675(DATARMNETd44a80d414);}}return
|
|
|
-DATARMNET67497a3454;}void DATARMNETfc01092f09(struct DATARMNET31caee06e2*
|
|
|
-DATARMNETd44a80d414,struct DATARMNETadd6ff90d0*DATARMNETc3ffad4b30){if(
|
|
|
-DATARMNETc3ffad4b30->DATARMNET1e7926dc4c){DATARMNETd44a80d414->
|
|
|
-DATARMNET6b35defba1=DATARMNETc3ffad4b30->DATARMNET9f5b2909c8;DATARMNETd44a80d414
|
|
|
-->DATARMNET2e943b139f=DATARMNETc3ffad4b30->DATARMNETa7eaea0d00;
|
|
|
-DATARMNETd44a80d414->DATARMNETd321db9bb1=DATARMNETc3ffad4b30->
|
|
|
-DATARMNET574a565f78;DATARMNETd44a80d414->DATARMNETb2a7197d60=DATARMNETc3ffad4b30
|
|
|
-->DATARMNET072708db10;DATARMNETd44a80d414->DATARMNET00656e1145=
|
|
|
-DATARMNETc3ffad4b30->DATARMNETfeb7c81ac7;DATARMNETd44a80d414->
|
|
|
-DATARMNET9a5f6d68d4=DATARMNETc3ffad4b30->DATARMNET7ff34eacb7;DATARMNETd44a80d414
|
|
|
-->DATARMNET2bb18bc9dd=DATARMNETc3ffad4b30->DATARMNET68ad0738e2;
|
|
|
-DATARMNETd44a80d414->DATARMNET632219f39d=(DATARMNETc3ffad4b30->
|
|
|
-DATARMNET798fafaf36->gso_size)?:DATARMNETc3ffad4b30->DATARMNET5671455f38;if(
|
|
|
-DATARMNETc3ffad4b30->DATARMNET072708db10==DATARMNET70889e5696){__be32
|
|
|
-DATARMNETff7464c709;if(DATARMNETc3ffad4b30->DATARMNET798fafaf36->tcp_seq_set)
|
|
|
-DATARMNETff7464c709=DATARMNETc3ffad4b30->DATARMNET798fafaf36->tcp_seq;else
|
|
|
-DATARMNETff7464c709=DATARMNETc3ffad4b30->DATARMNET7ff34eacb7->
|
|
|
-DATARMNET614032cc71;DATARMNETd44a80d414->DATARMNET956bd73340=ntohl(
|
|
|
-DATARMNETff7464c709);}}if(DATARMNETc3ffad4b30->DATARMNET072708db10==
|
|
|
-DATARMNET70889e5696)DATARMNETd44a80d414->DATARMNET956bd73340+=
|
|
|
-DATARMNETc3ffad4b30->DATARMNET5671455f38;list_add_tail(&DATARMNETc3ffad4b30->
|
|
|
-DATARMNET798fafaf36->list,&DATARMNETd44a80d414->DATARMNETdaf24e965e);
|
|
|
-DATARMNETd44a80d414->DATARMNET30d367f886++;DATARMNETd44a80d414->
|
|
|
-DATARMNET5f92dbf405+=DATARMNETc3ffad4b30->DATARMNET5671455f38;}bool
|
|
|
-DATARMNET9b8a1a69f3(struct DATARMNETadd6ff90d0*DATARMNETc3ffad4b30){struct
|
|
|
-DATARMNET31caee06e2*DATARMNETd44a80d414;bool DATARMNET262f926565=false;if(!
|
|
|
-DATARMNET5d54389061(DATARMNETc3ffad4b30->DATARMNET072708db10)){
|
|
|
-DATARMNET5d24865423(DATARMNETdae7cbfd97);return false;}hash_for_each_possible(
|
|
|
-DATARMNETab0dbdf89d,DATARMNETd44a80d414,DATARMNET0a9c7c9a12,DATARMNETc3ffad4b30
|
|
|
-->DATARMNET68ad0738e2){bool DATARMNET4e4b105fa2;if(!DATARMNETa96491b775(
|
|
|
-DATARMNETd44a80d414,DATARMNETc3ffad4b30))continue;DATARMNETb9fc1ffb2f:
|
|
|
-DATARMNET4e4b105fa2=DATARMNET9c6847635e(DATARMNETd44a80d414,DATARMNETc3ffad4b30)
|
|
|
-;DATARMNETc3ffad4b30->DATARMNET1e7926dc4c=true;DATARMNET262f926565=true;switch(
|
|
|
-DATARMNETc3ffad4b30->DATARMNET072708db10){case DATARMNET70889e5696:return
|
|
|
-DATARMNETb25a21aeeb(DATARMNETd44a80d414,DATARMNETc3ffad4b30,DATARMNET4e4b105fa2)
|
|
|
-;case DATARMNETb02d95e937:return DATARMNET9dd18589e3(DATARMNETd44a80d414,
|
|
|
-DATARMNETc3ffad4b30,DATARMNET4e4b105fa2);default:return false;}}if(!
|
|
|
-DATARMNET262f926565){DATARMNETd44a80d414=DATARMNET30062b5353();
|
|
|
-DATARMNETd44a80d414->DATARMNET2bb18bc9dd=DATARMNETc3ffad4b30->
|
|
|
-DATARMNET68ad0738e2;hash_add(DATARMNETab0dbdf89d,&DATARMNETd44a80d414->
|
|
|
-DATARMNET0a9c7c9a12,DATARMNETd44a80d414->DATARMNET2bb18bc9dd);goto
|
|
|
-DATARMNETb9fc1ffb2f;}return false;}void DATARMNETde815547a0(void){struct
|
|
|
-DATARMNET31caee06e2*DATARMNETd44a80d414;struct hlist_node*DATARMNETb9b0dca770;
|
|
|
-int DATARMNET6090c652d3;hash_for_each_safe(DATARMNETab0dbdf89d,
|
|
|
-DATARMNET6090c652d3,DATARMNETb9b0dca770,DATARMNETd44a80d414,DATARMNET0a9c7c9a12)
|
|
|
-hash_del(&DATARMNETd44a80d414->DATARMNET0a9c7c9a12);}int DATARMNETcce014cb1d(
|
|
|
-void){struct DATARMNET8357daf015*DATARMNETf7e8f6395c=DATARMNETccc25794e0();u8
|
|
|
-DATARMNET5d971be8b8;for(DATARMNET5d971be8b8=(0xec5+3020-0x1a91);
|
|
|
-DATARMNET5d971be8b8<DATARMNET51fcd2e93a;DATARMNET5d971be8b8++){struct
|
|
|
-DATARMNET31caee06e2*DATARMNETd44a80d414;DATARMNETd44a80d414=&DATARMNETf7e8f6395c
|
|
|
-->DATARMNETa3d1da1cba.DATARMNET51e299cf9c[DATARMNET5d971be8b8];INIT_LIST_HEAD(&
|
|
|
-DATARMNETd44a80d414->DATARMNETdaf24e965e);INIT_HLIST_NODE(&DATARMNETd44a80d414->
|
|
|
-DATARMNET0a9c7c9a12);}return DATARMNET6e89887168;}
|
|
|
+#define DATARMNET644a5e11da \
|
|
|
+ (const_ilog2(DATARMNET78d9393ac8))
|
|
|
+static DEFINE_HASHTABLE(DATARMNET4791268d67,DATARMNET644a5e11da);static u32
|
|
|
+DATARMNET1993bae165(u8 DATARMNET06d2413ad2){struct DATARMNETd7c9631acd*
|
|
|
+DATARMNET7c382e536d;int DATARMNETae0201901a;u32 DATARMNET737bbd41c3=
|
|
|
+(0xd2d+202-0xdf7);hash_for_each(DATARMNET4791268d67,DATARMNETae0201901a,
|
|
|
+DATARMNET7c382e536d,DATARMNETbd5d7d96d8){if(DATARMNET7c382e536d->
|
|
|
+DATARMNET1db11fa85e&&DATARMNET7c382e536d->DATARMNET550ca047ee==
|
|
|
+DATARMNET06d2413ad2){DATARMNET737bbd41c3++;DATARMNETa3055c21f2(
|
|
|
+DATARMNET7c382e536d);}}return DATARMNET737bbd41c3;}static bool
|
|
|
+DATARMNET2013036d80(u8 DATARMNET06d2413ad2){u64 DATARMNET3924f3f9e3;
|
|
|
+DATARMNET3924f3f9e3=DATARMNETf1d1b8287f(DATARMNET6d2ed4b822);if(
|
|
|
+DATARMNET3924f3f9e3==DATARMNET2d89680280)return true;if(DATARMNET3924f3f9e3==
|
|
|
+DATARMNET03daf91a60&&DATARMNET06d2413ad2==DATARMNETfd5c3d30e5)return true;if(
|
|
|
+DATARMNET3924f3f9e3==DATARMNET88a9920663&&DATARMNET06d2413ad2==
|
|
|
+DATARMNETa656f324b2)return true;return false;}static bool DATARMNET5a0f9fc3a2(
|
|
|
+struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*
|
|
|
+DATARMNET5fe4c722a8){if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return false;
|
|
|
+if(DATARMNET5fe4c722a8->DATARMNETaebe0581f2==(0xd11+230-0xdf3)){struct
|
|
|
+DATARMNET308c06fca6*DATARMNET699c2c62cd,*DATARMNET8814564ab9;DATARMNET699c2c62cd
|
|
|
+=DATARMNETaa568481cf->DATARMNETc1529262df;DATARMNET8814564ab9=
|
|
|
+DATARMNET5fe4c722a8->DATARMNET1469d7a840;if(DATARMNET699c2c62cd->
|
|
|
+DATARMNET1eb6c27583^DATARMNET8814564ab9->DATARMNET1eb6c27583||
|
|
|
+DATARMNET699c2c62cd->DATARMNET03e081f69f^DATARMNET8814564ab9->
|
|
|
+DATARMNET03e081f69f||DATARMNET699c2c62cd->DATARMNET2c091223da^
|
|
|
+DATARMNET8814564ab9->DATARMNET2c091223da||DATARMNET699c2c62cd->
|
|
|
+DATARMNET610d06a887^DATARMNET8814564ab9->DATARMNET610d06a887)return true;}else
|
|
|
+if(DATARMNET5fe4c722a8->DATARMNETaebe0581f2==(0xd03+244-0xdf1)){__be32
|
|
|
+DATARMNET25ffacbec5,DATARMNETb351dd927f;__be32 DATARMNET9422f16113;
|
|
|
+DATARMNET25ffacbec5=DATARMNETaa568481cf->DATARMNET6f0af6e7b3->
|
|
|
+DATARMNET0687f7ecdc;DATARMNETb351dd927f=DATARMNET5fe4c722a8->DATARMNET5559b05582
|
|
|
+->DATARMNET0687f7ecdc;DATARMNET9422f16113=DATARMNET25ffacbec5^
|
|
|
+DATARMNETb351dd927f;if(DATARMNET9422f16113&htonl(267386880))return true;}return
|
|
|
+false;}static bool DATARMNET6895620058(struct DATARMNETd7c9631acd*
|
|
|
+DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){__be16
|
|
|
+DATARMNETe085e1d838,DATARMNET487536824f,DATARMNETa664f6ed60,DATARMNET49b96367a2;
|
|
|
+if(!DATARMNETaa568481cf->DATARMNET1db11fa85e)return DATARMNETaa568481cf->
|
|
|
+DATARMNET381f1cadc4==DATARMNET5fe4c722a8->DATARMNET645e8912b8;if(
|
|
|
+DATARMNETaa568481cf->DATARMNET550ca047ee!=DATARMNET5fe4c722a8->
|
|
|
+DATARMNET098910da0f)return false;DATARMNETe085e1d838=DATARMNETaa568481cf->
|
|
|
+DATARMNET8600531f31->DATARMNET1b1c406ae9;DATARMNETa664f6ed60=DATARMNETaa568481cf
|
|
|
+->DATARMNET8600531f31->DATARMNETdf0e8545ee;DATARMNET487536824f=
|
|
|
+DATARMNET5fe4c722a8->DATARMNET0da3c8035d->DATARMNET1b1c406ae9;
|
|
|
+DATARMNET49b96367a2=DATARMNET5fe4c722a8->DATARMNET0da3c8035d->
|
|
|
+DATARMNETdf0e8545ee;if(DATARMNETe085e1d838^DATARMNET487536824f||
|
|
|
+DATARMNETa664f6ed60^DATARMNET49b96367a2)return false;if(DATARMNET5fe4c722a8->
|
|
|
+DATARMNETaebe0581f2==(0xd11+230-0xdf3)){struct DATARMNET308c06fca6*
|
|
|
+DATARMNET699c2c62cd,*DATARMNET8814564ab9;DATARMNET699c2c62cd=DATARMNETaa568481cf
|
|
|
+->DATARMNETc1529262df;DATARMNET8814564ab9=DATARMNET5fe4c722a8->
|
|
|
+DATARMNET1469d7a840;if(DATARMNET699c2c62cd->DATARMNET9bbd2ca483^
|
|
|
+DATARMNET8814564ab9->DATARMNET9bbd2ca483||DATARMNET699c2c62cd->
|
|
|
+DATARMNET11ef55b2bb^DATARMNET8814564ab9->DATARMNET11ef55b2bb)return false;}else
|
|
|
+if(DATARMNET5fe4c722a8->DATARMNETaebe0581f2==(0xd03+244-0xdf1)){struct
|
|
|
+DATARMNET64bb8f616e*DATARMNET699c2c62cd,*DATARMNET8814564ab9;DATARMNET699c2c62cd
|
|
|
+=DATARMNETaa568481cf->DATARMNET6f0af6e7b3;DATARMNET8814564ab9=
|
|
|
+DATARMNET5fe4c722a8->DATARMNET5559b05582;if(memcmp(DATARMNET699c2c62cd->
|
|
|
+DATARMNET31202449fc,DATARMNET8814564ab9->DATARMNET31202449fc,sizeof(
|
|
|
+DATARMNET8814564ab9->DATARMNET31202449fc))||memcmp(DATARMNET699c2c62cd->
|
|
|
+DATARMNETc657c0a139,DATARMNET8814564ab9->DATARMNETc657c0a139,sizeof(
|
|
|
+DATARMNET8814564ab9->DATARMNETc657c0a139)))return false;}else{return false;}
|
|
|
+return true;}static struct DATARMNETd7c9631acd*DATARMNETd41def0046(void){struct
|
|
|
+DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();struct
|
|
|
+DATARMNET907d58c807*DATARMNETa6f73cbe10;struct DATARMNETd7c9631acd*
|
|
|
+DATARMNET6745427f98;DATARMNETa6f73cbe10=&DATARMNETe05748b000->
|
|
|
+DATARMNETebb45c8d86;if(DATARMNETa6f73cbe10->DATARMNET8dfc11cccd<
|
|
|
+DATARMNET78d9393ac8){DATARMNET6745427f98=&DATARMNETa6f73cbe10->
|
|
|
+DATARMNET2846a01cce[DATARMNETa6f73cbe10->DATARMNET8dfc11cccd];
|
|
|
+DATARMNETa6f73cbe10->DATARMNET8dfc11cccd++;return DATARMNET6745427f98;}
|
|
|
+DATARMNET6745427f98=&DATARMNETa6f73cbe10->DATARMNET2846a01cce[
|
|
|
+DATARMNETa6f73cbe10->DATARMNET57d435b225];DATARMNETa6f73cbe10->
|
|
|
+DATARMNET57d435b225++;DATARMNETa6f73cbe10->DATARMNET57d435b225%=
|
|
|
+DATARMNET78d9393ac8;hash_del(&DATARMNET6745427f98->DATARMNETbd5d7d96d8);if(
|
|
|
+DATARMNET6745427f98->DATARMNET1db11fa85e){DATARMNETa00cda79d0(
|
|
|
+DATARMNETf3f92fc0b9);DATARMNETa3055c21f2(DATARMNET6745427f98);}return
|
|
|
+DATARMNET6745427f98;}static void DATARMNETbe30d096c6(void){DATARMNET664568fcd0()
|
|
|
+;if(DATARMNETae70636c90())DATARMNETa00cda79d0(DATARMNET5727f095ec);
|
|
|
+DATARMNET6a76048590();}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){u32 DATARMNET737bbd41c3=
|
|
|
+(0xd2d+202-0xdf7);if(DATARMNET0470698d6c==DATARMNET5fe3af8828||
|
|
|
+DATARMNETfeff65e096==DATARMNET2d89680280)return(0xd2d+202-0xdf7);switch(
|
|
|
+DATARMNETfeff65e096){case DATARMNET03daf91a60:DATARMNET737bbd41c3=
|
|
|
+DATARMNET1993bae165(DATARMNETa656f324b2);break;case DATARMNET88a9920663:
|
|
|
+DATARMNET737bbd41c3=DATARMNET1993bae165(DATARMNETfd5c3d30e5);break;case
|
|
|
+DATARMNET5fe3af8828:DATARMNET737bbd41c3=DATARMNETae70636c90();break;}
|
|
|
+DATARMNETbad3b5165e(DATARMNETddf572458d,DATARMNET737bbd41c3);return
|
|
|
+(0xd2d+202-0xdf7);}void DATARMNETa3055c21f2(struct DATARMNETd7c9631acd*
|
|
|
+DATARMNETaa568481cf){struct DATARMNET70f3b87b5d*DATARMNETe05748b000=
|
|
|
+DATARMNETc2a630b113();struct rmnet_frag_descriptor*DATARMNETd74aeaa49a,*
|
|
|
+DATARMNETa1625e27e2,*DATARMNET0386f6f82a;u32 DATARMNETf333d55b33=
|
|
|
+DATARMNETaa568481cf->DATARMNETcf28ae376b+DATARMNETaa568481cf->
|
|
|
+DATARMNETac72629d22+DATARMNETaa568481cf->DATARMNET3f4e88ab44;if(!
|
|
|
+DATARMNETaa568481cf->DATARMNET1db11fa85e)return;DATARMNETd74aeaa49a=
|
|
|
+list_first_entry(&DATARMNETaa568481cf->DATARMNETb76b79d0d5,struct
|
|
|
+rmnet_frag_descriptor,list);if(!DATARMNETd74aeaa49a->gso_segs)
|
|
|
+DATARMNETd74aeaa49a->gso_segs=(0xd26+209-0xdf6);DATARMNETd74aeaa49a->gso_size=
|
|
|
+DATARMNETaa568481cf->DATARMNET1978d5d8de;DATARMNETa1625e27e2=DATARMNETd74aeaa49a
|
|
|
+;list_for_each_entry_safe_continue(DATARMNETa1625e27e2,DATARMNET0386f6f82a,&
|
|
|
+DATARMNETaa568481cf->DATARMNETb76b79d0d5,list){if(DATARMNETa1625e27e2->hdr_ptr==
|
|
|
+rmnet_frag_data_ptr(DATARMNETa1625e27e2)){if(!rmnet_frag_pull(
|
|
|
+DATARMNETa1625e27e2,DATARMNETe05748b000->DATARMNET403589239f,DATARMNETaa568481cf
|
|
|
+->DATARMNETac72629d22+DATARMNETaa568481cf->DATARMNET3f4e88ab44))continue;}
|
|
|
+list_del(&DATARMNETa1625e27e2->list);list_add_tail(&DATARMNETa1625e27e2->list,&
|
|
|
+DATARMNETd74aeaa49a->sub_frags);DATARMNETd74aeaa49a->gso_segs+=(
|
|
|
+DATARMNETa1625e27e2->gso_segs)?:(0xd26+209-0xdf6);}DATARMNETd74aeaa49a->hash=
|
|
|
+DATARMNETaa568481cf->DATARMNET381f1cadc4;DATARMNET58a244b2fe(DATARMNETd74aeaa49a
|
|
|
+,DATARMNETf333d55b33);DATARMNETaa568481cf->DATARMNET1db11fa85e=(0xd2d+202-0xdf7)
|
|
|
+;DATARMNETaa568481cf->DATARMNETcf28ae376b=(0xd2d+202-0xdf7);}void
|
|
|
+DATARMNETc38c135c9f(u32 DATARMNET3f8cc6fc24){struct DATARMNETd7c9631acd*
|
|
|
+DATARMNETaa568481cf;hash_for_each_possible(DATARMNET4791268d67,
|
|
|
+DATARMNETaa568481cf,DATARMNETbd5d7d96d8,DATARMNET3f8cc6fc24){if(
|
|
|
+DATARMNETaa568481cf->DATARMNET381f1cadc4==DATARMNET3f8cc6fc24&&
|
|
|
+DATARMNETaa568481cf->DATARMNET1db11fa85e)DATARMNETa3055c21f2(DATARMNETaa568481cf
|
|
|
+);}}u32 DATARMNETae70636c90(void){struct DATARMNETd7c9631acd*DATARMNETaa568481cf
|
|
|
+;int DATARMNETae0201901a;u32 DATARMNET737bbd41c3=(0xd2d+202-0xdf7);hash_for_each
|
|
|
+(DATARMNET4791268d67,DATARMNETae0201901a,DATARMNETaa568481cf,DATARMNETbd5d7d96d8
|
|
|
+){if(DATARMNETaa568481cf->DATARMNET1db11fa85e){DATARMNET737bbd41c3++;
|
|
|
+DATARMNETa3055c21f2(DATARMNETaa568481cf);}}return DATARMNET737bbd41c3;}void
|
|
|
+DATARMNET33aa5df9ef(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,struct
|
|
|
+DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){if(DATARMNET5fe4c722a8->
|
|
|
+DATARMNETf1b6b0a6cc){DATARMNETaa568481cf->DATARMNET7e15783110=
|
|
|
+DATARMNET5fe4c722a8->DATARMNETaebe0581f2;DATARMNETaa568481cf->
|
|
|
+DATARMNETac72629d22=DATARMNET5fe4c722a8->DATARMNETbecebb23ac;DATARMNETaa568481cf
|
|
|
+->DATARMNETc1529262df=DATARMNET5fe4c722a8->DATARMNET1469d7a840;
|
|
|
+DATARMNETaa568481cf->DATARMNET550ca047ee=DATARMNET5fe4c722a8->
|
|
|
+DATARMNET098910da0f;DATARMNETaa568481cf->DATARMNET3f4e88ab44=DATARMNET5fe4c722a8
|
|
|
+->DATARMNET0ab9b2ce3b;DATARMNETaa568481cf->DATARMNET8cd2f78e4f=
|
|
|
+DATARMNET5fe4c722a8->DATARMNET96c6c71653;DATARMNETaa568481cf->
|
|
|
+DATARMNET381f1cadc4=DATARMNET5fe4c722a8->DATARMNET645e8912b8;DATARMNETaa568481cf
|
|
|
+->DATARMNET1978d5d8de=(DATARMNET5fe4c722a8->DATARMNET719f68fb88->gso_size)?:
|
|
|
+DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;if(DATARMNET5fe4c722a8->
|
|
|
+DATARMNET098910da0f==DATARMNETfd5c3d30e5){__be32 DATARMNET0849981c7c;if(
|
|
|
+DATARMNET5fe4c722a8->DATARMNET719f68fb88->tcp_seq_set)DATARMNET0849981c7c=
|
|
|
+DATARMNET5fe4c722a8->DATARMNET719f68fb88->tcp_seq;else DATARMNET0849981c7c=
|
|
|
+DATARMNET5fe4c722a8->DATARMNET96c6c71653->DATARMNETb3e70104e0;
|
|
|
+DATARMNETaa568481cf->DATARMNETd3a1a2b9b5=ntohl(DATARMNET0849981c7c);}}if(
|
|
|
+DATARMNET5fe4c722a8->DATARMNET098910da0f==DATARMNETfd5c3d30e5)
|
|
|
+DATARMNETaa568481cf->DATARMNETd3a1a2b9b5+=DATARMNET5fe4c722a8->
|
|
|
+DATARMNET1ef22e4c76;list_add_tail(&DATARMNET5fe4c722a8->DATARMNET719f68fb88->
|
|
|
+list,&DATARMNETaa568481cf->DATARMNETb76b79d0d5);DATARMNETaa568481cf->
|
|
|
+DATARMNET1db11fa85e++;DATARMNETaa568481cf->DATARMNETcf28ae376b+=
|
|
|
+DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;}bool DATARMNETfbf5798e15(struct
|
|
|
+DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){struct DATARMNETd7c9631acd*
|
|
|
+DATARMNETaa568481cf;bool DATARMNET885970f252=false;if(!DATARMNET2013036d80(
|
|
|
+DATARMNET5fe4c722a8->DATARMNET098910da0f)){DATARMNETa00cda79d0(
|
|
|
+DATARMNET6a894ab63d);return false;}hash_for_each_possible(DATARMNET4791268d67,
|
|
|
+DATARMNETaa568481cf,DATARMNETbd5d7d96d8,DATARMNET5fe4c722a8->DATARMNET645e8912b8
|
|
|
+){bool DATARMNET2dd83daa1c;if(!DATARMNET6895620058(DATARMNETaa568481cf,
|
|
|
+DATARMNET5fe4c722a8))continue;DATARMNETc6f994577c:DATARMNET2dd83daa1c=
|
|
|
+DATARMNET5a0f9fc3a2(DATARMNETaa568481cf,DATARMNET5fe4c722a8);DATARMNET5fe4c722a8
|
|
|
+->DATARMNETf1b6b0a6cc=true;DATARMNET885970f252=true;switch(DATARMNET5fe4c722a8->
|
|
|
+DATARMNET098910da0f){case DATARMNETfd5c3d30e5:return DATARMNET4c7cdc25b7(
|
|
|
+DATARMNETaa568481cf,DATARMNET5fe4c722a8,DATARMNET2dd83daa1c);case
|
|
|
+DATARMNETa656f324b2:return DATARMNET8dc47eb7af(DATARMNETaa568481cf,
|
|
|
+DATARMNET5fe4c722a8,DATARMNET2dd83daa1c);default:return false;}}if(!
|
|
|
+DATARMNET885970f252){DATARMNETaa568481cf=DATARMNETd41def0046();
|
|
|
+DATARMNETaa568481cf->DATARMNET381f1cadc4=DATARMNET5fe4c722a8->
|
|
|
+DATARMNET645e8912b8;hash_add(DATARMNET4791268d67,&DATARMNETaa568481cf->
|
|
|
+DATARMNETbd5d7d96d8,DATARMNETaa568481cf->DATARMNET381f1cadc4);goto
|
|
|
+DATARMNETc6f994577c;}return false;}void DATARMNETb98b78b8e3(void){struct
|
|
|
+DATARMNETd7c9631acd*DATARMNETaa568481cf;struct hlist_node*DATARMNET0386f6f82a;
|
|
|
+int DATARMNETae0201901a;hash_for_each_safe(DATARMNET4791268d67,
|
|
|
+DATARMNETae0201901a,DATARMNET0386f6f82a,DATARMNETaa568481cf,DATARMNETbd5d7d96d8)
|
|
|
+hash_del(&DATARMNETaa568481cf->DATARMNETbd5d7d96d8);}int DATARMNETdbcaf01255(
|
|
|
+void){struct DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();u8
|
|
|
+DATARMNETefc9df3df2;for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);
|
|
|
+DATARMNETefc9df3df2<DATARMNET78d9393ac8;DATARMNETefc9df3df2++){struct
|
|
|
+DATARMNETd7c9631acd*DATARMNETaa568481cf;DATARMNETaa568481cf=&DATARMNETe05748b000
|
|
|
+->DATARMNETebb45c8d86.DATARMNET2846a01cce[DATARMNETefc9df3df2];INIT_LIST_HEAD(&
|
|
|
+DATARMNETaa568481cf->DATARMNETb76b79d0d5);INIT_HLIST_NODE(&DATARMNETaa568481cf->
|
|
|
+DATARMNETbd5d7d96d8);}return DATARMNET0529bb9c4e;}
|