|
@@ -1,5 +1,5 @@
|
|
|
// SPDX-License-Identifier: GPL-2.0-only
|
|
|
-/* Copyright (c) 2023,Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
+/* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
*
|
|
|
* RMNET PERF TCP framework
|
|
|
*
|
|
@@ -144,31 +144,39 @@ DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f);return DATARMNET543491eb0f->len
|
|
|
DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f,bool DATARMNETd147c14c0e)
|
|
|
__must_hold(RCU){struct rmnet_skb_cb*DATARMNET1ec4882bf7=RMNET_SKB_CB(
|
|
|
DATARMNET543491eb0f);struct tcphdr*DATARMNET668416551c=tcp_hdr(
|
|
|
-DATARMNET543491eb0f);u32 DATARMNETb1b0ee1b2d=ntohl(DATARMNET668416551c->ack_seq)
|
|
|
-;u32 DATARMNETb6ff6d25f8=READ_ONCE(DATARMNET63b1a086d5->DATARMNETfef3675ce7);u32
|
|
|
- DATARMNET91c1d5c029=READ_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab);u32
|
|
|
-DATARMNET9445bc443c=READ_ONCE(DATARMNET63b1a086d5->DATARMNET9a57846b4e);
|
|
|
-DATARMNET63b1a086d5->DATARMNET763f2e5fac=jiffies;if(DATARMNET63b1a086d5->
|
|
|
-DATARMNET55056146f6){DATARMNET1ec4882bf7->tethered=true;return;}if(
|
|
|
-DATARMNETd147c14c0e){if(after(DATARMNETb1b0ee1b2d,DATARMNET91c1d5c029)){u32
|
|
|
-DATARMNET4e557c82d6=DATARMNETb6ff6d25f8-DATARMNETb1b0ee1b2d;if(
|
|
|
-DATARMNET4e557c82d6>DATARMNET9445bc443c)DATARMNET31a7673e56(DATARMNET63b1a086d5,
|
|
|
-DATARMNET543491eb0f);WRITE_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab,
|
|
|
-DATARMNETb1b0ee1b2d);}}}void DATARMNET9250714999(struct sk_buff*
|
|
|
-DATARMNET543491eb0f){struct DATARMNET4b40fe9cd4 DATARMNET3396919a68={};struct
|
|
|
-DATARMNETddbc1e5435*DATARMNET63b1a086d5;struct tcphdr*DATARMNET668416551c;u32
|
|
|
-DATARMNETd660a1a629;if(!skb_transport_header_was_set(DATARMNET543491eb0f)||
|
|
|
-DATARMNET543491eb0f->ip_summed==CHECKSUM_NONE)return;DATARMNET668416551c=tcp_hdr
|
|
|
-(DATARMNET543491eb0f);if(DATARMNET668416551c->syn)return;DATARMNETd660a1a629=
|
|
|
-DATARMNET62fb576113(DATARMNET543491eb0f);if(!DATARMNETd660a1a629&&
|
|
|
-DATARMNET668416551c->ack)return;DATARMNET3396919a68.DATARMNET08e913477e=
|
|
|
-DATARMNET668416551c->source;DATARMNET3396919a68.DATARMNETda7f7fa492=
|
|
|
-DATARMNET668416551c->dest;if(DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){
|
|
|
-struct iphdr*DATARMNET86f1f2cdc9=ip_hdr(DATARMNET543491eb0f);DATARMNET3396919a68
|
|
|
-.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9->saddr;DATARMNET3396919a68.
|
|
|
-DATARMNET2cb607d686=DATARMNET86f1f2cdc9->daddr;DATARMNET3396919a68.
|
|
|
-DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else{struct ipv6hdr*DATARMNETbf55123e5b=
|
|
|
-ipv6_hdr(DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68.DATARMNET815cbb4bf5,&
|
|
|
+DATARMNET543491eb0f);u32 DATARMNET26945497d8=ntohl(DATARMNET668416551c->seq);u32
|
|
|
+ DATARMNETb1b0ee1b2d=ntohl(DATARMNET668416551c->ack_seq);u32 DATARMNETb6ff6d25f8
|
|
|
+=READ_ONCE(DATARMNET63b1a086d5->DATARMNETfef3675ce7);u32 DATARMNET91c1d5c029=
|
|
|
+READ_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab);u32 DATARMNET9445bc443c=
|
|
|
+READ_ONCE(DATARMNET63b1a086d5->DATARMNET9a57846b4e);DATARMNET63b1a086d5->
|
|
|
+DATARMNET763f2e5fac=jiffies;if(DATARMNET63b1a086d5->DATARMNET55056146f6){
|
|
|
+DATARMNET1ec4882bf7->tethered=true;return;}if(DATARMNETd147c14c0e){if(after(
|
|
|
+DATARMNETb1b0ee1b2d,DATARMNET91c1d5c029)){u32 DATARMNET4e557c82d6=
|
|
|
+DATARMNETb6ff6d25f8-DATARMNETb1b0ee1b2d;if(DATARMNET4e557c82d6>
|
|
|
+DATARMNET9445bc443c)DATARMNET31a7673e56(DATARMNET63b1a086d5,DATARMNET543491eb0f)
|
|
|
+;WRITE_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab,DATARMNETb1b0ee1b2d);}}else
|
|
|
+{u32 DATARMNET4e557c82d6=DATARMNETb6ff6d25f8-DATARMNET91c1d5c029;if(after(
|
|
|
+DATARMNET26945497d8,DATARMNETb6ff6d25f8)){DATARMNET4e557c82d6=
|
|
|
+DATARMNET26945497d8-DATARMNET91c1d5c029;DATARMNET4e557c82d6+=DATARMNET62fb576113
|
|
|
+(DATARMNET543491eb0f);WRITE_ONCE(DATARMNET63b1a086d5->DATARMNETfef3675ce7,
|
|
|
+DATARMNET26945497d8);}DATARMNET1ec4882bf7->bif=DATARMNET4e557c82d6;
|
|
|
+DATARMNET1ec4882bf7->ack_thresh=DATARMNET9445bc443c;DATARMNET1ec4882bf7->
|
|
|
+ack_forced=DATARMNET63b1a086d5->DATARMNETb8fc35ed64;}}void DATARMNET9250714999(
|
|
|
+struct sk_buff*DATARMNET543491eb0f){struct DATARMNET4b40fe9cd4
|
|
|
+DATARMNET3396919a68={};struct DATARMNETddbc1e5435*DATARMNET63b1a086d5;struct
|
|
|
+tcphdr*DATARMNET668416551c;u32 DATARMNETd660a1a629;if(!
|
|
|
+skb_transport_header_was_set(DATARMNET543491eb0f)||DATARMNET543491eb0f->
|
|
|
+ip_summed==CHECKSUM_NONE)return;DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f)
|
|
|
+;if(DATARMNET668416551c->syn)return;DATARMNETd660a1a629=DATARMNET62fb576113(
|
|
|
+DATARMNET543491eb0f);if(!DATARMNETd660a1a629&&DATARMNET668416551c->ack)return;
|
|
|
+DATARMNET3396919a68.DATARMNET08e913477e=DATARMNET668416551c->source;
|
|
|
+DATARMNET3396919a68.DATARMNETda7f7fa492=DATARMNET668416551c->dest;if(
|
|
|
+DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9
|
|
|
+=ip_hdr(DATARMNET543491eb0f);DATARMNET3396919a68.DATARMNETdfe430c2d6=
|
|
|
+DATARMNET86f1f2cdc9->saddr;DATARMNET3396919a68.DATARMNET2cb607d686=
|
|
|
+DATARMNET86f1f2cdc9->daddr;DATARMNET3396919a68.DATARMNET0d956cc77a=
|
|
|
+(0xd11+230-0xdf3);}else{struct ipv6hdr*DATARMNETbf55123e5b=ipv6_hdr(
|
|
|
+DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68.DATARMNET815cbb4bf5,&
|
|
|
DATARMNETbf55123e5b->saddr,sizeof(DATARMNETbf55123e5b->saddr));memcpy(&
|
|
|
DATARMNET3396919a68.DATARMNETc3f31215b7,&DATARMNETbf55123e5b->daddr,sizeof(
|
|
|
DATARMNETbf55123e5b->daddr));DATARMNET3396919a68.DATARMNET0d956cc77a=
|