if (field_avail(typeof(resp), mlx5_ib_support_multi_pkt_send_wqes,
                        uhw->outlen)) {
-               resp.mlx5_ib_support_multi_pkt_send_wqes =
-                       MLX5_CAP_ETH(mdev, multi_pkt_send_wqe);
+               if (MLX5_CAP_ETH(mdev, multi_pkt_send_wqe))
+                       resp.mlx5_ib_support_multi_pkt_send_wqes =
+                               MLX5_IB_ALLOW_MPW;
                resp.response_length +=
                        sizeof(resp.mlx5_ib_support_multi_pkt_send_wqes);
        }
 
 
        sqc = MLX5_ADDR_OF(create_sq_in, in, ctx);
        MLX5_SET(sqc, sqc, flush_in_error_en, 1);
+       if (MLX5_CAP_ETH(dev->mdev, multi_pkt_send_wqe))
+               MLX5_SET(sqc, sqc, allow_multi_pkt_send_wqe, 1);
        MLX5_SET(sqc, sqc, state, MLX5_SQC_STATE_RST);
        MLX5_SET(sqc, sqc, user_index, MLX5_GET(qpc, qpc, user_index));
        MLX5_SET(sqc, sqc, cqn, MLX5_GET(qpc, qpc, cqn_snd));
 
        __u32 reserved;
 };
 
+enum mlx5_ib_mpw_caps {
+       MPW_RESERVED            = 1 << 0,
+       MLX5_IB_ALLOW_MPW       = 1 << 1,
+};
+
 enum mlx5_ib_sw_parsing_offloads {
        MLX5_IB_SW_PARSING = 1 << 0,
        MLX5_IB_SW_PARSING_CSUM = 1 << 1,