diff options
author | Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> | 2020-06-18 19:02:06 -0600 |
---|---|---|
committer | Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> | 2020-06-18 19:02:25 -0600 |
commit | c7f0fbe8f0d8f723000441c4afc2270c88fd011e (patch) | |
tree | 4ed960f26a805ff63ac6b278f064c1ca12445aeb | |
parent | 036f4f0274978a8511c05677e0cc0fc9436b302a (diff) | |
download | data-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-x | drivers/rmnet/shs/rmnet_shs_main.c | 22 |
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; |