Commit 6bf32cd
net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are friends
After working on IP defragmentation lately, I found that some large
packets defeat CHECKSUM_COMPLETE optimization because of NIC adding
zero paddings on the last (small) fragment.
While removing the padding with pskb_trim_rcsum(), we set skb->ip_summed
to CHECKSUM_NONE, forcing a full csum validation, even if all prior
fragments had CHECKSUM_COMPLETE set.
We can instead compute the checksum of the part we are trimming,
usually smaller than the part we keep.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 88078d9)
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>1 parent 5123ffd commit 6bf32cd
2 files changed
Lines changed: 16 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3135 | 3135 | | |
3136 | 3136 | | |
3137 | 3137 | | |
| 3138 | + | |
3138 | 3139 | | |
3139 | 3140 | | |
3140 | 3141 | | |
| |||
3148 | 3149 | | |
3149 | 3150 | | |
3150 | 3151 | | |
3151 | | - | |
3152 | | - | |
3153 | | - | |
| 3152 | + | |
3154 | 3153 | | |
3155 | 3154 | | |
3156 | 3155 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1839 | 1839 | | |
1840 | 1840 | | |
1841 | 1841 | | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
| 1852 | + | |
| 1853 | + | |
| 1854 | + | |
| 1855 | + | |
1842 | 1856 | | |
1843 | 1857 | | |
1844 | 1858 | | |
| |||
0 commit comments