686d05b60d
Verbs API does not support Infiniband device port number larger 255 by design. To support more representors on a single Infiniband device DevX API should be engaged. While creating Send Queue (SQ) object with Verbs API, the PMD assigned IB device port attribute and kernel created the default miss flows in FDB domain, to redirect egress traffic from the queue being created to representor appropriate peer (wire, HPF, VF or SF). With DevX API there is no IB-device port attribute (it is merely kernel one, DevX operates in PRM terms) and PMD must create default miss flows in FDB explicitly. PMD did not provide this and using DevX API for E-Switch configurations was disabled. The default miss FDB flow matches E-Switch manager vport (to make sure the source is some representor) and SQn (Send Queue number - device internal queue index). The root flow table managed by kernel/firmware and it does not support vport redirect action, we have to split the default miss flow into two ones: - flow with lowest priority in the root table that matches E-Switch manager vport ID and jump to group 1. - flow in group 1 that matches E-Switch manager vport ID and SQn and forwards packet to peer vport Signed-off-by: Xueming Li <xuemingl@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
18 lines
480 B
C
18 lines
480 B
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright 2020 Mellanox Technologies, Ltd
|
|
*/
|
|
|
|
#ifndef RTE_PMD_MLX5_DEVX_H_
|
|
#define RTE_PMD_MLX5_DEVX_H_
|
|
|
|
#include "mlx5.h"
|
|
|
|
int mlx5_txq_devx_obj_new(struct rte_eth_dev *dev, uint16_t idx);
|
|
int mlx5_txq_devx_modify(struct mlx5_txq_obj *obj,
|
|
enum mlx5_txq_modify_type type, uint8_t dev_port);
|
|
void mlx5_txq_devx_obj_release(struct mlx5_txq_obj *txq_obj);
|
|
|
|
extern struct mlx5_obj_ops devx_obj_ops;
|
|
|
|
#endif /* RTE_PMD_MLX5_DEVX_H_ */
|