summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>2020-06-18 19:02:06 -0600
committerSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>2020-06-18 19:02:25 -0600
commitc7f0fbe8f0d8f723000441c4afc2270c88fd011e (patch)
tree4ed960f26a805ff63ac6b278f064c1ca12445aeb
parent036f4f0274978a8511c05677e0cc0fc9436b302a (diff)
downloaddata-kernel-c7f0fbe8f0d8f723000441c4afc2270c88fd011e.tar.gz
rmnet_shs: avoid setting gso info for single segments
Avoid setting the gso info when there is only one segment in an SKB. Change-Id: I666fac9500caef5fb9b82b7678df533de9213663 Acked-by: Ryan Chapman <rchapman@qti.qualcomm.com> Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
-rwxr-xr-xdrivers/rmnet/shs/rmnet_shs_main.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/rmnet/shs/rmnet_shs_main.c b/drivers/rmnet/shs/rmnet_shs_main.c
index 8d9ed2b..c65298b 100755
--- a/drivers/rmnet/shs/rmnet_shs_main.c
+++ b/drivers/rmnet/shs/rmnet_shs_main.c
@@ -421,21 +421,27 @@ static struct sk_buff *rmnet_shs_skb_partial_segment(struct sk_buff *skb,
return NULL;
}
+ /* 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);
- if (tmp->len > gso_size) {
- new_shinfo->gso_type = gso_type;
- new_shinfo->gso_size = gso_size;
+ 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;
- }
+ 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;