From: Samudrala, Sridhar <sridhar.samudrala@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [next-queue v5 PATCH 5/7] i40e: Add TX and RX support in switchdev mode
Date: Wed, 15 Feb 2017 09:37:13 -0800 [thread overview]
Message-ID: <58A491C9.6040409@intel.com> (raw)
In-Reply-To: <CAKgT0UdEFQpzT5rHmX8LY3pRnFVhy-R+1f8Jnmkhz0HUFqKEig@mail.gmail.com>
On 2/15/2017 7:59 AM, Alexander Duyck wrote:
> On Wed, Jan 25, 2017 at 4:54 PM, Sridhar Samudrala
> <sridhar.samudrala@intel.com> wrote:
>> In switchdev mode, broadcast filter is not enabled on VFs. The broadcasts
>> and unknown frames from VFs are received by the PF and passed to
>> corresponding VF port representator netdev.
>> A host based switching entity like a linux bridge or OVS redirects these
>> frames to the right VFs via VFPR netdevs. Any frames sent via VFPR netdevs
>> are sent as directed transmits to the corresponding VFs. To enable directed
>> transmit, skb metadata dst is used to pass the VF id and the frame is
>> requeued to call the PFs transmit routine.
>>
>> Small script to demonstrate inter VF pings in switchdev mode.
>> PF: enp5s0f0, VFs: enp5s2,enp5s2f1 VFPRs:enp5s0f0-vf0, enp5s0f0-vf1
>>
>> # rmmod i40e; modprobe i40e
>> # devlink dev eswitch set pci/0000:05:00.0 mode switchdev
>> # echo 2 > /sys/class/net/enp5s0f0/device/sriov_numvfs
>> # ip link set enp5s0f0 vf 0 mac 00:11:22:33:44:55
>> # ip link set enp5s0f0 vf 1 mac 00:11:22:33:44:56
>> # rmmod i40evf; modprobe i40evf
>>
>> /* Create 2 namespaces and move the VFs to the corresponding ns. */
>> # ip netns add ns0
>> # ip link set enp5s2 netns ns0
>> # ip netns exec ns0 ip addr add 192.168.1.10/24 dev enp5s2
>> # ip netns exec ns0 ip link set enp5s2 up
>> # ip netns add ns1
>> # ip link set enp5s2f1 netns ns1
>> # ip netns exec ns1 ip addr add 192.168.1.11/24 dev enp5s2f1
>> # ip netns exec ns1 ip link set enp5s2f1 up
>>
>> /* bring up pf and vfpr netdevs */
>> # ip link set enp5s0f0 up
>> # ip link set enp5s0f0-vf0 up
>> # ip link set enp5s0f0-vf1 up
>>
>> /* Create a linux bridge and add vfpr netdevs to it. */
>> # ip link add vfpr-br type bridge
>> # ip link set enp5s0f0-vf0 master vfpr-br
>> # ip link set enp5s0f0-vf1 master vfpr-br
>> # ip addr add 192.168.1.1/24 dev vfpr-br
>> # ip link set vfpr-br up
>>
>> # ip netns exec ns0 ping -c3 192.168.1.11
>> # ip netns exec ns1 ping -c3 192.168.1.10
> So the test case as called out here isn't really valid is it? You
> aren't even really using the switchdev. All you are doing is having
> one VF ping the other.
In switchdev mode, when VF pings other VF, the broadcasts go through
the host PF.
In this example, when i ping from enp5s2 in ns0, the ARP broadcast from
enp5s2
takes this path.
enp5s2(ns0) -> enp5s0f0 -> enp5s0f0-vf0 -> vfpr-br -> enp5s0f0-vf1
-> enp5s0f0 -> enp5s2f1(ns1)
So in switchdev mode, for VF<->VF communications, we need to add all the
VFPR netdevs to a
learning bridge with the current state of implementation. Once we have
the fdb add/del support,
we should be able to program the broadcast filters from the host via
VFPR netdevs.
>
> I would be interested in seeing the PF brought up and what the
> behavior is if the PF attempts to ping one of the VFs. I think we
> have a major flaw in the design there as the replies would likely be
> returned to the port representors instead of being returned to the PF.
> We probably need to look at moving the port representors all onto a
> different MAC address and doing a 2 fold test. One to see if the
> packet is being routed to the PF (see the tests in eth_type_trans),
> and if it is not only then do we take the packet and route it to a
> representor.
Sure. I can add an IP address in the same subnet as VFs to PF and can
ping PF from VF.
That works fine. I haven't tried assigning a separate MAC for all VFPR
netdevs. I think that
will work too, but need to check if there are any issues with that approach.
Thanks
Sridhar
next prev parent reply other threads:[~2017-02-15 17:37 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-26 0:54 [Intel-wired-lan] [next-queue v5 PATCH 0/7] i40e: Add VF Port Representator support for SR-IOV VFs Sridhar Samudrala
2017-01-26 0:54 ` [Intel-wired-lan] [next-queue v5 PATCH 1/7] i40e: Introduce devlink interface Sridhar Samudrala
2017-01-30 21:33 ` Bowers, AndrewX
2017-01-26 0:54 ` [Intel-wired-lan] [next-queue v5 PATCH 2/7] i40e: Introduce VF Port Representator(VFPR) netdevs Sridhar Samudrala
2017-01-30 21:33 ` Bowers, AndrewX
2017-02-01 1:06 ` Keller, Jacob E
2017-01-26 0:54 ` [Intel-wired-lan] [next-queue v5 PATCH 3/7] i40e: Sync link state between VFs and VFPRs Sridhar Samudrala
2017-01-30 21:34 ` Bowers, AndrewX
2017-01-26 0:54 ` [Intel-wired-lan] [next-queue v5 PATCH 4/7] net: store port/representator id in metadata_dst Sridhar Samudrala
2017-01-30 21:36 ` Bowers, AndrewX
2017-01-26 0:54 ` [Intel-wired-lan] [next-queue v5 PATCH 5/7] i40e: Add TX and RX support in switchdev mode Sridhar Samudrala
2017-01-30 21:34 ` Bowers, AndrewX
2017-02-15 15:59 ` Alexander Duyck
2017-02-15 17:37 ` Samudrala, Sridhar [this message]
2017-02-15 17:51 ` Alexander Duyck
2017-01-26 0:54 ` [Intel-wired-lan] [next-queue v5 PATCH 6/7] i40e: Add support for exposing VF port statistics via VFPR netdev on the host Sridhar Samudrala
2017-01-30 21:35 ` Bowers, AndrewX
2017-02-01 1:05 ` Keller, Jacob E
2017-02-01 18:21 ` Keller, Jacob E
2017-01-26 0:54 ` [Intel-wired-lan] [next-queue v5 PATCH 7/7] i40e: Add support to get switch id and port number for VFPR netdevs Sridhar Samudrala
2017-01-30 21:35 ` Bowers, AndrewX
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=58A491C9.6040409@intel.com \
--to=sridhar.samudrala@intel.com \
--cc=intel-wired-lan@osuosl.org \
/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.