Re: [patch 1/9] [PATCH] qeth: convert to hw_features part 2

Michał Mirosław
2011-05-12T11:25:51Z

W dniu 12 maja 2011 13:10 użytkownik Frank Blaschka
<blaschka@linux.vnet.ibm.com> napisał:
> On Thu, May 12, 2011 at 10:12:51AM +0200, Michał Mirosław wrote:
>> W dniu 12 maja 2011 09:21 użytkownik Frank Blaschka
>> <blaschka@linux.vnet.ibm.com> napisał:
>> > On Thu, May 12, 2011 at 07:59:45AM +0200, Michał Mirosław wrote:
>> >> 2011/5/12  <frank.blaschka@de.ibm.com>:
>> >> > Set rx csum default to hw checksumming again.
>> >> > Remove sysfs interface for rx csum (checksumming) and TSO (large_send).
>> >> > With the new hw_features it does not work to keep the old sysfs
>> >> > interface in parallel. Convert options.checksum_type to new hw_features.
>> >> [...]
>> >> > +               /* hw may have changed during offline or recovery */
>> >> > +               if (!qeth_is_supported(card, IPA_INBOUND_CHECKSUM)) {
>> >> [...]
>> >>
>> >> This check should go to ndo_fix_features callback. If it fails then
>> >> just return features &~NETIF_F_RXCSUM from there ...
>> >>
> Ok so all I have to do to complete this is to remove
>  card->dev->hw_features &= ~NETIF_F_RXCSUM;
> from here (ndo_fix_feature has already the check)?
>
> Since we might be in recovery it is smarter to keep the support check here so we
> do not have to use try and error approach to see if capabilities have
> changed. Do you aggree?

The key is that the driver should call netdev_update_features()
whenever some conditions affecting available features might have
changed. If you can keep the checks contained inside ndo_fix_features
callback, you can avoid caring about the offloads in the recovery
process.

There's also the question what happens when packets are queued while
there's ongoing recovery? Simplest way would be to drop them all until
recovery completes.

Best Regards,
Michał Mirosław