#
dfedf3e3 |
| 30-Jul-2019 |
Viacheslav Ovsiienko <viacheslavo@mellanox.com> |
net/mlx5: add workaround for VLAN in virtual machine
On some virtual setups (particularly on ESXi) when we have SR-IOV and E-Switch enabled there is the problem to receive VLAN traffic on VF interfa
net/mlx5: add workaround for VLAN in virtual machine
On some virtual setups (particularly on ESXi) when we have SR-IOV and E-Switch enabled there is the problem to receive VLAN traffic on VF interfaces. The NIC driver in ESXi hypervisor does not setup E-Switch vport setting correctly and VLAN traffic targeted to VF is dropped.
The patch provides the temporary workaround - if the rule containing the VLAN pattern is being installed for VF the VLAN network interface over VF is created, like the command does:
ip link add link vf.if name mlx5.wa.1.100 type vlan id 100
The PMD in DPDK maintains the database of created VLAN interfaces for each existing VF and requested VLAN tags. When all of the RTE Flows using the given VLAN tag are removed the created VLAN interface with this VLAN tag is deleted.
The name of created VLAN interface follows the format:
evmlx.d1.d2, where d1 is VF interface ifindex, d2 - VLAN ifindex
Implementation limitations:
- mask in rules is ignored, rule must specify VLAN tags exactly, no wildcards (which are implemented by the masks) are allowed
- virtual environment is detected via rte_hypervisor() call, and the type of hypervisor is checked. Currently we engage the workaround for ESXi and unrecognized hypervisors (which always happen on platforms other than x86 - it means workaround applied for the Flow over PCI VF). There are no confirmed data the other hypervisors (HyperV, Qemu) need this workaround, we are trying to reduce the list of configurations on those workaround should be applied.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Matan Azrad <matan@mellanox.com> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
show more ...
|
#
ea81c1b8 |
| 22-Jul-2019 |
Dekel Peled <dekelp@mellanox.com> |
net/mlx5: fix NVGRE matching
NVGRE has a GRE header with c_rsvd0_ver value 0x2000 and protocol value 0x6558. These should be matched when item_nvgre is provided.
This patch adds validation function
net/mlx5: fix NVGRE matching
NVGRE has a GRE header with c_rsvd0_ver value 0x2000 and protocol value 0x6558. These should be matched when item_nvgre is provided.
This patch adds validation function of NVGRE item. It also updates the translate function of NVGRE item, to add the required values, if they were not specified.
Original work by Xiaoyu Min <jackmin@mellanox.com>
Fixes: fc2c498ccb94 ("net/mlx5: add Direct Verbs translate items") Cc: stable@dpdk.org
Signed-off-by: Dekel Peled <dekelp@mellanox.com> Acked-by: Xiaoyu Min <jackmin@mellanox.com>
show more ...
|
#
42280dd9 |
| 18-Jul-2019 |
Dekel Peled <dekelp@mellanox.com> |
net/mlx5: fix typos in comments
Some spelling mistakes were found in comments. This patch fixes them.
Fixes: d10b09db0a45 ("net/mlx5: fix allocation when no memory on device NUMA node") Fixes: fc2c
net/mlx5: fix typos in comments
Some spelling mistakes were found in comments. This patch fixes them.
Fixes: d10b09db0a45 ("net/mlx5: fix allocation when no memory on device NUMA node") Fixes: fc2c498ccb94 ("net/mlx5: add Direct Verbs translate items") Fixes: 7d6bf6b866b8 ("net/mlx5: add Multi-Packet Rx support") Fixes: f6d9ab4e769f ("net/mlx5: check Tx queue size overflow") Cc: stable@dpdk.org
Signed-off-by: Dekel Peled <dekelp@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
show more ...
|
#
f15db67d |
| 16-Jul-2019 |
Matan Azrad <matan@mellanox.com> |
net/mlx5: accelerate DV flow counter query
All the DV counters are cashed in the PMD memory and are contained in pools which are contained in containers according to the counters allocation type - b
net/mlx5: accelerate DV flow counter query
All the DV counters are cashed in the PMD memory and are contained in pools which are contained in containers according to the counters allocation type - batch or single.
Currently, the flow counter query is done synchronously in pool resolution means that on the user request a FW command is triggered to read all the counters in the pool.
A new feature of devX to asynchronously read batch of flow counters allows to accelerate the user query operation.
Using the DPDK host thread, the PMD periodically triggers asynchronous query in pool resolution for all the counter pools and an interrupt is triggered by the FW when the values are updated. In the interrupt handler the pool counter values raw data is replaced using a double buffer algorithm (very fast). In the user query, the PMD just returns the last query values from the PMD cache - no system-calls and FW commands are triggered from the user control thread on query operation!
More synchronization is added with the host thread: Container resize uses double buffer algorithm. Pools growing in container uses atomic operation. Pool query buffer replace uses a spinlock. Pool minimum devX counter ID uses atomic operation.
Signed-off-by: Matan Azrad <matan@mellanox.com> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
show more ...
|
#
5e33bebd |
| 10-Jul-2019 |
Xiaoyu Min <jackmin@mellanox.com> |
net/mlx5: support IP-in-IP tunnel
Enabled IP-in-IP tunnel type support on DV/DR flow engine. This includes the following combination: - IPv4 over IPv4 - IPv4 over IPv6 - IPv6 over IPv4 - IPv6 ov
net/mlx5: support IP-in-IP tunnel
Enabled IP-in-IP tunnel type support on DV/DR flow engine. This includes the following combination: - IPv4 over IPv4 - IPv4 over IPv6 - IPv6 over IPv4 - IPv6 over IPv6
MLX5 NIC supports IP-in-IP tunnel via FLEX Parser so need to make sure fw using FLEX Paser profile 0.
mlxconfig -d <mst device> -y set FLEX_PARSER_PROFILE_ENABLE=0
The example testpmd commands would be:
- Match on IPv4 over IPv4 packets and do inner RSS:
testpmd> flow create 0 ingress pattern eth / ipv4 proto is 0x04 / ipv4 / udp / end actions rss level 2 queues 0 1 2 3 end / end
- Match on IPv6 over IPv4 packets and do inner RSS:
testpmd> flow create 0 ingress pattern eth / ipv4 proto is 0x29 / ipv6 / udp / end actions rss level 2 queues 0 1 2 3 end / end
Signed-off-by: Xiaoyu Min <jackmin@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
show more ...
|
#
a7a03655 |
| 09-Jul-2019 |
Xiaoyu Min <jackmin@mellanox.com> |
net/mlx5: match GRE key and present bits
Support matching on the present bits (C,K,S) as well as the optional key field.
If the rte_flow_item_gre_key is specified in pattern, it will set K present
net/mlx5: match GRE key and present bits
Support matching on the present bits (C,K,S) as well as the optional key field.
If the rte_flow_item_gre_key is specified in pattern, it will set K present match automatically.
Signed-off-by: Xiaoyu Min <jackmin@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
show more ...
|
#
9f8dee4b |
| 09-Jul-2019 |
Xiaoyu Min <jackmin@mellanox.com> |
net/mlx5: support match GRE protocol on DR engine
DR engine support matching on GRE protocol field without MPLS supports. So bypassing the MPLS check when DR is enabled.
Signed-off-by: Xiaoyu Min <
net/mlx5: support match GRE protocol on DR engine
DR engine support matching on GRE protocol field without MPLS supports. So bypassing the MPLS check when DR is enabled.
Signed-off-by: Xiaoyu Min <jackmin@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
show more ...
|
#
d53aa89a |
| 03-Jul-2019 |
Xiaoyu Min <jackmin@mellanox.com> |
net/mlx5: support matching on ICMP/ICMP6
On DV/DR flow engine, MLX5 can match on ICMP/ICMP6's code and type field via FLEX Parser, which can be enabled by config FW using FLEX Parser profile 2:
mlx
net/mlx5: support matching on ICMP/ICMP6
On DV/DR flow engine, MLX5 can match on ICMP/ICMP6's code and type field via FLEX Parser, which can be enabled by config FW using FLEX Parser profile 2:
mlxconfig -d <mst device> -y set FLEX_PARSER_PROFILE_ENABLE=2
The testpmd commands could be:
testpmd> flow create 0 ingress pattern eth / ipv4 / icmp type is 8 code is 0 / end actions rss queues 0 1 end / end
testpmd> flow create 0 ingress pattern eth / ipv6 / icmp6 type is 128 code is 0 / end actions rss queues 0 1 end / end
Signed-off-by: Xiaoyu Min <jackmin@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
show more ...
|
#
3f22e315 |
| 19-Jun-2019 |
Asaf Penso <asafp@mellanox.com> |
net/mlx5: check memory allocation in flow creation
rte_calloc functions returns a non-null pointer in case of success and null pointer in case of failure.
The return value should be checked and the
net/mlx5: check memory allocation in flow creation
rte_calloc functions returns a non-null pointer in case of success and null pointer in case of failure.
The return value should be checked and the function flow should take that into consideration.
This patch adds a check for rte_calloc return value in function flow_list_create.
Fixes: 84c406e74524 ("net/mlx5: add flow translate function") Cc: stable@dpdk.org
Signed-off-by: Asaf Penso <asafp@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
show more ...
|
#
5291c601 |
| 01-Jul-2019 |
Moti Haimovsky <motih@mellanox.com> |
net/mlx5: remove TCF support
This commit removes the support of configuring the device E-switch using TCF since it is now possible to configure it via DR (direct verbs rules), and by that to also re
net/mlx5: remove TCF support
This commit removes the support of configuring the device E-switch using TCF since it is now possible to configure it via DR (direct verbs rules), and by that to also remove the PMD dependency in libmnl.
Signed-off-by: Moti Haimovsky <motih@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
show more ...
|
#
8f0fa0c0 |
| 01-Jul-2019 |
Moti Haimovsky <motih@mellanox.com> |
net/mlx5: fix crash on null operation
mlx5 implements mlx5_flow_null_drv_ops to be used when a specific flow typei/driver is not available or invalid. This routines return error without modifying th
net/mlx5: fix crash on null operation
mlx5 implements mlx5_flow_null_drv_ops to be used when a specific flow typei/driver is not available or invalid. This routines return error without modifying the rte_flow_error parameter passed to them which causes testpmd, for example, to crash. This commit addresses the issue by modifying the rte_flow_error parameter in theses routines.
Fixes: 0c76d1c9a18d ("net/mlx5: add abstraction for multiple flow drivers") Fixes: 684dafe795d0 ("net/mlx5: add flow query abstraction interface") Cc: stable@dpdk.org
Signed-off-by: Moti Haimovsky <motih@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
show more ...
|
#
d812a3c2 |
| 29-May-2019 |
Stephen Hemminger <stephen@networkplumber.org> |
net/mlx5: remove unnecessary cast
The device private pointer (dev_private) is of type void * therefore no cast is necessary in C.
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@netw
net/mlx5: remove unnecessary cast
The device private pointer (dev_private) is of type void * therefore no cast is necessary in C.
Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
show more ...
|
#
e73e3547 |
| 21-May-2019 |
Olivier Matz <olivier.matz@6wind.com> |
net: add rte prefix to UDP structure
Add 'rte_' prefix to structures: - rename struct udp_hdr as struct rte_udp_hdr.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Reviewed-by: Stephen Hemmin
net: add rte prefix to UDP structure
Add 'rte_' prefix to structures: - rename struct udp_hdr as struct rte_udp_hdr.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Reviewed-by: Stephen Hemminger <stephen@networkplumber.org> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
show more ...
|
#
f41b5156 |
| 21-May-2019 |
Olivier Matz <olivier.matz@6wind.com> |
net: add rte prefix to TCP structure
Add 'rte_' prefix to structures: - rename struct tcp_hdr as struct rte_tcp_hdr.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Reviewed-by: Stephen Hemmin
net: add rte prefix to TCP structure
Add 'rte_' prefix to structures: - rename struct tcp_hdr as struct rte_tcp_hdr.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Reviewed-by: Stephen Hemminger <stephen@networkplumber.org> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
show more ...
|
#
a7c528e5 |
| 21-May-2019 |
Olivier Matz <olivier.matz@6wind.com> |
net: add rte prefix to IP structure
Add 'rte_' prefix to structures: - rename struct ipv4_hdr as struct rte_ipv4_hdr. - rename struct ipv6_hdr as struct rte_ipv6_hdr.
Signed-off-by: Olivier Matz <o
net: add rte prefix to IP structure
Add 'rte_' prefix to structures: - rename struct ipv4_hdr as struct rte_ipv4_hdr. - rename struct ipv6_hdr as struct rte_ipv6_hdr.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Reviewed-by: Stephen Hemminger <stephen@networkplumber.org> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
show more ...
|
#
c14995c5 |
| 18-Apr-2019 |
Ori Kam <orika@mellanox.com> |
net/mlx5: add transfer attribute to matcher
In current implementation the DV steering supported only NIC steering. This commit adds the transfer attribute in order to create a matcher on the FDB tab
net/mlx5: add transfer attribute to matcher
In current implementation the DV steering supported only NIC steering. This commit adds the transfer attribute in order to create a matcher on the FDB tables.
Signed-off-by: Ori Kam <orika@mellanox.com> Acked-by: Yongseok Koh <yskoh@mellanox.com>
show more ...
|
#
e2b4925e |
| 18-Apr-2019 |
Ori Kam <orika@mellanox.com> |
net/mlx5: support Direct Rules E-Switch
This commit checks the for DR E-Switch support. The support is based on both Device and Kernel. This commit also enables the user to manually disable this thi
net/mlx5: support Direct Rules E-Switch
This commit checks the for DR E-Switch support. The support is based on both Device and Kernel. This commit also enables the user to manually disable this this feature.
Signed-off-by: Ori Kam <orika@mellanox.com> Acked-by: Yongseok Koh <yskoh@mellanox.com>
show more ...
|
#
b7ed955a |
| 17-Apr-2019 |
Thomas Monjalon <thomas@monjalon.net> |
ethdev: deprecate legacy filter API
As stated in the deprecation notice from December 2016, "the legacy filter API, including rte_eth_dev_filter_supported(), rte_eth_dev_filter_ctrl() as well as fil
ethdev: deprecate legacy filter API
As stated in the deprecation notice from December 2016, "the legacy filter API, including rte_eth_dev_filter_supported(), rte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE, FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded by the generic flow API (rte_flow)".
After a long wait of more than two years, the legacy filter API is marked as deprecated, while still tested with testpmd and the tep_termination example.
The next step will be to announce a deadline for complete removal. As preparation of the removal of rte_eth_ctrl.h, RTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions are moved to rte_ethdev.h and rte_flow.h.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Shahaf Shuler <shahafs@mellanox.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Jerin Jacob <jerinj@marvell.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
show more ...
|
#
1183f12f |
| 14-Apr-2019 |
Ori Kam <orika@mellanox.com> |
net/mlx5: fix RSS validation function
The RSS validation function was missing the verifcation that if RSS is requested on inner packet, the flow must have tunnel data.
Fixes: 23c1d42c7138 ("net/mlx
net/mlx5: fix RSS validation function
The RSS validation function was missing the verifcation that if RSS is requested on inner packet, the flow must have tunnel data.
Fixes: 23c1d42c7138 ("net/mlx5: split flow validation to dedicated function") Cc: stable@dpdk.org
Signed-off-by: Ori Kam <orika@mellanox.com> Acked-by: Yongseok Koh <yskoh@mellanox.com>
show more ...
|
#
227684fe |
| 10-Apr-2019 |
Yongseok Koh <yskoh@mellanox.com> |
net/mlx5: fix recursive inclusion of header file
mlx5.h includes mlx5_rxtx.h and mlx5_rxtx.h includes mlx5.h recursively.
Signed-off-by: Yongseok Koh <yskoh@mellanox.com> Acked-by: Shahaf Shuler <s
net/mlx5: fix recursive inclusion of header file
mlx5.h includes mlx5_rxtx.h and mlx5_rxtx.h includes mlx5.h recursively.
Signed-off-by: Yongseok Koh <yskoh@mellanox.com> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
show more ...
|
#
4f84a197 |
| 04-Apr-2019 |
Ori Kam <orika@mellanox.com> |
net/mlx5: add Direct Rules API
Adds calls to the Direct Rules API inside the glue functions. Due to difference in parameters between the Direct Rules and Direct Verbs some of the glue functions API
net/mlx5: add Direct Rules API
Adds calls to the Direct Rules API inside the glue functions. Due to difference in parameters between the Direct Rules and Direct Verbs some of the glue functions API was updated.
Signed-off-by: Ori Kam <orika@mellanox.com> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
show more ...
|
#
de90612f |
| 31-Mar-2019 |
Dekel Peled <dekelp@mellanox.com> |
net/mlx5: fix errno typos in comments
Correct typing mistake in several locations: ernno ==> errno
Fixes: 23c1d42c7138 ("net/mlx5: split flow validation to dedicated function") Cc: stable@dpdk.org
net/mlx5: fix errno typos in comments
Correct typing mistake in several locations: ernno ==> errno
Fixes: 23c1d42c7138 ("net/mlx5: split flow validation to dedicated function") Cc: stable@dpdk.org
Signed-off-by: Dekel Peled <dekelp@mellanox.com> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
show more ...
|
#
1e14090e |
| 27-Mar-2019 |
Viacheslav Ovsiienko <viacheslavo@mellanox.com> |
net/mlx5: provide IB port for the object being created
The code is updated to provide IB port index for the Verbs objects being created - QPs and Verbs Flows.
Signed-off-by: Viacheslav Ovsiienko <v
net/mlx5: provide IB port for the object being created
The code is updated to provide IB port index for the Verbs objects being created - QPs and Verbs Flows.
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
show more ...
|
#
4fb27c1d |
| 21-Feb-2019 |
Viacheslav Ovsiienko <viacheslavo@mellanox.com> |
net/mlx5: fix flow priorities probing error path
The mlx5 PMD probes the Verbs flow priorities supported with ibv_create_flow() function. If rdma-core or kernel fails for some reason, the returned e
net/mlx5: fix flow priorities probing error path
The mlx5 PMD probes the Verbs flow priorities supported with ibv_create_flow() function. If rdma-core or kernel fails for some reason, the returned error causes the drop queue is not destroyed, and pd is locked by not freed resource.
Also the mlx5_flow_discover_priorities() returned negative value as error, and this code was reported "as is", without sign changing (eventually causing assert(err > 0)).
Fixes: 2815702baea7 ("net/mlx5: replace verbs priorities by flow") Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Shahaf Shuler <shahafs@mellanox.com>
show more ...
|
#
dbeba4cf |
| 21-Feb-2019 |
Thomas Monjalon <thomas@monjalon.net> |
net/mlx: prefix private structure
The private structure stored in rte_eth_dev->data->dev_private was named "struct priv". In order to ease code browsing, the structure is renamed "struct mlx[45]_pri
net/mlx: prefix private structure
The private structure stored in rte_eth_dev->data->dev_private was named "struct priv". In order to ease code browsing, the structure is renamed "struct mlx[45]_priv".
Cc: stable@dpdk.org
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Yongseok Koh <yskoh@mellanox.com>
show more ...
|