On Mon, Dec 04, 2017 at 04:07:15PM -0800, Michael Chan wrote: > As already pointed out, GRO_HW is a subset of GRO. Packets that > cannot be aggregated in hardware (due to hardware resource limitations > or protocol types that it doesn't handle) can just be passed to the > stack for GRO aggregation.
How would the parameters/limits work in this case? I mean, currently we have the default weight of 64 packets per napi poll cycle, the budget of 300 per cycle and also the time constrain, net.core.netdev_budget_usecs. With GRO_HW, this 64 limit may be exceeded. I'm looking at qede code and it works by couting each completion as 1 rcv_pkts (qede_fp.c:1318). So if it now gets 64 packets, it's up to 64*MTU aprox, GRO'ed or not. But with GRO_HW, seems it may be much more than that and which may not be fair with other interfaces in the system. Drivers supporting GRO_HW probably should account for this. And how can one control how much time a packet may spend on NIC queue waiting to be GRO'ed? Does it use the coalescing parameters for that? Marcelo