Commit 323ebb6
net: use listified RX for handling GRO_NORMAL skbs
When GRO decides not to coalesce a packet, in napi_frags_finish(), instead
of passing it to the stack immediately, place it on a list in the napi
struct. Then, at flush time (napi_complete_done(), napi_poll(), or
napi_busy_loop()), call netif_receive_skb_list_internal() on the list.
We'd like to do that in napi_gro_flush(), but it's not called if
!napi->gro_bitmask, so we have to do it in the callers instead. (There are
a handful of drivers that call napi_gro_flush() themselves, but it's not
clear why, or whether this will affect them.)
Because a full 64 packets is an inefficiently large batch, also consume the
list whenever it exceeds gro_normal_batch, a new net/core sysctl that
defaults to 8.
Signed-off-by: Edward Cree <[email protected]>
Signed-off-by: David S. Miller <[email protected]>1 parent 6727013 commit 323ebb6
3 files changed
+52
-3
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
332 | 332 | | |
333 | 333 | | |
334 | 334 | | |
| 335 | + | |
| 336 | + | |
335 | 337 | | |
336 | 338 | | |
337 | 339 | | |
| |||
4239 | 4241 | | |
4240 | 4242 | | |
4241 | 4243 | | |
| 4244 | + | |
4242 | 4245 | | |
4243 | 4246 | | |
4244 | 4247 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3963 | 3963 | | |
3964 | 3964 | | |
3965 | 3965 | | |
| 3966 | + | |
| 3967 | + | |
3966 | 3968 | | |
3967 | 3969 | | |
3968 | 3970 | | |
| |||
5747 | 5749 | | |
5748 | 5750 | | |
5749 | 5751 | | |
| 5752 | + | |
| 5753 | + | |
| 5754 | + | |
| 5755 | + | |
| 5756 | + | |
| 5757 | + | |
| 5758 | + | |
| 5759 | + | |
| 5760 | + | |
| 5761 | + | |
| 5762 | + | |
| 5763 | + | |
| 5764 | + | |
| 5765 | + | |
| 5766 | + | |
| 5767 | + | |
| 5768 | + | |
| 5769 | + | |
| 5770 | + | |
| 5771 | + | |
5750 | 5772 | | |
5751 | 5773 | | |
5752 | 5774 | | |
| |||
5756 | 5778 | | |
5757 | 5779 | | |
5758 | 5780 | | |
5759 | | - | |
5760 | | - | |
| 5781 | + | |
| 5782 | + | |
5761 | 5783 | | |
5762 | 5784 | | |
5763 | 5785 | | |
| |||
6034 | 6056 | | |
6035 | 6057 | | |
6036 | 6058 | | |
| 6059 | + | |
| 6060 | + | |
6037 | 6061 | | |
6038 | 6062 | | |
6039 | 6063 | | |
| |||
6119 | 6143 | | |
6120 | 6144 | | |
6121 | 6145 | | |
| 6146 | + | |
| 6147 | + | |
| 6148 | + | |
| 6149 | + | |
6122 | 6150 | | |
6123 | 6151 | | |
6124 | | - | |
| 6152 | + | |
| 6153 | + | |
| 6154 | + | |
| 6155 | + | |
| 6156 | + | |
6125 | 6157 | | |
| 6158 | + | |
6126 | 6159 | | |
6127 | 6160 | | |
6128 | 6161 | | |
| |||
6167 | 6200 | | |
6168 | 6201 | | |
6169 | 6202 | | |
| 6203 | + | |
6170 | 6204 | | |
6171 | 6205 | | |
6172 | 6206 | | |
| |||
6272 | 6306 | | |
6273 | 6307 | | |
6274 | 6308 | | |
| 6309 | + | |
| 6310 | + | |
6275 | 6311 | | |
6276 | 6312 | | |
6277 | 6313 | | |
| |||
6368 | 6404 | | |
6369 | 6405 | | |
6370 | 6406 | | |
| 6407 | + | |
| 6408 | + | |
6371 | 6409 | | |
6372 | 6410 | | |
6373 | 6411 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
567 | 567 | | |
568 | 568 | | |
569 | 569 | | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
570 | 578 | | |
571 | 579 | | |
572 | 580 | | |
| |||
0 commit comments