|
@@ -1,5 +1,5 @@
|
|
|
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
|
|
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
+ * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
*
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
@@ -23,10 +23,11 @@
|
|
|
#include "rmnet_offload_state.h"
|
|
|
#include "rmnet_offload_engine.h"
|
|
|
#include "rmnet_offload_stats.h"
|
|
|
-static char*verinfo[]={"\x65\x32\x31\x38\x66\x34\x35\x31",
|
|
|
-"\x32\x61\x34\x34\x66\x36\x62\x65","\x37\x34\x31\x35\x39\x32\x31\x63",
|
|
|
-"\x34\x31\x32\x39\x36\x62\x30\x39"};module_param_array(verinfo,charp,NULL,
|
|
|
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
|
|
|
+static char*verinfo[]={"\x63\x38\x61\x63\x61\x66\x38\x35",
|
|
|
+"\x65\x32\x31\x38\x66\x34\x35\x31","\x32\x61\x34\x34\x66\x36\x62\x65",
|
|
|
+"\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x31\x32\x39\x36\x62\x30\x39"};
|
|
|
+module_param_array(verinfo,charp,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
|
|
|
+verinfo,
|
|
|
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
|
|
|
);static DEFINE_SPINLOCK(DATARMNET0b5e447f18);static u32 DATARMNETcb7325e02d(
|
|
|
struct DATARMNETd812bcdbb5*DATARMNET458b70e7e5){struct DATARMNET4287f07234*
|
|
@@ -67,6 +68,7 @@ DATARMNET5affe290b8;u16 DATARMNETdaa9248df1;DATARMNET5affe290b8=
|
|
|
DATARMNET9d1b321642->len;DATARMNET458b70e7e5->DATARMNET3eb91ee54d=true;if(
|
|
|
unlikely(!(DATARMNET9d1b321642->dev->features&NETIF_F_RXCSUM))){goto
|
|
|
DATARMNETaabe3a05f8;}if(DATARMNET9d1b321642->hdrs_valid){struct
|
|
|
+DATARMNET0b82084e89*DATARMNET75be5f3406,DATARMNETc82d2f4e16;struct
|
|
|
DATARMNETd2991e8952*DATARMNET2e7cc88971,DATARMNETd1ff6cd568;DATARMNET8814564ab9
|
|
|
->DATARMNET388842c721=DATARMNET9d1b321642->ip_proto;DATARMNET8814564ab9->
|
|
|
DATARMNET4ca5ac9de1=DATARMNET9d1b321642->ip_len;DATARMNET8814564ab9->
|
|
@@ -92,13 +94,25 @@ sizeof(DATARMNETbf55123e5b->DATARMNET31202449fc));memcpy(&DATARMNET8814564ab9->
|
|
|
DATARMNET45ec858bc5[(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNETc657c0a139
|
|
|
[(0xd2d+202-0xdf7)],sizeof(DATARMNETbf55123e5b->DATARMNETc657c0a139));
|
|
|
DATARMNET8814564ab9->DATARMNETabd58f7f89=DATARMNETbf55123e5b->
|
|
|
-DATARMNET0687f7ecdc;}DATARMNET2e7cc88971=rmnet_frag_header_ptr(
|
|
|
+DATARMNET0687f7ecdc;if(DATARMNET8814564ab9->DATARMNET4ca5ac9de1>sizeof(*
|
|
|
+DATARMNETbf55123e5b)){int DATARMNET0afb05821a;__be16 DATARMNET833503918f;bool
|
|
|
+DATARMNETcd214ed34c;u8 DATARMNET615595a09c=DATARMNETbf55123e5b->
|
|
|
+DATARMNET7244bfdc4f;DATARMNET0afb05821a=rmnet_frag_ipv6_skip_exthdr(
|
|
|
+DATARMNET9d1b321642,sizeof(*DATARMNETbf55123e5b),&DATARMNET615595a09c,&
|
|
|
+DATARMNET833503918f,&DATARMNETcd214ed34c);if(DATARMNET0afb05821a<
|
|
|
+(0xd2d+202-0xdf7)||DATARMNET833503918f||DATARMNETcd214ed34c){if(
|
|
|
+DATARMNET615595a09c==DATARMNET5b166167a8)DATARMNET8814564ab9->
|
|
|
+DATARMNET4ca5ac9de1+=(0xd35+210-0xdff);DATARMNETa00cda79d0(DATARMNET807e4dad18);
|
|
|
+goto DATARMNETaabe3a05f8;}}}DATARMNET75be5f3406=rmnet_frag_header_ptr(
|
|
|
DATARMNET9d1b321642,DATARMNET8814564ab9->DATARMNET4ca5ac9de1,sizeof(*
|
|
|
-DATARMNET2e7cc88971),&DATARMNETd1ff6cd568);if(!DATARMNET2e7cc88971)goto
|
|
|
-DATARMNETaabe3a05f8;DATARMNET8814564ab9->DATARMNETa60d2ae3f6=DATARMNET2e7cc88971
|
|
|
-->DATARMNET6acbeeebb1;DATARMNET8814564ab9->DATARMNET5e7452ec23=
|
|
|
-DATARMNET2e7cc88971->DATARMNET29b8c05d14;if(DATARMNET8814564ab9->
|
|
|
-DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){__be32 DATARMNET0849981c7c;if(
|
|
|
+DATARMNET75be5f3406),&DATARMNETc82d2f4e16);if(!DATARMNET75be5f3406)goto
|
|
|
+DATARMNETaabe3a05f8;DATARMNET8814564ab9->DATARMNETa60d2ae3f6=DATARMNET75be5f3406
|
|
|
+->DATARMNET1b1c406ae9;DATARMNET8814564ab9->DATARMNET5e7452ec23=
|
|
|
+DATARMNET75be5f3406->DATARMNETdf0e8545ee;if(DATARMNET8814564ab9->
|
|
|
+DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){__be32 DATARMNET0849981c7c;
|
|
|
+DATARMNET2e7cc88971=rmnet_frag_header_ptr(DATARMNET9d1b321642,
|
|
|
+DATARMNET8814564ab9->DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),&
|
|
|
+DATARMNETd1ff6cd568);if(!DATARMNET2e7cc88971)goto DATARMNETaabe3a05f8;if(
|
|
|
DATARMNET9d1b321642->tcp_seq_set)DATARMNET0849981c7c=DATARMNET9d1b321642->
|
|
|
tcp_seq;else DATARMNET0849981c7c=DATARMNET2e7cc88971->DATARMNETb3e70104e0;
|
|
|
DATARMNET8814564ab9->DATARMNETbc28a5970f=ntohl(DATARMNET0849981c7c);}
|
|
@@ -129,29 +143,30 @@ DATARMNET8e175ac02d);DATARMNET458b70e7e5->DATARMNET8f59f5a745=
|
|
|
DATARMNETdaa9248df1!=DATARMNET5affe290b8;}else if(DATARMNET8814564ab9->
|
|
|
DATARMNET388842c721==(0xd03+244-0xdf1)){struct DATARMNET64bb8f616e*
|
|
|
DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;int DATARMNET0549c61885;__be16
|
|
|
-DATARMNET833503918f;u8 DATARMNET3f56a2bcf4;DATARMNETbf55123e5b=
|
|
|
-rmnet_frag_header_ptr(DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*
|
|
|
-DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto
|
|
|
+DATARMNET833503918f;bool DATARMNETcd214ed34c;u8 DATARMNET3f56a2bcf4;
|
|
|
+DATARMNETbf55123e5b=rmnet_frag_header_ptr(DATARMNET9d1b321642,(0xd2d+202-0xdf7),
|
|
|
+sizeof(*DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)goto
|
|
|
DATARMNETaabe3a05f8;DATARMNET3f56a2bcf4=DATARMNETbf55123e5b->DATARMNET7244bfdc4f
|
|
|
;DATARMNET0549c61885=rmnet_frag_ipv6_skip_exthdr(DATARMNET9d1b321642,sizeof(*
|
|
|
-DATARMNETbf55123e5b),&DATARMNET3f56a2bcf4,&DATARMNET833503918f);if(
|
|
|
-DATARMNET0549c61885<(0xd2d+202-0xdf7)){goto DATARMNETaabe3a05f8;}
|
|
|
-DATARMNET8814564ab9->DATARMNET4ca5ac9de1=(u16)DATARMNET0549c61885;
|
|
|
-DATARMNET8814564ab9->DATARMNET7fa8b2acbf=DATARMNET3f56a2bcf4;memcpy(&
|
|
|
-DATARMNET8814564ab9->DATARMNET949c2754de[(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b
|
|
|
-->DATARMNET31202449fc[(0xd2d+202-0xdf7)],sizeof(DATARMNETbf55123e5b->
|
|
|
-DATARMNET31202449fc));memcpy(&DATARMNET8814564ab9->DATARMNET45ec858bc5[
|
|
|
-(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNETc657c0a139[(0xd2d+202-0xdf7)],
|
|
|
-sizeof(DATARMNETbf55123e5b->DATARMNETc657c0a139));DATARMNET8814564ab9->
|
|
|
-DATARMNETabd58f7f89=DATARMNETbf55123e5b->DATARMNET0687f7ecdc;if(
|
|
|
-DATARMNET833503918f){if(DATARMNET8814564ab9->DATARMNET7fa8b2acbf==
|
|
|
-DATARMNET5b166167a8)DATARMNET8814564ab9->DATARMNET4ca5ac9de1+=(0xd35+210-0xdff);
|
|
|
-DATARMNETa00cda79d0(DATARMNET807e4dad18);goto DATARMNETaabe3a05f8;}
|
|
|
-DATARMNETdaa9248df1=ntohs(DATARMNETbf55123e5b->DATARMNETaa340485c5)+sizeof(*
|
|
|
-DATARMNETbf55123e5b);DATARMNET458b70e7e5->DATARMNET8f59f5a745=
|
|
|
-DATARMNETdaa9248df1!=DATARMNET5affe290b8;}else{return true;}if(
|
|
|
-DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){struct
|
|
|
-DATARMNETd2991e8952*DATARMNET2e7cc88971,DATARMNETd1ff6cd568;DATARMNET2e7cc88971=
|
|
|
+DATARMNETbf55123e5b),&DATARMNET3f56a2bcf4,&DATARMNET833503918f,&
|
|
|
+DATARMNETcd214ed34c);if(DATARMNET0549c61885<(0xd2d+202-0xdf7)){goto
|
|
|
+DATARMNETaabe3a05f8;}DATARMNET8814564ab9->DATARMNET4ca5ac9de1=(u16)
|
|
|
+DATARMNET0549c61885;DATARMNET8814564ab9->DATARMNET7fa8b2acbf=DATARMNET3f56a2bcf4
|
|
|
+;memcpy(&DATARMNET8814564ab9->DATARMNET949c2754de[(0xd2d+202-0xdf7)],&
|
|
|
+DATARMNETbf55123e5b->DATARMNET31202449fc[(0xd2d+202-0xdf7)],sizeof(
|
|
|
+DATARMNETbf55123e5b->DATARMNET31202449fc));memcpy(&DATARMNET8814564ab9->
|
|
|
+DATARMNET45ec858bc5[(0xd2d+202-0xdf7)],&DATARMNETbf55123e5b->DATARMNETc657c0a139
|
|
|
+[(0xd2d+202-0xdf7)],sizeof(DATARMNETbf55123e5b->DATARMNETc657c0a139));
|
|
|
+DATARMNET8814564ab9->DATARMNETabd58f7f89=DATARMNETbf55123e5b->
|
|
|
+DATARMNET0687f7ecdc;if(DATARMNET833503918f||DATARMNETcd214ed34c){if(
|
|
|
+DATARMNET8814564ab9->DATARMNET7fa8b2acbf==DATARMNET5b166167a8)
|
|
|
+DATARMNET8814564ab9->DATARMNET4ca5ac9de1+=(0xd35+210-0xdff);DATARMNETa00cda79d0(
|
|
|
+DATARMNET807e4dad18);goto DATARMNETaabe3a05f8;}DATARMNETdaa9248df1=ntohs(
|
|
|
+DATARMNETbf55123e5b->DATARMNETaa340485c5)+sizeof(*DATARMNETbf55123e5b);
|
|
|
+DATARMNET458b70e7e5->DATARMNET8f59f5a745=DATARMNETdaa9248df1!=
|
|
|
+DATARMNET5affe290b8;}else{return true;}if(DATARMNET8814564ab9->
|
|
|
+DATARMNET7fa8b2acbf==DATARMNETfd5c3d30e5){struct DATARMNETd2991e8952*
|
|
|
+DATARMNET2e7cc88971,DATARMNETd1ff6cd568;DATARMNET2e7cc88971=
|
|
|
rmnet_frag_header_ptr(DATARMNET9d1b321642,DATARMNET8814564ab9->
|
|
|
DATARMNET4ca5ac9de1,sizeof(*DATARMNET2e7cc88971),&DATARMNETd1ff6cd568);if(!
|
|
|
DATARMNET2e7cc88971)goto DATARMNETaabe3a05f8;DATARMNET8814564ab9->
|