Commit 4588fed7 authored by Maor Gottlieb's avatar Maor Gottlieb Committed by Saeed Mahameed
Browse files

net/mlx5: Refactor mlx5_get_flow_namespace



Have all the namespace type check in the same switch case.

Signed-off-by: default avatarMaor Gottlieb <maorg@nvidia.com>
Reviewed-by: default avatarMark Bloch <mbloch@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent 22c3f2f5
Loading
Loading
Loading
Loading
+32 −12
Original line number Diff line number Diff line
@@ -2206,6 +2206,22 @@ struct mlx5_flow_namespace *mlx5_get_fdb_sub_ns(struct mlx5_core_dev *dev,
}
EXPORT_SYMBOL(mlx5_get_fdb_sub_ns);

static bool is_nic_rx_ns(enum mlx5_flow_namespace_type type)
{
	switch (type) {
	case MLX5_FLOW_NAMESPACE_BYPASS:
	case MLX5_FLOW_NAMESPACE_LAG:
	case MLX5_FLOW_NAMESPACE_OFFLOADS:
	case MLX5_FLOW_NAMESPACE_ETHTOOL:
	case MLX5_FLOW_NAMESPACE_KERNEL:
	case MLX5_FLOW_NAMESPACE_LEFTOVERS:
	case MLX5_FLOW_NAMESPACE_ANCHOR:
		return true;
	default:
		return false;
	}
}

struct mlx5_flow_namespace *mlx5_get_flow_namespace(struct mlx5_core_dev *dev,
						    enum mlx5_flow_namespace_type type)
{
@@ -2236,31 +2252,35 @@ struct mlx5_flow_namespace *mlx5_get_flow_namespace(struct mlx5_core_dev *dev,
		if (steering->sniffer_tx_root_ns)
			return &steering->sniffer_tx_root_ns->ns;
		return NULL;
	default:
		break;
	}

	if (type == MLX5_FLOW_NAMESPACE_EGRESS ||
	    type == MLX5_FLOW_NAMESPACE_EGRESS_KERNEL) {
	case MLX5_FLOW_NAMESPACE_EGRESS:
	case MLX5_FLOW_NAMESPACE_EGRESS_KERNEL:
		root_ns = steering->egress_root_ns;
		prio = type - MLX5_FLOW_NAMESPACE_EGRESS;
	} else if (type == MLX5_FLOW_NAMESPACE_RDMA_RX) {
		break;
	case MLX5_FLOW_NAMESPACE_RDMA_RX:
		root_ns = steering->rdma_rx_root_ns;
		prio = RDMA_RX_BYPASS_PRIO;
	} else if (type == MLX5_FLOW_NAMESPACE_RDMA_RX_KERNEL) {
		break;
	case MLX5_FLOW_NAMESPACE_RDMA_RX_KERNEL:
		root_ns = steering->rdma_rx_root_ns;
		prio = RDMA_RX_KERNEL_PRIO;
	} else if (type == MLX5_FLOW_NAMESPACE_RDMA_TX) {
		break;
	case MLX5_FLOW_NAMESPACE_RDMA_TX:
		root_ns = steering->rdma_tx_root_ns;
	} else if (type == MLX5_FLOW_NAMESPACE_RDMA_RX_COUNTERS) {
		break;
	case MLX5_FLOW_NAMESPACE_RDMA_RX_COUNTERS:
		root_ns = steering->rdma_rx_root_ns;
		prio = RDMA_RX_COUNTERS_PRIO;
	} else if (type == MLX5_FLOW_NAMESPACE_RDMA_TX_COUNTERS) {
		break;
	case MLX5_FLOW_NAMESPACE_RDMA_TX_COUNTERS:
		root_ns = steering->rdma_tx_root_ns;
		prio = RDMA_TX_COUNTERS_PRIO;
	} else { /* Must be NIC RX */
		break;
	default: /* Must be NIC RX */
		WARN_ON(!is_nic_rx_ns(type));
		root_ns = steering->root_ns;
		prio = type;
		break;
	}

	if (!root_ns)