> -----Original Message----- > From: Vitaly Kuznetsov [mailto:vkuzn...@redhat.com] > Sent: Wednesday, November 15, 2017 9:13 AM > To: netdev@vger.kernel.org > Cc: linux-ker...@vger.kernel.org; de...@linuxdriverproject.org; KY > Srinivasan <k...@microsoft.com>; Haiyang Zhang > <haiya...@microsoft.com>; Stephen Hemminger > <sthem...@microsoft.com>; Mohammed Gamal <mmo...@redhat.com> > Subject: [PATCH net v2] hv_netvsc: preserve hw_features on > mtu/channels/ringparam changes > > rndis_filter_device_add() is called both from netvsc_probe() when we > initially create the device and from set channels/mtu/ringparam > routines where we basically remove the device and add it back. > > hw_features is reset in rndis_filter_device_add() and filled with > host data. However, we lose all additional flags which are set outside > of the driver, e.g. register_netdevice() adds NETIF_F_SOFT_FEATURES and > many others. > > Unfortunately, calls to rndis_{query_hwcaps(), _set_offload_params()} > calls cannot be avoided on every RNDIS reset: host expects us to set > required features explicitly. Moreover, in theory hardware capabilities > can change and we need to reflect the change in hw_features. > > Reset net->hw_features bits according to host data in > rndis_netdev_set_hwcaps(), clear corresponding feature bits > from net->features in case some features went missing (will never happen > in real life I guess but let's be consistent). > > Signed-off-by: Vitaly Kuznetsov <vkuzn...@redhat.com>
Reviewed-by: Haiyang Zhang <haiya...@microsoft.com> Thank you!