|
@@ -1,6 +1,6 @@
|
|
|
// SPDX-License-Identifier: GPL-2.0-only
|
|
|
/* Copyright (c) 2021, The Linux Foundation. All rights reserved.
|
|
|
- * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
+ * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
*
|
|
|
* RMNET WLAN fragment handler framework
|
|
|
*
|
|
@@ -82,7 +82,7 @@ DATARMNETc7c83f614f(struct DATARMNET6f3b954709*DATARMNET63b1a086d5,bool
|
|
|
DATARMNET7a9bcaf1a3){struct DATARMNET8d3c2559ca*DATARMNET54338da2ff;int(*
|
|
|
DATARMNET456ac0e8eb)(struct sk_buff*DATARMNET543491eb0f);struct sk_buff*
|
|
|
DATARMNET543491eb0f,*DATARMNET0386f6f82a;unsigned long DATARMNETfb0677cc3c;
|
|
|
-DATARMNET456ac0e8eb=(DATARMNET7a9bcaf1a3)?netif_receive_skb:netif_rx;
|
|
|
+DATARMNET456ac0e8eb=(DATARMNET7a9bcaf1a3)?netif_receive_skb:__netif_rx;
|
|
|
DATARMNET54338da2ff=DATARMNET63b1a086d5->DATARMNET7ed5754a5c;spin_lock_irqsave(&
|
|
|
DATARMNET63b1a086d5->DATARMNET94b1f9ee09,DATARMNETfb0677cc3c);
|
|
|
list_for_each_entry_safe(DATARMNET543491eb0f,DATARMNET0386f6f82a,&
|
|
@@ -146,35 +146,38 @@ spin_unlock_irqrestore(&DATARMNET531b038fcd,DATARMNETfb0677cc3c);return
|
|
|
DATARMNET63b1a086d5;}static int DATARMNET9d6ad3b16f(struct sk_buff*
|
|
|
DATARMNET543491eb0f,struct DATARMNETb89ecedefc*DATARMNET3396919a68,struct
|
|
|
DATARMNETdadb4e2c65*DATARMNET54338da2ff,struct DATARMNET8d3c2559ca*
|
|
|
-DATARMNET2d4b4cfc9e)__must_hold(RCU){struct DATARMNET6f3b954709*
|
|
|
-DATARMNET63b1a086d5;int DATARMNET61c2303133=(0xd26+209-0xdf6);
|
|
|
-DATARMNET5ca94dbc3c(DATARMNETd8273aa7e1);DATARMNET63b1a086d5=DATARMNET52b387f6cd
|
|
|
-(DATARMNET54338da2ff);if(!DATARMNET63b1a086d5){DATARMNET61c2303133=(-
|
|
|
-(0xd26+209-0xdf6));goto DATARMNETbf4095f79e;}DATARMNET63b1a086d5->
|
|
|
-DATARMNET763f2e5fac=jiffies;if(DATARMNET63b1a086d5->DATARMNET7ed5754a5c){if(
|
|
|
-IS_ERR(DATARMNET63b1a086d5->DATARMNET7ed5754a5c))goto DATARMNETbf4095f79e;if(!
|
|
|
-DATARMNET4899053671(DATARMNET543491eb0f,DATARMNET63b1a086d5->DATARMNET7ed5754a5c
|
|
|
-)){DATARMNET5ca94dbc3c(DATARMNET7a58a5c1fc);DATARMNET61c2303133=
|
|
|
-(0xd2d+202-0xdf7);goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c(
|
|
|
-DATARMNETba232077da);goto DATARMNETbf4095f79e;}if(DATARMNET54338da2ff->
|
|
|
-DATARMNETb65c469a15){unsigned long DATARMNETfb0677cc3c;spin_lock_irqsave(&
|
|
|
-DATARMNET63b1a086d5->DATARMNET94b1f9ee09,DATARMNETfb0677cc3c);list_add_tail(&
|
|
|
-DATARMNET543491eb0f->list,&DATARMNET63b1a086d5->DATARMNET0f34bf3ea9);
|
|
|
-spin_unlock_irqrestore(&DATARMNET63b1a086d5->DATARMNET94b1f9ee09,
|
|
|
-DATARMNETfb0677cc3c);DATARMNET61c2303133=(0xd2d+202-0xdf7);DATARMNET5ca94dbc3c(
|
|
|
-DATARMNETe75ad1a949);goto DATARMNETbf4095f79e;}if(DATARMNET3396919a68->
|
|
|
-DATARMNET4924e79411==IPPROTO_TCP||DATARMNET3396919a68->DATARMNET4924e79411==
|
|
|
-IPPROTO_UDP){struct udphdr*DATARMNET75be5f3406=(struct udphdr*)(
|
|
|
+DATARMNET2d4b4cfc9e)__must_hold(RCU){struct skb_shared_info*DATARMNETa9599f487c=
|
|
|
+skb_shinfo(DATARMNET543491eb0f);struct DATARMNET6f3b954709*DATARMNET63b1a086d5;
|
|
|
+int DATARMNET61c2303133=(0xd26+209-0xdf6);if(DATARMNETa9599f487c->tskey){
|
|
|
+DATARMNETa9599f487c->tskey=(0xd2d+202-0xdf7);goto DATARMNETbf4095f79e;}
|
|
|
+DATARMNET5ca94dbc3c(DATARMNETd8273aa7e1);DATARMNETa9599f487c->tskey=
|
|
|
+(0xd26+209-0xdf6);DATARMNET63b1a086d5=DATARMNET52b387f6cd(DATARMNET54338da2ff);
|
|
|
+if(!DATARMNET63b1a086d5){DATARMNET61c2303133=(-(0xd26+209-0xdf6));goto
|
|
|
+DATARMNETbf4095f79e;}DATARMNET63b1a086d5->DATARMNET763f2e5fac=jiffies;if(
|
|
|
+DATARMNET63b1a086d5->DATARMNET7ed5754a5c){if(IS_ERR(DATARMNET63b1a086d5->
|
|
|
+DATARMNET7ed5754a5c))goto DATARMNETbf4095f79e;if(!DATARMNET4899053671(
|
|
|
+DATARMNET543491eb0f,DATARMNET63b1a086d5->DATARMNET7ed5754a5c)){
|
|
|
+DATARMNET5ca94dbc3c(DATARMNET7a58a5c1fc);DATARMNET61c2303133=(0xd2d+202-0xdf7);
|
|
|
+goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c(DATARMNETba232077da);goto
|
|
|
+DATARMNETbf4095f79e;}if(DATARMNET54338da2ff->DATARMNETb65c469a15){unsigned long
|
|
|
+DATARMNETfb0677cc3c;spin_lock_irqsave(&DATARMNET63b1a086d5->DATARMNET94b1f9ee09,
|
|
|
+DATARMNETfb0677cc3c);list_add_tail(&DATARMNET543491eb0f->list,&
|
|
|
+DATARMNET63b1a086d5->DATARMNET0f34bf3ea9);spin_unlock_irqrestore(&
|
|
|
+DATARMNET63b1a086d5->DATARMNET94b1f9ee09,DATARMNETfb0677cc3c);
|
|
|
+DATARMNET61c2303133=(0xd2d+202-0xdf7);DATARMNET5ca94dbc3c(DATARMNETe75ad1a949);
|
|
|
+goto DATARMNETbf4095f79e;}if(DATARMNET3396919a68->DATARMNET4924e79411==
|
|
|
+IPPROTO_TCP||DATARMNET3396919a68->DATARMNET4924e79411==IPPROTO_UDP){struct
|
|
|
+udphdr*DATARMNET75be5f3406=(struct udphdr*)(DATARMNET543491eb0f->data+
|
|
|
+DATARMNET54338da2ff->DATARMNET611d08d671);DATARMNET3396919a68->
|
|
|
+DATARMNETf0d9de7e2f=DATARMNET75be5f3406->dest;if(DATARMNETa8b2566e6a(
|
|
|
+DATARMNET543491eb0f,DATARMNET3396919a68,DATARMNET54338da2ff->DATARMNET611d08d671
|
|
|
+)){if(DATARMNET0a4704e5e0(DATARMNET3396919a68)){kfree_skb(DATARMNET543491eb0f);
|
|
|
+DATARMNET61c2303133=(0xd2d+202-0xdf7);DATARMNET5ca94dbc3c(DATARMNET0981317411);
|
|
|
+goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c(DATARMNETd1ad664d00);goto
|
|
|
+DATARMNET07fc49caf2;}}else if(DATARMNET3396919a68->DATARMNET4924e79411==
|
|
|
+IPPROTO_ESP){struct ip_esp_hdr*DATARMNET73ee6a7020=(struct ip_esp_hdr*)(
|
|
|
DATARMNET543491eb0f->data+DATARMNET54338da2ff->DATARMNET611d08d671);
|
|
|
-DATARMNET3396919a68->DATARMNETf0d9de7e2f=DATARMNET75be5f3406->dest;if(
|
|
|
-DATARMNETa8b2566e6a(DATARMNET543491eb0f,DATARMNET3396919a68,DATARMNET54338da2ff
|
|
|
-->DATARMNET611d08d671)){if(DATARMNET0a4704e5e0(DATARMNET3396919a68)){kfree_skb(
|
|
|
-DATARMNET543491eb0f);DATARMNET61c2303133=(0xd2d+202-0xdf7);DATARMNET5ca94dbc3c(
|
|
|
-DATARMNET0981317411);goto DATARMNETbf4095f79e;}DATARMNET5ca94dbc3c(
|
|
|
-DATARMNETd1ad664d00);goto DATARMNET07fc49caf2;}}else if(DATARMNET3396919a68->
|
|
|
-DATARMNET4924e79411==IPPROTO_ESP){struct ip_esp_hdr*DATARMNET73ee6a7020=(struct
|
|
|
-ip_esp_hdr*)(DATARMNET543491eb0f->data+DATARMNET54338da2ff->DATARMNET611d08d671)
|
|
|
-;DATARMNET3396919a68->DATARMNET906b2ee561=DATARMNET73ee6a7020->spi;}if(
|
|
|
+DATARMNET3396919a68->DATARMNET906b2ee561=DATARMNET73ee6a7020->spi;}if(
|
|
|
DATARMNET4eafcdee07(DATARMNET3396919a68)){u32 DATARMNET248f120dd5;
|
|
|
DATARMNET63b1a086d5->DATARMNET7ed5754a5c=DATARMNET2d4b4cfc9e;if(!
|
|
|
DATARMNET4899053671(DATARMNET543491eb0f,DATARMNET2d4b4cfc9e)){
|