diff options
author | Robin Peng <robinpeng@google.com> | 2020-07-10 18:17:36 +0800 |
---|---|---|
committer | Robin Peng <robinpeng@google.com> | 2020-07-10 18:17:36 +0800 |
commit | b65cf485a08fe3f77caa8af1832e2f2cddf538c3 (patch) | |
tree | 4ed960f26a805ff63ac6b278f064c1ca12445aeb | |
parent | 3019559a83db91887615015444e9110a4d6a1a5d (diff) | |
parent | 536432ead6662d153536d741afd9f0bfb71f09e8 (diff) | |
download | data-kernel-b65cf485a08fe3f77caa8af1832e2f2cddf538c3.tar.gz |
Merge branch 'LA.UM.9.12.R2.10.00.00.685.021' into qcom-msm-4.19-7250
Change-Id: I95a400bc1d7ce3b5e25a3a0618c4f45a8fbebebf
-rwxr-xr-x | drivers/rmnet/shs/rmnet_shs_main.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/rmnet/shs/rmnet_shs_main.c b/drivers/rmnet/shs/rmnet_shs_main.c index 36ba75d..c65298b 100755 --- a/drivers/rmnet/shs/rmnet_shs_main.c +++ b/drivers/rmnet/shs/rmnet_shs_main.c @@ -404,6 +404,7 @@ static struct sk_buff *rmnet_shs_skb_partial_segment(struct sk_buff *skb, struct sk_buff *segments, *tmp; u16 gso_size = shinfo->gso_size; u16 gso_segs = shinfo->gso_segs; + unsigned int gso_type = shinfo->gso_type; if (segments_per_skb >= gso_segs) { return NULL; @@ -420,17 +421,27 @@ static struct sk_buff *rmnet_shs_skb_partial_segment(struct sk_buff *skb, return NULL; } - /* Mark correct number of segments and correct size in the new skbs */ + /* No need to set gso info if single segments */ + if (segments_per_skb <= 1) + return segments; + + /* Mark correct number of segments, size, and type in the new skbs */ for (tmp = segments; tmp; tmp = tmp->next) { struct skb_shared_info *new_shinfo = skb_shinfo(tmp); + new_shinfo->gso_type = gso_type; new_shinfo->gso_size = gso_size; + if (gso_segs >= segments_per_skb) new_shinfo->gso_segs = segments_per_skb; else new_shinfo->gso_segs = gso_segs; gso_segs -= segments_per_skb; + + if (gso_segs <= 1) { + break; + } } return segments; |