rmnet_offload_main.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. /* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
  2. *
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License version 2 and
  5. * only version 2 as published by the Free Software Foundation.
  6. *
  7. * This program is distributed in the hope that it will be useful,
  8. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. * GNU General Public License for more details.
  11. */
  12. #include <linux/compiler.h>
  13. #include <linux/rcupdate.h>
  14. #include <linux/jhash.h>
  15. #include <linux/spinlock.h>
  16. #include "rmnet_descriptor.h"
  17. #include "rmnet_handlers.h"
  18. #include "rmnet_map.h"
  19. #include "rmnet_offload_main.h"
  20. #include "rmnet_offload_state.h"
  21. #include "rmnet_offload_engine.h"
  22. #include "rmnet_offload_stats.h"
  23. static const char*DATARMNET9be3ddbe97[]__always_unused={
  24. "\x49\x37\x32\x31\x62\x64\x36\x39\x35\x32\x31\x66\x65\x34\x61\x61\x38\x64\x61\x65\x62\x65\x66\x62\x32\x38\x30\x64\x38\x64\x31\x35\x30\x39\x66\x39\x31\x65\x36\x37\x33"
  25. ,
  26. "\x49\x36\x64\x36\x66\x39\x32\x35\x66\x33\x65\x33\x32\x31\x65\x31\x32\x32\x38\x64\x33\x38\x37\x33\x66\x63\x37\x38\x32\x31\x38\x62\x61\x39\x30\x65\x39\x34\x35\x30\x36"
  27. ,
  28. "\x49\x36\x61\x62\x39\x37\x30\x65\x36\x62\x65\x65\x34\x33\x39\x34\x63\x36\x31\x30\x33\x38\x31\x62\x62\x38\x39\x66\x36\x33\x36\x31\x61\x34\x66\x30\x33\x36\x63\x66\x30"
  29. ,
  30. "\x49\x38\x63\x31\x65\x62\x39\x62\x63\x35\x37\x36\x33\x33\x66\x34\x33\x63\x30\x38\x64\x32\x66\x62\x35\x35\x37\x32\x37\x34\x65\x61\x33\x31\x36\x65\x35\x66\x61\x30\x63"
  31. ,
  32. "\x49\x30\x64\x64\x66\x33\x66\x66\x30\x34\x36\x66\x31\x62\x39\x33\x66\x63\x31\x39\x62\x62\x38\x35\x62\x31\x38\x64\x30\x34\x30\x63\x33\x34\x33\x62\x39\x39\x66\x37\x33"
  33. ,
  34. "\x49\x33\x62\x36\x31\x30\x37\x35\x34\x33\x32\x32\x61\x66\x30\x39\x30\x66\x65\x39\x61\x65\x31\x34\x61\x61\x31\x38\x61\x35\x33\x34\x30\x66\x62\x61\x38\x36\x36\x64\x62"
  35. ,
  36. "\x49\x35\x31\x34\x36\x62\x33\x61\x30\x31\x36\x65\x66\x36\x35\x62\x33\x65\x36\x34\x35\x31\x33\x38\x64\x31\x34\x38\x31\x66\x37\x35\x35\x63\x66\x31\x31\x33\x34\x61\x32"
  37. ,};static DEFINE_SPINLOCK(DATARMNET0b5e447f18);static u32 DATARMNETcb7325e02d(
  38. struct DATARMNETd812bcdbb5*DATARMNET458b70e7e5){struct DATARMNET4287f07234*
  39. DATARMNET8814564ab9=&DATARMNET458b70e7e5->DATARMNET144d119066;__be32
  40. DATARMNETdfd47b00ff[(0xd20+231-0xdfc)];u32 DATARMNET5ebf661879;__be16
  41. DATARMNET08e913477e=(0xd2d+202-0xdf7),DATARMNETda7f7fa492=(0xd2d+202-0xdf7);if(
  42. DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNETa656f324b2||
  43. DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){
  44. DATARMNET08e913477e=DATARMNET8814564ab9->DATARMNETa60d2ae3f6;DATARMNETda7f7fa492
  45. =DATARMNET8814564ab9->DATARMNET5e7452ec23;}if(DATARMNET8814564ab9->
  46. DATARMNET388842c721==(0xd11+230-0xdf3)){DATARMNETdfd47b00ff[(0xd2d+202-0xdf7)]=
  47. DATARMNET8814564ab9->DATARMNET0a28fa80f4;DATARMNETdfd47b00ff[(0xd26+209-0xdf6)]=
  48. DATARMNET8814564ab9->DATARMNET1a2be7b6c2;DATARMNETdfd47b00ff[(0xd1f+216-0xdf5)]=
  49. DATARMNET8814564ab9->DATARMNET7fa8b2acbf;DATARMNETdfd47b00ff[(0xd18+223-0xdf4)]=
  50. DATARMNETda7f7fa492;DATARMNETdfd47b00ff[(0xd11+230-0xdf3)]=DATARMNET08e913477e;
  51. DATARMNET5ebf661879=(0xd0a+237-0xdf2);}else{memcpy(&DATARMNETdfd47b00ff[
  52. (0xd2d+202-0xdf7)],&DATARMNET8814564ab9->DATARMNET45ec858bc5[(0xd2d+202-0xdf7)],
  53. sizeof(DATARMNET8814564ab9->DATARMNET45ec858bc5));memcpy(&DATARMNETdfd47b00ff[
  54. (0xd0a+237-0xdf2)],&DATARMNET8814564ab9->DATARMNET949c2754de[(0xd2d+202-0xdf7)],
  55. sizeof(DATARMNET8814564ab9->DATARMNET45ec858bc5));DATARMNETdfd47b00ff[
  56. (0xd35+210-0xdff)]=DATARMNET8814564ab9->DATARMNET7fa8b2acbf;DATARMNETdfd47b00ff[
  57. 9]=DATARMNETda7f7fa492;DATARMNETdfd47b00ff[(0xd27+224-0xdfd)]=
  58. DATARMNET08e913477e;DATARMNET5ebf661879=(0xd20+231-0xdfc);}return jhash2(
  59. DATARMNETdfd47b00ff,DATARMNET5ebf661879,(0xd2d+202-0xdf7));}static void
  60. DATARMNETe26a68d20e(u32 DATARMNET5affe290b8){u32 DATARMNET2991ac9aa9;if(
  61. DATARMNET5affe290b8>50000)DATARMNET2991ac9aa9=DATARMNETa121404606;else if(
  62. DATARMNET5affe290b8>30000)DATARMNET2991ac9aa9=DATARMNET787b04223a;else if(
  63. DATARMNET5affe290b8>23000)DATARMNET2991ac9aa9=DATARMNET8e1480cff2;else if(
  64. DATARMNET5affe290b8>14500)DATARMNET2991ac9aa9=DATARMNETf335e26298;else if(
  65. DATARMNET5affe290b8>7000)DATARMNET2991ac9aa9=DATARMNET3067ea3199;else if(
  66. DATARMNET5affe290b8>(0x5b4+1875-0x78f))DATARMNET2991ac9aa9=DATARMNETa76d93355c;
  67. else DATARMNET2991ac9aa9=DATARMNET92f3434694;DATARMNETa00cda79d0(
  68. DATARMNET2991ac9aa9);}static bool DATARMNET1a7ed9a6a2(struct
  69. rmnet_frag_descriptor*DATARMNET9d1b321642,struct DATARMNETd812bcdbb5*
  70. DATARMNET458b70e7e5){struct DATARMNET4287f07234*DATARMNET8814564ab9=&
  71. DATARMNET458b70e7e5->DATARMNET144d119066;u8*DATARMNETdf2dbc641f;u16
  72. DATARMNET5affe290b8;u16 DATARMNETdaa9248df1;if(DATARMNET9d1b321642->hdrs_valid){
  73. struct DATARMNETd2991e8952*DATARMNET2e7cc88971,DATARMNETd1ff6cd568;
  74. DATARMNET8814564ab9->DATARMNET388842c721=DATARMNET9d1b321642->ip_proto;
  75. DATARMNET8814564ab9->DATARMNET4ca5ac9de1=DATARMNET9d1b321642->ip_len;
  76. DATARMNET8814564ab9->DATARMNET7fa8b2acbf=DATARMNET9d1b321642->trans_proto;
  77. DATARMNET8814564ab9->DATARMNET0aeee57ceb=DATARMNET9d1b321642->trans_len;
  78. DATARMNET5affe290b8=DATARMNET9d1b321642->len;if(DATARMNET8814564ab9->
  79. DATARMNET388842c721==(0xd11+230-0xdf3)){struct DATARMNET308c06fca6*
  80. DATARMNET86f1f2cdc9,DATARMNETbf6548198e;DATARMNET86f1f2cdc9=
  81. rmnet_frag_header_ptr(DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*
  82. DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto
  83. DATARMNETaabe3a05f8;DATARMNET8814564ab9->DATARMNET1a2be7b6c2=DATARMNET86f1f2cdc9
  84. ->DATARMNET9bbd2ca483;DATARMNET8814564ab9->DATARMNET0a28fa80f4=
  85. DATARMNET86f1f2cdc9->DATARMNET11ef55b2bb;DATARMNET8814564ab9->
  86. DATARMNET19b03754c4=DATARMNET86f1f2cdc9->DATARMNET1eb6c27583;DATARMNET8814564ab9
  87. ->DATARMNET57bf608183=DATARMNET86f1f2cdc9->DATARMNET03e081f69f;
  88. DATARMNET8814564ab9->DATARMNETcf915688f5=DATARMNET86f1f2cdc9->
  89. DATARMNET2c091223da;}else{struct DATARMNET64bb8f616e*DATARMNETbf55123e5b,
  90. DATARMNETcf1d9e2c1e;DATARMNETbf55123e5b=rmnet_frag_header_ptr(
  91. DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),&
  92. DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto DATARMNETaabe3a05f8;memcpy(&
  93. DATARMNET8814564ab9->DATARMNET949c2754de[(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b
  94. ->DATARMNET31202449fc[(0xd2d+202-0xdf7)],sizeof(DATARMNETbf55123e5b->
  95. DATARMNET31202449fc));memcpy(&DATARMNET8814564ab9->DATARMNET45ec858bc5[
  96. (0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNETc657c0a139[(0xd2d+202-0xdf7)],
  97. sizeof(DATARMNETbf55123e5b->DATARMNETc657c0a139));DATARMNET8814564ab9->
  98. DATARMNETabd58f7f89=DATARMNETbf55123e5b->DATARMNET0687f7ecdc;}
  99. DATARMNET2e7cc88971=rmnet_frag_header_ptr(DATARMNET9d1b321642,
  100. DATARMNET8814564ab9->DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),&
  101. DATARMNETd1ff6cd568);if(!DATARMNET2e7cc88971)goto DATARMNETaabe3a05f8;
  102. DATARMNET8814564ab9->DATARMNETa60d2ae3f6=DATARMNET2e7cc88971->
  103. DATARMNET6acbeeebb1;DATARMNET8814564ab9->DATARMNET5e7452ec23=DATARMNET2e7cc88971
  104. ->DATARMNET29b8c05d14;if(DATARMNET8814564ab9->DATARMNET7fa8b2acbf==
  105. DATARMNETfd5c3d30e5){__be32 DATARMNET0849981c7c;if(DATARMNET9d1b321642->
  106. tcp_seq_set)DATARMNET0849981c7c=DATARMNET9d1b321642->tcp_seq;else
  107. DATARMNET0849981c7c=DATARMNET2e7cc88971->DATARMNETb3e70104e0;DATARMNET8814564ab9
  108. ->DATARMNETbc28a5970f=ntohl(DATARMNET0849981c7c);}DATARMNET458b70e7e5->
  109. DATARMNET645e8912b8=DATARMNETcb7325e02d(DATARMNET458b70e7e5);DATARMNET458b70e7e5
  110. ->DATARMNET1ef22e4c76=DATARMNET9d1b321642->len-DATARMNET9d1b321642->ip_len-
  111. DATARMNET9d1b321642->trans_len;DATARMNET458b70e7e5->DATARMNET719f68fb88=
  112. DATARMNET9d1b321642;return false;}DATARMNETdf2dbc641f=rmnet_frag_data_ptr(
  113. DATARMNET9d1b321642);DATARMNET5affe290b8=DATARMNET9d1b321642->len;
  114. DATARMNET458b70e7e5->DATARMNET3eb91ee54d=true;DATARMNET8814564ab9->
  115. DATARMNET388842c721=(DATARMNETdf2dbc641f[(0xd2d+202-0xdf7)]&(0xbf7+4405-0x1c3c))
  116. >>(0xd11+230-0xdf3);if(DATARMNET8814564ab9->DATARMNET388842c721==
  117. (0xd11+230-0xdf3)){struct DATARMNET308c06fca6*DATARMNET86f1f2cdc9,
  118. DATARMNETbf6548198e;DATARMNET86f1f2cdc9=rmnet_frag_header_ptr(
  119. DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&
  120. DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto DATARMNETaabe3a05f8;
  121. DATARMNET8814564ab9->DATARMNET4ca5ac9de1=DATARMNET86f1f2cdc9->
  122. DATARMNET610d06a887*(0xd11+230-0xdf3);DATARMNET8814564ab9->DATARMNET7fa8b2acbf=
  123. DATARMNET86f1f2cdc9->DATARMNET953d32410f;DATARMNET8814564ab9->
  124. DATARMNET1a2be7b6c2=DATARMNET86f1f2cdc9->DATARMNET9bbd2ca483;DATARMNET8814564ab9
  125. ->DATARMNET0a28fa80f4=DATARMNET86f1f2cdc9->DATARMNET11ef55b2bb;
  126. DATARMNET8814564ab9->DATARMNET19b03754c4=DATARMNET86f1f2cdc9->
  127. DATARMNET1eb6c27583;DATARMNET8814564ab9->DATARMNET57bf608183=DATARMNET86f1f2cdc9
  128. ->DATARMNET03e081f69f;DATARMNET8814564ab9->DATARMNETcf915688f5=
  129. DATARMNET86f1f2cdc9->DATARMNET2c091223da;if(DATARMNET86f1f2cdc9->
  130. DATARMNET2c091223da&htons(16383)){DATARMNETa00cda79d0(DATARMNET807e4dad18);goto
  131. DATARMNETaabe3a05f8;}DATARMNETdaa9248df1=ntohs(DATARMNET86f1f2cdc9->
  132. DATARMNET8e175ac02d);DATARMNET458b70e7e5->DATARMNET8f59f5a745=
  133. DATARMNETdaa9248df1!=DATARMNET5affe290b8;}else if(DATARMNET8814564ab9->
  134. DATARMNET388842c721==(0xd03+244-0xdf1)){struct DATARMNET64bb8f616e*
  135. DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;int DATARMNET0549c61885;__be16
  136. DATARMNET833503918f;u8 DATARMNET3f56a2bcf4;DATARMNETbf55123e5b=
  137. rmnet_frag_header_ptr(DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*
  138. DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto
  139. DATARMNETaabe3a05f8;DATARMNET3f56a2bcf4=DATARMNETbf55123e5b->DATARMNET7244bfdc4f
  140. ;DATARMNET0549c61885=rmnet_frag_ipv6_skip_exthdr(DATARMNET9d1b321642,sizeof(*
  141. DATARMNETbf55123e5b),&DATARMNET3f56a2bcf4,&DATARMNET833503918f);if(
  142. DATARMNET0549c61885<(0xd2d+202-0xdf7)){goto DATARMNETaabe3a05f8;}
  143. DATARMNET8814564ab9->DATARMNET4ca5ac9de1=(u16)DATARMNET0549c61885;
  144. DATARMNET8814564ab9->DATARMNET7fa8b2acbf=DATARMNET3f56a2bcf4;memcpy(&
  145. DATARMNET8814564ab9->DATARMNET949c2754de[(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b
  146. ->DATARMNET31202449fc[(0xd2d+202-0xdf7)],sizeof(DATARMNETbf55123e5b->
  147. DATARMNET31202449fc));memcpy(&DATARMNET8814564ab9->DATARMNET45ec858bc5[
  148. (0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNETc657c0a139[(0xd2d+202-0xdf7)],
  149. sizeof(DATARMNETbf55123e5b->DATARMNETc657c0a139));DATARMNET8814564ab9->
  150. DATARMNETabd58f7f89=DATARMNETbf55123e5b->DATARMNET0687f7ecdc;if(
  151. DATARMNET833503918f){if(DATARMNET8814564ab9->DATARMNET7fa8b2acbf==
  152. DATARMNET5b166167a8)DATARMNET8814564ab9->DATARMNET4ca5ac9de1+=(0xd35+210-0xdff);
  153. DATARMNETa00cda79d0(DATARMNET807e4dad18);goto DATARMNETaabe3a05f8;}
  154. DATARMNETdaa9248df1=ntohs(DATARMNETbf55123e5b->DATARMNETaa340485c5)+sizeof(*
  155. DATARMNETbf55123e5b);DATARMNET458b70e7e5->DATARMNET8f59f5a745=
  156. DATARMNETdaa9248df1!=DATARMNET5affe290b8;}else{return true;}if(
  157. DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){struct
  158. DATARMNETd2991e8952*DATARMNET2e7cc88971,DATARMNETd1ff6cd568;DATARMNET2e7cc88971=
  159. rmnet_frag_header_ptr(DATARMNET9d1b321642,DATARMNET8814564ab9->
  160. DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),&DATARMNETd1ff6cd568);if(!
  161. DATARMNET2e7cc88971)goto DATARMNETaabe3a05f8;DATARMNET8814564ab9->
  162. DATARMNET0aeee57ceb=DATARMNET2e7cc88971->DATARMNETcf2e43ad69*(0xd11+230-0xdf3);
  163. DATARMNET8814564ab9->DATARMNETa60d2ae3f6=DATARMNET2e7cc88971->
  164. DATARMNET6acbeeebb1;DATARMNET8814564ab9->DATARMNET5e7452ec23=DATARMNET2e7cc88971
  165. ->DATARMNET29b8c05d14;DATARMNET8814564ab9->DATARMNETbc28a5970f=ntohl(
  166. DATARMNET2e7cc88971->DATARMNETb3e70104e0);}else if(DATARMNET8814564ab9->
  167. DATARMNET7fa8b2acbf==DATARMNETa656f324b2){struct DATARMNET0b82084e89*
  168. DATARMNET75be5f3406,DATARMNETc82d2f4e16;DATARMNET75be5f3406=
  169. rmnet_frag_header_ptr(DATARMNET9d1b321642,DATARMNET8814564ab9->
  170. DATARMNET4ca5ac9de1,sizeof(*DATARMNET75be5f3406),&DATARMNETc82d2f4e16);if(!
  171. DATARMNET75be5f3406)goto DATARMNETaabe3a05f8;DATARMNET8814564ab9->
  172. DATARMNET0aeee57ceb=sizeof(*DATARMNET75be5f3406);DATARMNET8814564ab9->
  173. DATARMNETa60d2ae3f6=DATARMNET75be5f3406->DATARMNET1b1c406ae9;DATARMNET8814564ab9
  174. ->DATARMNET5e7452ec23=DATARMNET75be5f3406->DATARMNETdf0e8545ee;}else{goto
  175. DATARMNETaabe3a05f8;}DATARMNET458b70e7e5->DATARMNET3eb91ee54d=false;
  176. DATARMNET458b70e7e5->DATARMNET645e8912b8=DATARMNETcb7325e02d(DATARMNET458b70e7e5
  177. );if(!DATARMNET458b70e7e5->DATARMNET8f59f5a745){DATARMNET9d1b321642->ip_proto=
  178. DATARMNET8814564ab9->DATARMNET388842c721;DATARMNET9d1b321642->ip_len=
  179. DATARMNET8814564ab9->DATARMNET4ca5ac9de1;DATARMNET9d1b321642->trans_proto=
  180. DATARMNET8814564ab9->DATARMNET7fa8b2acbf;DATARMNET9d1b321642->trans_len=
  181. DATARMNET8814564ab9->DATARMNET0aeee57ceb;DATARMNET9d1b321642->hdrs_valid=
  182. (0xd26+209-0xdf6);}DATARMNETaabe3a05f8:DATARMNET458b70e7e5->DATARMNET1ef22e4c76=
  183. DATARMNET5affe290b8-DATARMNET8814564ab9->DATARMNET4ca5ac9de1-DATARMNET8814564ab9
  184. ->DATARMNET0aeee57ceb;if(DATARMNET458b70e7e5->DATARMNET8f59f5a745)
  185. DATARMNETa00cda79d0(DATARMNET52b7da9033);DATARMNET458b70e7e5->
  186. DATARMNET719f68fb88=DATARMNET9d1b321642;return false;}static void
  187. DATARMNET29e8d137c4(struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct
  188. rmnet_port*DATARMNETf0d9de7e2f){struct DATARMNET70f3b87b5d*DATARMNETe05748b000=
  189. DATARMNETc2a630b113();struct DATARMNETd812bcdbb5 DATARMNET458b70e7e5;memset(&
  190. DATARMNET458b70e7e5,(0xd2d+202-0xdf7),sizeof(DATARMNET458b70e7e5));
  191. DATARMNET664568fcd0();DATARMNETe05748b000->DATARMNET403589239f=
  192. DATARMNETf0d9de7e2f;if(DATARMNET1a7ed9a6a2(DATARMNET9d1b321642,&
  193. DATARMNET458b70e7e5)){DATARMNETa00cda79d0(DATARMNET1cddffce49);
  194. rmnet_recycle_frag_descriptor(DATARMNET9d1b321642,DATARMNETf0d9de7e2f);goto
  195. DATARMNETbf4095f79e;}DATARMNETa00cda79d0(DATARMNET9b3fdb0e16);if(
  196. DATARMNET458b70e7e5.DATARMNET3eb91ee54d){goto DATARMNET806c6f8e60;}else if(
  197. DATARMNET458b70e7e5.DATARMNET8f59f5a745){DATARMNETc38c135c9f(DATARMNET458b70e7e5
  198. .DATARMNET645e8912b8);goto DATARMNET806c6f8e60;}if(!DATARMNET9d1b321642->
  199. csum_valid){goto DATARMNET806c6f8e60;}if(!DATARMNETfbf5798e15(&
  200. DATARMNET458b70e7e5))goto DATARMNET806c6f8e60;goto DATARMNETbf4095f79e;
  201. DATARMNET806c6f8e60:DATARMNET19d190f2bd(&DATARMNET458b70e7e5);
  202. DATARMNETbf4095f79e:DATARMNET6a76048590();}void DATARMNET664568fcd0(void){
  203. spin_lock_bh(&DATARMNET0b5e447f18);}void DATARMNET6a76048590(void){
  204. spin_unlock_bh(&DATARMNET0b5e447f18);}void DATARMNET818b960147(void){
  205. rcu_assign_pointer(rmnet_perf_desc_entry,DATARMNET29e8d137c4);}void
  206. DATARMNETba38823a2f(void){rcu_assign_pointer(rmnet_perf_desc_entry,NULL);}bool
  207. DATARMNET19eb0de3b2(void){void(*DATARMNET27ebcde4bf)(struct
  208. rmnet_frag_descriptor*DATARMNET9d1b321642,struct rmnet_port*DATARMNETf0d9de7e2f)
  209. ;rcu_read_lock();DATARMNET27ebcde4bf=rcu_dereference(rmnet_perf_desc_entry);
  210. rcu_read_unlock();return DATARMNET27ebcde4bf!=NULL;}void DATARMNET58a244b2fe(
  211. struct rmnet_frag_descriptor*DATARMNET9d1b321642,u32 DATARMNET0d47fb783d){struct
  212. DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();
  213. DATARMNETe26a68d20e(DATARMNET0d47fb783d);DATARMNETa00cda79d0(DATARMNET65843ad009
  214. );rmnet_frag_deliver(DATARMNET9d1b321642,DATARMNETe05748b000->
  215. DATARMNET403589239f);}void DATARMNET19d190f2bd(struct DATARMNETd812bcdbb5*
  216. DATARMNET458b70e7e5){struct rmnet_frag_descriptor*DATARMNET9d1b321642=
  217. DATARMNET458b70e7e5->DATARMNET719f68fb88;u32 DATARMNET5affe290b8=
  218. DATARMNET458b70e7e5->DATARMNET1ef22e4c76+DATARMNET458b70e7e5->
  219. DATARMNET144d119066.DATARMNET4ca5ac9de1+DATARMNET458b70e7e5->DATARMNET144d119066
  220. .DATARMNET0aeee57ceb;if(DATARMNET5affe290b8>65536)return;if(!DATARMNET458b70e7e5
  221. ->DATARMNET3eb91ee54d)DATARMNET9d1b321642->hash=DATARMNET458b70e7e5->
  222. DATARMNET645e8912b8;DATARMNET58a244b2fe(DATARMNET9d1b321642,DATARMNET5affe290b8)
  223. ;}void DATARMNET9292bebdd3(void*DATARMNETf0d9de7e2f){}void DATARMNETb7e47d7254(
  224. void*DATARMNETf0d9de7e2f){}void DATARMNET95e1703026(struct rmnet_map_dl_ind_hdr*
  225. DATARMNET7c7748ef7a,struct rmnet_map_control_command_header*DATARMNET8b07ee3e82)
  226. {struct DATARMNET70f3b87b5d*DATARMNETe05748b000=DATARMNETc2a630b113();(void)
  227. DATARMNET8b07ee3e82;if(DATARMNETe05748b000->DATARMNETa9f2b2f677.
  228. DATARMNETb165d2c5c4&&DATARMNETae70636c90())DATARMNETa00cda79d0(
  229. DATARMNET372ef39ae4);DATARMNETe05748b000->DATARMNETa9f2b2f677.
  230. DATARMNETb165d2c5c4=true;DATARMNETe05748b000->DATARMNETa9f2b2f677.
  231. DATARMNETe2251ce433=DATARMNET7c7748ef7a->le.seq;DATARMNETe05748b000->
  232. DATARMNETa9f2b2f677.DATARMNET7f59b108db=DATARMNET7c7748ef7a->le.pkts;}void
  233. DATARMNETc9dd320f49(struct rmnet_map_dl_ind_trl*DATARMNET2541770fea,struct
  234. rmnet_map_control_command_header*DATARMNET8b07ee3e82){struct DATARMNET70f3b87b5d
  235. *DATARMNETe05748b000=DATARMNETc2a630b113();(void)DATARMNET8b07ee3e82;if(
  236. DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNETe2251ce433!=
  237. DATARMNET2541770fea->seq_le)DATARMNETa00cda79d0(DATARMNET30a4d88ea6);if(
  238. DATARMNETae70636c90())DATARMNETa00cda79d0(DATARMNETa03ed3629e);
  239. DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNETb165d2c5c4=false;
  240. DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNETe2251ce433=(0xd2d+202-0xdf7);
  241. DATARMNETe05748b000->DATARMNETa9f2b2f677.DATARMNET7f59b108db=(0xd2d+202-0xdf7);}