rmnet_offload_tcp.c 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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 "rmnet_descriptor.h"
  13. #include "rmnet_offload_main.h"
  14. #include "rmnet_offload_engine.h"
  15. #include "rmnet_offload_stats.h"
  16. #include "rmnet_offload_knob.h"
  17. static bool DATARMNET2818ea93ec(struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){
  18. struct DATARMNETd2991e8952*DATARMNET2e7cc88971=DATARMNET5fe4c722a8->
  19. DATARMNET96c6c71653;__be32 DATARMNETa8eeab014d;u8 DATARMNET1464100e7a=
  20. DATARMNET2e7cc88971->DATARMNETd570802f3d;DATARMNETa8eeab014d=(0xbf7+4796-0x1e04)
  21. ;if((!DATARMNET5fe4c722a8->DATARMNET1ef22e4c76&&(DATARMNET1464100e7a&
  22. (0xeb7+1158-0x132d)))||(DATARMNET1464100e7a&DATARMNETa8eeab014d))return true;
  23. return false;}static bool DATARMNET829fcf5939(struct DATARMNETd7c9631acd*
  24. DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){struct
  25. DATARMNETd2991e8952*DATARMNET699c2c62cd,*DATARMNET8814564ab9;u32
  26. DATARMNET3c3abe9e2c,DATARMNETefc9df3df2;DATARMNET699c2c62cd=DATARMNETaa568481cf
  27. ->DATARMNET8cd2f78e4f;DATARMNET8814564ab9=DATARMNET5fe4c722a8->
  28. DATARMNET96c6c71653;DATARMNET3c3abe9e2c=DATARMNET699c2c62cd->DATARMNETcf2e43ad69
  29. *(0xd11+230-0xdf3);if(DATARMNET8814564ab9->DATARMNETcf2e43ad69*(0xd11+230-0xdf3)
  30. !=DATARMNET3c3abe9e2c)return true;for(DATARMNETefc9df3df2=sizeof(*
  31. DATARMNET699c2c62cd);DATARMNETefc9df3df2<DATARMNET3c3abe9e2c;DATARMNETefc9df3df2
  32. +=(0xd11+230-0xdf3)){if(*(u32*)((u8*)DATARMNET699c2c62cd+DATARMNETefc9df3df2)^*(
  33. u32*)((u8*)DATARMNET8814564ab9+DATARMNETefc9df3df2))return true;}return false;}
  34. static int DATARMNET9a13d70865(struct DATARMNETd7c9631acd*DATARMNETaa568481cf,
  35. struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8){struct DATARMNETd2991e8952*
  36. DATARMNET8814564ab9=DATARMNET5fe4c722a8->DATARMNET96c6c71653;u64
  37. DATARMNET7457d496cb;u32 DATARMNET7032feb866,DATARMNET95acece3fc;if(
  38. DATARMNET2818ea93ec(DATARMNET5fe4c722a8)){DATARMNETa00cda79d0(
  39. DATARMNETb322de38be);return DATARMNET7af645849a;}if(!DATARMNETaa568481cf->
  40. DATARMNET1db11fa85e)return DATARMNET0413b43080;if(DATARMNET829fcf5939(
  41. DATARMNETaa568481cf,DATARMNET5fe4c722a8)){DATARMNETa00cda79d0(
  42. DATARMNET38317c7efd);return DATARMNETb0bd5db24d;}DATARMNET7032feb866=(
  43. DATARMNET5fe4c722a8->DATARMNET719f68fb88->tcp_seq_set)?ntohl(DATARMNET5fe4c722a8
  44. ->DATARMNET719f68fb88->tcp_seq):ntohl(DATARMNET8814564ab9->DATARMNETb3e70104e0);
  45. if(DATARMNET7032feb866^DATARMNETaa568481cf->DATARMNETd3a1a2b9b5){
  46. DATARMNETa00cda79d0(DATARMNET31c0e41f5a);return DATARMNET7af645849a;}
  47. DATARMNET95acece3fc=(DATARMNET5fe4c722a8->DATARMNET719f68fb88->gso_size)?:
  48. DATARMNET5fe4c722a8->DATARMNET1ef22e4c76;if(DATARMNET95acece3fc!=
  49. DATARMNETaa568481cf->DATARMNET1978d5d8de){DATARMNETa00cda79d0(
  50. DATARMNET0cd1fa0d98);return DATARMNETb0bd5db24d;}DATARMNET7457d496cb=
  51. DATARMNETf1d1b8287f(DATARMNETdf66588a73);if(DATARMNET5fe4c722a8->
  52. DATARMNET1ef22e4c76+DATARMNETaa568481cf->DATARMNETcf28ae376b>=
  53. DATARMNET7457d496cb){DATARMNETa00cda79d0(DATARMNET1c0d243816);return
  54. DATARMNETb0bd5db24d;}DATARMNET5fe4c722a8->DATARMNETf1b6b0a6cc=false;return
  55. DATARMNET0413b43080;}bool DATARMNET4c7cdc25b7(struct DATARMNETd7c9631acd*
  56. DATARMNETaa568481cf,struct DATARMNETd812bcdbb5*DATARMNET5fe4c722a8,bool
  57. DATARMNETd87669e323){int DATARMNETb14e52a504;if(DATARMNETd87669e323){
  58. DATARMNETa00cda79d0(DATARMNET47a963957c);DATARMNETa3055c21f2(DATARMNETaa568481cf
  59. );DATARMNET19d190f2bd(DATARMNET5fe4c722a8);return true;}DATARMNETb14e52a504=
  60. DATARMNET9a13d70865(DATARMNETaa568481cf,DATARMNET5fe4c722a8);if(
  61. DATARMNETb14e52a504==DATARMNET0413b43080){DATARMNET33aa5df9ef(
  62. DATARMNETaa568481cf,DATARMNET5fe4c722a8);}else if(DATARMNETb14e52a504==
  63. DATARMNETb0bd5db24d){DATARMNETa3055c21f2(DATARMNETaa568481cf);
  64. DATARMNET33aa5df9ef(DATARMNETaa568481cf,DATARMNET5fe4c722a8);}else{
  65. DATARMNETa3055c21f2(DATARMNETaa568481cf);DATARMNET19d190f2bd(DATARMNET5fe4c722a8
  66. );}return true;}