All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Fastabend <john.fastabend@gmail.com>
To: David Miller <davem@davemloft.net>, saeedm@dev.mellanox.co.il
Cc: saeedm@mellanox.com, netdev@vger.kernel.org, galp@mellanox.com,
	ogerlitz@mellanox.com, kaber@trash.net
Subject: Re: [PATCH net] net/8021q: Check the correct vlan filter capability
Date: Wed, 24 Feb 2016 19:58:59 -0800	[thread overview]
Message-ID: <56CE7C03.2060200@gmail.com> (raw)
In-Reply-To: <20160224.164814.157691299176786528.davem@davemloft.net>

On 16-02-24 01:48 PM, David Miller wrote:
> From: Saeed Mahameed <saeedm@dev.mellanox.co.il>
> Date: Wed, 24 Feb 2016 22:27:16 +0200
> 
>>>> Netdev features can be changed dynamically to off after vlan_vid_add
>>>> was called, thus vlan_vid_del will skip ndo_vlan_rx_kill_vid and will
>>>> leave the device driver with un-freed resources.
>>>
>>> Are you sure the fix isn't to make vlan_vid_add() check ->features instead
>>> of ->hw_features.
>>
>> This is exactly what this fix suggests, "->features" is not consistent
>> and can be turned ON/OFF between vlan_add/del which can leave the NIC
>> driver in inconsistent state !
> 
> But the user changes the setting _exactly_ to control whether these
> VLAN offloads occur or not.
> 
>>> Should we really be trying to add VLAN filters when the user has
>>> turned it off?
>>
>> Well, I think it is debatable, but the current implementation is not
>> consistent, especially for adding vlan 0 by default and then the user
>> disables the vlan filter, this will cause the stack to never call the
>> nic ndo_vlan_rx_kill_vid for the pre added vlan 0 and vise versa call
>> kill_vid without add_vid, BUG ?
>>
>> So i think we have two options, use this patch, and always trust to
>> delegate vlan_vid_add/del to the NIC when it's HW supports it, and the
>> nic will be smart enough to know what to do with it (in case vlan
>> filter is enabled/disabled). Or, for each vlan we can remember if it
>> was added to the NIC or not so the stack will know whether to clean it
>> up or not.
> 
> If automatically added VLANs are the issue, then we should specially
> mark it such that it will get forcefully removed regardless of feature
> settings.
> 

I suspect the hardware driver should flush the vid list in hardware
when the feature flag is disabled and when it is enabled I guess we
would need to do something like vlan_vids_add_by_dev() and do an add
for all the upper dev vlans.

I guess with some helper functions this could be done generally in
the ethtool set_features code path by tracking down the vid list and
calling all the del and add routines for each vlan.

A bit more work but seems more correct then creating strange cases
where hw_fatures and features don't actually work as expected.

> The whole point of the separation of ->hw_features and ->features is
> to separate what the card can do from what the user wants enabled or
> not.
> 
> Therefore offload operations should be triggered by ->features not
> ->hw_features.
> 
> Any test on ->hw_features that is not a validation of a ->features
> change request is a BIG RED FLAG and almost always a bug.
> 

      reply	other threads:[~2016-02-25  3:59 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-24 16:39 [PATCH net] net/8021q: Check the correct vlan filter capability Saeed Mahameed
2016-02-24 16:48 ` David Miller
2016-02-24 20:27   ` Saeed Mahameed
2016-02-24 20:35     ` Saeed Mahameed
2016-02-24 21:49       ` David Miller
2016-02-24 21:48     ` David Miller
2016-02-25  3:58       ` John Fastabend [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56CE7C03.2060200@gmail.com \
    --to=john.fastabend@gmail.com \
    --cc=davem@davemloft.net \
    --cc=galp@mellanox.com \
    --cc=kaber@trash.net \
    --cc=netdev@vger.kernel.org \
    --cc=ogerlitz@mellanox.com \
    --cc=saeedm@dev.mellanox.co.il \
    --cc=saeedm@mellanox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.