On Fri, May 29, 2015 at 3:42 PM, Guenter Roeck <li...@roeck-us.net> wrote:
> Scott,
>
>
> On 05/28/2015 10:02 PM, Scott Feldman wrote:
>>
>> On Thu, May 28, 2015 at 2:37 PM, Vivien Didelot
>> <vivien.dide...@savoirfairelinux.com> wrote:
>>>
>>> This RFC is based on v4.1-rc3.
>>>
>>> It is meant to get a glance to the commits responsible to implement the
>>> necessary NDOs between DSA and the Marvell 88E6352 switch driver.
>>>
>>> With this support, I am able to create VLANs with (un)tagged ports,
>>> setting
>>> their default VID, from a bridge.
>>>
>>> To create a bridge containing all switch ports, with a VLAN ID 400, swp2
>>> and
>>> swp3 untagged (pvid), and swp4 tagged, the userspace commands look like
>>> this:
>>>
>>>      ip link add name br0 type bridge
>>>      [...]
>>>      ip link set dev swp2 up master br0
>>>      [...]
>>>      bridge vlan add vid 400 pvid untagged dev swp2
>>>      bridge vlan add vid 400 pvid untagged dev swp3
>>>      bridge vlan add vid 400 dev swp4
>>>      [...]
>>>      ip link add link br0 name br0.400 type vlan id 400
>>>      [...]
>>>      bridge vlan add dev br0 vid 400 self
>>>
>>> The code is currently being rebased to the latest net-next/master.
>>>
>>> Seems like the way to go now is through switchdev attr getter/setter...
>>
>>
>> Indeed, for dsa_slave you should be able to port this to switchdev and
>> set your ndo_bridge_setlink/dellink handlers to
>> switchdev_port_bridge_setlink/dellink.  (And also implement the
>> switchdev ops for vlans).
>>
>> If you use switchdev_port_bridge_setlink/dellink, you shouldn't need
>> to implement ndo_vlan_rx_add_vid/ndo_vlan_rx_kill_vid at all.  The
>
>
> Those functions are called from net/8021q/vlan_core.c if a vlan is
> configured on or removed from an interface. Does that result in a call to
> setlink/dellink as well, even if a switch port is not a member of a bridge 
> group ?

No, not if you're using 8021q module for vlan setup on non-bridged
ports.  If using 8021q module, you'll need to retain the ndo ops.

The alternative to the ndo ops for non-bridged ports is to use the
bridge_setlink/dellink interface on self:

  bridge vlan add vid VID dev DEV self

The would call into DEV port's bridge_setlink to add VID to port.  The
driver would setup HW to ingress VID tagged frames and egress VID
tagged frames on DEV port.

Lots of ways to slice and dice this I guess.

-scott
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to