Skip to content

mlx5: DR, Enhance the support in few areas #1050

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Sep 1, 2021

Conversation

yishaih
Copy link
Member

@yishaih yishaih commented Aug 26, 2021

This series enhances the DR support in few areas as of below.

  • Query vports dynamically to support SFs.
  • Support ECPF vport.
  • Add destination IB port action.
  • Extend misc4 flex parsers support.

Muhammad Sammar and others added 5 commits August 26, 2021 16:24
Add new data structure "vports table" to manage vports caps efficiently.
Since the number of vports is much smaller than their IDs, this vports
table is implemented as a hash table.

Signed-off-by: Muhammad Sammar <muhammads@nvidia.com>
Signed-off-by: Alex Vesker <valex@nvidia.com>
Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
Vports can be added and removed dynamically after adding SF support.
Vports numbers are not contiguous in such case. This means that we
cannot query all of the ports one by one, dynamic support will query and
cache the vport details on demand.
Caching is possible since the vport to ICM address mapping is static.
This will allow to query a port that was added during runtime, for
example with a SF.

Signed-off-by: Alex Vesker <valex@nvidia.com>
Signed-off-by: Muhammad Sammar <muhammads@nvidia.com>
Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
The Embedded CPU Physical Function (ECPF) vport, is part of every
eswitch running on an Embedded CPU (EC). In such cases the ECPF vport is
also the eswitch manager port to which all missed traffic is direct.

Ports are queried with the following logic:

For Eswitch:
    vport 0 (PF): vport = 0, other = false
    vport 1..n:   vport = x, other = true
    esw_manager = vport 0 (PF)
For Embedded CPU Eswitch:
    vport 0 (ECPF): vport = 0, other = false
    vport 0 (PF):   vport = 0, other = true
    vport 1..n:     vport = x, other = true
    esw_manager = vport 0 (ECPF)

Signed-off-by: Alex Vesker <valex@nvidia.com>
Signed-off-by: Muhammad Sammar <muhammads@nvidia.com>
Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
This action will allow to direct traffic to a specific ib_port similar
to the vport action. Internally each IB port is represented by a vport
and meta data_reg_c0 value and mask.

The meta data is used in a similar way as source vport for skipping
rules and determining the source of the traffic when using FDB.

IB ports are also useful for LAG since in such case we have the vports
of both physical ports (local and other).

Signed-off-by: Alex Vesker <valex@nvidia.com>
Signed-off-by: Muhammad Sammar <muhammads@nvidia.com>
Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
Expose flex parsers 4-7 provided by misc4 to extend matching ability of
flex parsers, now we can match on all flex parsers at the same time.

Signed-off-by: Muhammad Sammar <muhammads@nvidia.com>
Signed-off-by: Alex Vesker <valex@nvidia.com>
Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
@yishaih yishaih merged commit 7fd01f0 into linux-rdma:master Sep 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants