diff options
| author | Harout Hedeshian <harouth@codeaurora.org> | 2015-03-11 18:13:30 -0600 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-22 11:05:32 -0700 |
| commit | 2a0b78fa70845aa0ff6a619bfaa23e5e1ce44d11 (patch) | |
| tree | 68998d5c73f4fe0732fac23b706219c2afbc0064 /include/linux/console_struct.h | |
| parent | 037cd9a5952c3637908374c894d036ec5d28ad9e (diff) | |
net: rmnet_data: use memcpy() during deaggration of MAP frames
Using skb_clone() to deaggregate frames results in multiple side effects.
First side effect is that skb->truesize will reflect the total
aggregation buffer size for each 1500-byte frame charged to a socket.
Hence, the socket thinks it is using more memory than it actually is
resulting in unnecessary packet drops.
Second side effect is that GRO will not work correctly since the cloned
SKBs share the same shinfo struct. GRO uses the gso_segs field here
and will get confused when the packets have bad values here.
The new algorithm removes skb_clone altogether. Instead a new empty
skb is allocated with alloc_skb() and a manual memcpy is performed to
move the data. This guarantees that there are no shared segments
between SKBs.
Change-Id: I1f1b69a22ed4726c31b8d3295622a604af95d008
Signed-off-by: Harout Hedeshian <harouth@codeaurora.org>
Diffstat (limited to 'include/linux/console_struct.h')
0 files changed, 0 insertions, 0 deletions
