Re: [PATCH 7/7] bnx2x: expose HW RX VLAN stripping toggle
flat view
From: Michał Mirosław <hidden>
Date: 2011-08-30 20:09:02
W dniu 30 sierpnia 2011 21:30 użytkownik Michal Schmidt [off-list ref] napisał:
On 08/30/2011 08:27 PM, Michał Mirosław wrote:quoted
It seems rather convoluted and unnecessary that you mirror NETIF_F_HW_VLAN_RX in bp->flagsThis mirroring is for the benefit of functions called indirectly from bnx2x_set_features(). They cannot look at dev->features for NETIF_F_HW_VLAN_RX because it's not set before ->ndo_set_features() returns.
You can cheat in ndo_set_features in this case. Just set/clear NETIF_F_HW_VLAN_RX bit in dev->features before you call those functions (but please leave a comment there explaining why!). This is allowed because if ndo_set_features fails it needs to fix dev->features itself, and if it succeeds dev->features will be replaced with exactly what was passed to ndo_set_features. So, unless you need to check whether the VLAN stripping state changed in those functions, then you can get rid of this copy.
quoted
and then also in fp->flags. Are the fp->flags strictly mirroring hardware state (as in: there is no way the states can differ in any point in time where the flags are tested)?Yes. This is the purpose of the second mirroring of the flag.quoted
For this to be true, the two functions above need to be called only without releasing a lock between them that is also taken by receive handler.The flag propagates from bp->flags to fp->flags between unloading and reloading the NIC. The receive handler cannot run at the time.quoted
Isn't there a flag in the rx descriptor of a packet that says if VLAN was stripped? (All that flag keeping would be unnecessary then.)There is no such flag, AFAIK.
Thanks for explanation! Best Regards, Michał Mirosław