@@ -3740,6 +3740,8 @@ flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr)
*/
if (priv->sh->config.dv_flow_en == 2)
return MLX5_FLOW_TYPE_HW;
+ if (!attr)
+ return MLX5_FLOW_TYPE_MIN;
/* If no OS specific type - continue with DV/VERBS selection */
if (attr->transfer && priv->sh->config.dv_esw_en)
type = MLX5_FLOW_TYPE_DV;
@@ -8252,8 +8254,9 @@ mlx5_flow_info_get(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr attr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW)
+ if (flow_get_drv_type(dev, &attr) != MLX5_FLOW_TYPE_HW)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8287,8 +8290,9 @@ mlx5_flow_port_configure(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr attr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW)
+ if (flow_get_drv_type(dev, &attr) != MLX5_FLOW_TYPE_HW)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8319,8 +8323,9 @@ mlx5_flow_pattern_template_create(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr fattr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW) {
+ if (flow_get_drv_type(dev, &fattr) != MLX5_FLOW_TYPE_HW) {
rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8350,8 +8355,9 @@ mlx5_flow_pattern_template_destroy(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr attr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW)
+ if (flow_get_drv_type(dev, &attr) != MLX5_FLOW_TYPE_HW)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8385,8 +8391,9 @@ mlx5_flow_actions_template_create(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr fattr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW) {
+ if (flow_get_drv_type(dev, &fattr) != MLX5_FLOW_TYPE_HW) {
rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8416,8 +8423,9 @@ mlx5_flow_actions_template_destroy(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr attr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW)
+ if (flow_get_drv_type(dev, &attr) != MLX5_FLOW_TYPE_HW)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8457,8 +8465,9 @@ mlx5_flow_table_create(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr fattr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW) {
+ if (flow_get_drv_type(dev, &fattr) != MLX5_FLOW_TYPE_HW) {
rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8494,8 +8503,9 @@ mlx5_flow_table_destroy(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr attr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW)
+ if (flow_get_drv_type(dev, &attr) != MLX5_FLOW_TYPE_HW)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8542,8 +8552,9 @@ mlx5_flow_async_flow_create(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr fattr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW) {
+ if (flow_get_drv_type(dev, &fattr) != MLX5_FLOW_TYPE_HW) {
rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8585,8 +8596,9 @@ mlx5_flow_async_flow_destroy(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr fattr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW)
+ if (flow_get_drv_type(dev, &fattr) != MLX5_FLOW_TYPE_HW)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8621,8 +8633,9 @@ mlx5_flow_pull(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr attr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW)
+ if (flow_get_drv_type(dev, &attr) != MLX5_FLOW_TYPE_HW)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,
@@ -8650,8 +8663,9 @@ mlx5_flow_push(struct rte_eth_dev *dev,
struct rte_flow_error *error)
{
const struct mlx5_flow_driver_ops *fops;
+ struct rte_flow_attr attr = {0};
- if (flow_get_drv_type(dev, NULL) != MLX5_FLOW_TYPE_HW)
+ if (flow_get_drv_type(dev, &attr) != MLX5_FLOW_TYPE_HW)
return rte_flow_error_set(error, ENOTSUP,
RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
NULL,