> On 3/14/23, 8:05 PM, "Yunsheng Lin" <linyunsheng@xxxxxxxxxx <mailto:linyunsheng@xxxxxxxxxx>> wrote: > > I am not sure how we can handle the runtime hw capability changing thing yet, that is why > I suggested setting the hw capability during the driver init process, then user can enable > or disable GRO if need to. > It is not about enabling or disabling the LRO/GRO. It is about which callback to be used to deliver the packets to the stack. During init, the vnic will always come up in emulation (non-UPT) mode and user can request whichever feature they want (lro or gro or both). If it is in UPT mode, as we know UPT device does not support LRO, we use gro API to deliver. If GRO is disabled by the user, then it can still take the normal path. If in emulation (non-UPT) mode, ESXi will perform LRO. > Suppose user enable the software GRO using ethtool, disabling the GRO through some runtime > checking seems against the will of the user. > We are not disabling GRO here, it's either we perform LRO on ESXi or GRO in guest stack. > Also, if you are able to "add an event to notify the guest about this", I suppose the > para-virtualized driver will clear the specific bit in netdev->hw_features and > netdev->features when handling the event? does user need to be notified about this, does > user get confusion about this change without notification? > We won’t be changing any feature bits. It is just to let know the driver that UPT is active and it should use GRO path instead of relying on ESXi LRO. Thanks, Ronak