Re: [PATCHv1] e1000e: Allow ethtool to enable/disable loopback.
From: Michał Mirosław <hidden>
Date: 2011-05-13 07:49:56
W dniu 12 maja 2011 23:41 użytkownik Mahesh Bandewar [off-list ref] napisał:
On Wed, May 11, 2011 at 10:50 PM, Michał Mirosław [off-list ref] wrote:quoted
W dniu 12 maja 2011 01:11 użytkownik Mahesh Bandewar [off-list ref] napisał:quoted
On Wed, May 11, 2011 at 12:15 PM, Michał Mirosław [off-list ref] wrote:quoted
If e1000_set_loopback() fails, this should set dev->features to passed features (but keeping NETIF_F_LOOPBACK unchanged in dev->features) to keep the state consistent.set_features() can return the return code of set_loopback() instead of 0; this way the consistency will be maintained.Only as long as NETIF_F_LOOPBACK is the only bit set in hw_features. netdev_update_features() can't really know which features were changed and which failed when ndo_set_features callback returns non-zero.This is more of an API shortcoming. Callback will have to revert changes made (rollback) before returning non-zero value to keep it consistent.
It might just update dev->features to match instead of rollback. It could also start some recovery process that eventually calls netdev_update_features() again to try the change again. IOW, the information what changes failed are returned implicitly in modified dev->features. When callback returns 0, netdev_update_features() assumes that all were set correctly and updates dev->features itself. Best Regards, Michał Mirosław