From: Alexei Starovoitov <ast@fb•com>
To: Saeed Mahameed <saeedm@dev•mellanox.co.il>
Cc: Tom Herbert <tom@herbertland•com>,
Or Gerlitz <gerlitz.or@gmail•com>,
Saeed Mahameed <saeedm@mellanox•com>,
David Miller <davem@davemloft•net>,
Linux Netdev List <netdev@vger•kernel.org>,
Kernel Team <kernel-team@fb•com>
Subject: Re: [PATCH net-next 1/4] mlx5: Make building eswitch configurable
Date: Mon, 30 Jan 2017 08:45:59 -0800 [thread overview]
Message-ID: <588F6DC7.70904@fb.com> (raw)
In-Reply-To: <CALzJLG9OksXW5JAZiPoSfKtTF_z8Te9UDP9bm_XhXAp-FwmwEw@mail.gmail.com>
On 1/29/17 1:11 AM, Saeed Mahameed wrote:
>
> ConnectX4/5 and hopefully so on .. provide three different isolated
> steering layers:
>
> 3. vport layer: avaialbe for any PF/VF vport nic driver instance
> (netdevice), it allows vlan/mac filtering
> ,RSS hashing and n-tuple steering (for both encapsulated and
> nonencapsulated traffic) and RFS steering. ( the code above only
> writes flow entries of a PF/VF to its own vport flow tables, there is
> another mechanism to propagate l2 steering rules down to eswitch from
> the vport layer.
>
> 2. eswitch layer: Available for PFs only with
> HCA_CAP.vport_group_manager capability set.
> it allows steering between PF and different VFs on the same host (vlan
> mac steering and ACL filters in sriov legacy mode, and fancy n-tuple
> steering and offloads for switchdev mode - eswitch_offloads.c - )
> if this table is not create the default is pass-throu traffic to PF
>
> 1. L2 table: Available for PFs only with HCA_CAP.vport_group_manager
> capability set.
> needed for MH configurations and only PF is allowed and should write
> "request UC MAC - set_l2_table_entry" on behalf of the PF itself and
> it's own VFs.
>
> - On a bare metal machine only layer 3 is required (all traffic is
> passed to the PF vport).
> - On a MH configuration layer 3 and 1 are required.
> - On a SRIOV configuration layer 3 and 2 are required.
> - On MH with SRIOV all layers are required.
>
> in the driver, eswitch and L2 layers are handled by PF@eswitch•c.
>
> So for your question:
>
> PF always init_eswitch ( no eswitch -sriov- tables are created), and
> the eswitch will start listening for vport_change_events.
>
> A PF/VF or netdev vport instance on any steering changes updates
> should call mlx5e_vport_context_update[1]
>
> vport_context_update is A FW command that will store the current
> UC/MC/VLAN list and promiscuity info of a vport.
>
> The FW will generate an event to the PF driver eswitch manager (vport
> manager) mlx5_eswitch_vport_event [2], and the PF eswitch will call
> set_l2_table_entry for each UC mac on each vport change event of any
> vport (including its own vport), in case of SRIOV is enabled it will
> update eswitch tables as well.
>
> To simplify my answer the function calls are:
> Vport VF/PF netdevice:
> mlx5e_set_rx_mode_work
> mlx5e_vport_context_update
> mlx5e_vport_context_update_addr_list --> FW event will be
> generated to the PF esiwtch manager
>
> PF eswitch manager(eswitch.c) on a vport change FW event:
> mlx5_eswitch_vport_event
> esw_vport_change_handler
> esw_vport_change_handle_locked
> esw_apply_vport_addr_list
> esw_add_uc_addr
> set_l2_table_entry --> this will
> update the l2 table in case MH is enabled.
all makes sense. To test this logic I added printk-s
to above functions, but I only see:
# ip link set eth0 addr 24:8a:07:47:2b:6e
[ 148.861914] mlx5e_vport_context_update_addr_list: is_uc 1 err 0
[ 148.875152] mlx5e_vport_context_update_addr_list: is_uc 0 err 0
MLX5_EVENT_TYPE_NIC_VPORT_CHANGE doesn't come into mlx5_eq_int().
Yet nic seems to work fine. Packets come and go.
broken firmware or expected behavior?
# ethtool -i eth0
driver: mlx5_core
version: 3.0-1 (January 2015)
firmware-version: 14.16.2024
next prev parent reply other threads:[~2017-01-30 16:46 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-26 23:32 [PATCH net-next 0/4] mlx5: Create build configuration options Tom Herbert
2017-01-26 23:32 ` [PATCH net-next 1/4] mlx5: Make building eswitch configurable Tom Herbert
2017-01-27 5:34 ` Or Gerlitz
2017-01-27 17:38 ` Saeed Mahameed
2017-01-27 17:50 ` Tom Herbert
2017-01-27 18:05 ` Saeed Mahameed
2017-01-27 18:16 ` Tom Herbert
2017-01-27 18:28 ` Saeed Mahameed
2017-01-27 18:42 ` Tom Herbert
2017-01-27 21:15 ` Saeed Mahameed
2017-01-27 23:23 ` Alexei Starovoitov
2017-01-28 11:20 ` Saeed Mahameed
2017-01-28 17:52 ` Alexei Starovoitov
2017-01-29 9:11 ` Saeed Mahameed
2017-01-30 16:45 ` Alexei Starovoitov [this message]
2017-01-30 21:18 ` Saeed Mahameed
2017-01-31 3:32 ` Alexei Starovoitov
2017-01-31 14:44 ` Mohamad Haj Yahia
2017-01-27 18:19 ` Saeed Mahameed
2017-01-27 18:33 ` Tom Herbert
2017-01-27 20:59 ` Saeed Mahameed
2017-01-26 23:32 ` [PATCH net-next 2/4] mlx5: Make building SR-IOV configurable Tom Herbert
2017-01-26 23:32 ` [PATCH net-next 3/4] mlx5: Make building tc hardware offload configurable Tom Herbert
2017-01-27 6:29 ` kbuild test robot
2017-01-27 13:43 ` kbuild test robot
2017-01-26 23:32 ` [PATCH net-next 4/4] mlx5: Make building vxlan " Tom Herbert
2017-01-27 17:58 ` [PATCH net-next 0/4] mlx5: Create build configuration options Saeed Mahameed
2017-01-27 18:13 ` Tom Herbert
2017-01-28 11:38 ` Saeed Mahameed
2017-01-28 17:19 ` Tom Herbert
2017-01-29 8:07 ` Saeed Mahameed
2017-01-30 20:00 ` Tom Herbert
2017-01-30 21:26 ` Saeed Mahameed
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=588F6DC7.70904@fb.com \
--to=ast@fb$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=gerlitz.or@gmail$(echo .)com \
--cc=kernel-team@fb$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=saeedm@dev$(echo .)mellanox.co.il \
--cc=saeedm@mellanox$(echo .)com \
--cc=tom@herbertland$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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