From: Patrick McHardy <kaber@trash.net>
To: David Miller <davem@davemloft.net>
Cc: jbohac@suse.cz, netdev@vger.kernel.org, pedro.netdev@dondevamos.com
Subject: Re: [PATCH 1/2] vlan: only create special VLAN 0 once
Date: Tue, 07 Jun 2011 17:17:27 +0200 [thread overview]
Message-ID: <4DEE4107.1080706@trash.net> (raw)
In-Reply-To: <20110605.142823.1727360496050285755.davem@davemloft.net>
On 05.06.2011 23:28, David Miller wrote:
> From: Jiri Bohac <jbohac@suse.cz>
> Date: Fri, 3 Jun 2011 22:07:38 +0200
>
>> Commit ad1afb00 registers a VLAN with vid == 0 for every device to handle
>> 802.1p frames. This is currently done on every NETDEV_UP event and the special
>> vlan is never unregistered. This may have strange effects on drivers
>> implementning ndo_vlan_rx_add_vid(). E.g. bonding will allocate a linked-list
>> element each time, causing a memory leak.
>>
>> Only register the special VLAN once on NETDEV_REGISTER.
>>
>> Signed-off-by: Jiri Bohac <jbohac@suse.cz>
>
> I recognize the problem, but this solution isn't all that good.
>
> I am pretty sure that the hardware device driver methods that
> implement ndo_vlan_rx_add_vid() assume that the device is up.
> Because most drivers completely reset the chip when the
> interface is brought up and this will likely clear out the
> VLAN ID tables in the chip.
>
Good point.
I don't think this approach works very well at all since
some drivers don't do incremental updates, but iterate over
the registered VLAN group when constructing filters. The
group is not created until the first real VLAN device is
registered however.
Based on a quick grep (may have missed some):
- via_velocity, mlx4, starfire: will do nothing
- benet, igb, vxge, igbvf, ixgbevf, e1000e: would oops on
rx_kill_vid due to unnecessary vlan_group_set_device()
The assumption of the drivers that a VLAN group exists
before the first VID is configured is reasonable in my
opinion, a lot of them also don't even configure VLAN
filtering until the VLAN group is registered.
So I think a good solution would be to make sure all
drivers don't enable VLAN filtering before the first
VLAN is actually registered and do the automatic
registration of VID 0 once the first real VLAN device
is created.
Also the code currently doesn't handle module unload:
regulary registered VLAN devices are removed through
rtnl_link, the manually registered VIDs need to be
removed manually.
next prev parent reply other threads:[~2011-06-07 15:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-03 20:07 [PATCH 1/2] vlan: only create special VLAN 0 once Jiri Bohac
2011-06-03 20:14 ` [PATCH 2/2] bonding: restore NETIF_F_VLAN_CHALLENGED properly in bond_del_vlan() Jiri Bohac
2011-06-04 0:26 ` Jay Vosburgh
2011-06-10 20:27 ` Jiri Bohac
2011-06-10 22:25 ` Jay Vosburgh
2011-06-11 23:13 ` David Miller
2011-06-05 21:28 ` [PATCH 1/2] vlan: only create special VLAN 0 once David Miller
2011-06-07 15:17 ` Patrick McHardy [this message]
2011-06-07 16:41 ` Jiri Bohac
2011-06-07 22:50 ` Patrick McHardy
2011-06-07 16:18 ` Jiri Bohac
2011-06-08 1:25 ` Jesse Gross
2011-06-09 0:01 ` David Miller
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=4DEE4107.1080706@trash.net \
--to=kaber@trash.net \
--cc=davem@davemloft.net \
--cc=jbohac@suse.cz \
--cc=netdev@vger.kernel.org \
--cc=pedro.netdev@dondevamos.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).