Subject: Re: Question on switchdev

From: Murali Karicheri <[email-masked]>
Date: Thu, 3 Mar 2016 17:32:01 -0500

On 02/29/2016 05:29 PM, Andrew Lunn wrote:
> On Mon, Feb 29, 2016 at 04:43:16PM -0500, Murali Karicheri wrote:
> 
> Hi Murali
> 
> Please can you get your email client to wrap lines at ~ 75 characters.
Hi Andrew,

Thanks for responding. I have tried the instruction below and
it doesn't seem to work for me. Do you know what will I have to
set in thunderbird to do this?

http://arapulido.com/2009/12/01/enabling-line-wrapping-in-thunderbird/

>> TI Keystone netcp h/w has a switch. It has n slave ports and 1 host
>> port. Currently the netcp driver disables the switch functionality
>> which makes them appear as n nic ports. However we have requirement
>> to add switch support in the driver. I have reviewed the
>> experimental driver documentation
>> Documentation/networking/switchdev.txt and would like to understand
>> it better so that I can add this support to keystone netcp driver.
>  
>> NetCP h/w has a 1 (host port) x n (slave port) switch. It can do
>> layer 2 forwarding between ports. In the switch mode, host driver
>> provides the frame to the switch and switch uses the filter data
>> base (AKA ALE table, Address Learning Engine table) to forward the
>> packet. There is a piece of information available per frame (meta
>> data) to decide if frame to be forwarded to a particular port or use
>> the fdb for forward decisions.
> 
> This makes is sound like a good fit for DSA.
> 
> Documentation/networking/dsa/dsa.txt.

Let me check and get back to you on this and below after reading
the above.

Murali

> 
> You probably need to implement a new tagging protocol in
> net/dsa/tag_*.c and a driver in drivers/net/dsa/
> 
>> 1. How does port netdev differ from regular netdev that carries data
>>    when registering netdev? Any example you can point to?
> 
> They don't differ at all. You consider each port of the switch to be a
> normal Linux interface.
> 
>> 2. I assume port netdev will appear as an interface in ifconfig -a
>>    command and it is not assigned an IP address. Correct?
> 
> The user can assign an address, if they want. It is a normal Linux
> interface. They can also create a bridge, and add the interface to the
> bridge. An advanced DSA driver will keep track of which interfaces are
> in which bridge, and if possible, offload the bridge to the hardware.
> 
>> 3. with 1xn switch, so we have n + 1 netdev registered with net
>>    core? I assume, only 1 netdev is for data plane and the rest are
>>    control plane. Is this correct?
> 
> No. You only have netdev devices for the external ports of the
> switch. The other port is known as the cpu port, and does not have a
> netdev.
> 
>> 4. We have bunch of port specific configuration that we would like
>> to control or configure from use space using standard tools. For
>> example, switch port state, flow control etc. Is that possible to
>> add using this framework? ethtool update needed for this?
> 
> The whole idea here is that the switch ports are normal Linux
> interface. You use normal linux APIs to configure them. You probably
> don't need to add any new features.
> 
> One key things to get your head around. The switch is a hardware
> accelerator for the Linux stack. You have to think how you can make
> your switch accelerate the Linux stack. It takes people a while to get
> this.
> 
>       Andrew
> 

-- 
Murali Karicheri
Linux Kernel, Keystone