dst_num++;
        }
 
-       handler = _create_raw_flow_rule(dev, ft_prio, dst, fs_matcher,
-                                       flow_context, flow_act,
+       handler = _create_raw_flow_rule(dev, ft_prio, dst_num ? dst : NULL,
+                                       fs_matcher, flow_context, flow_act,
                                        cmd_in, inlen, dst_num);
 
        if (IS_ERR(handler)) {
                else
                        *dest_id = mqp->raw_packet_qp.rq.tirn;
                *dest_type = MLX5_FLOW_DESTINATION_TYPE_TIR;
-       } else if (fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_EGRESS ||
-                  fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_RDMA_TX) {
+       } else if ((fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_EGRESS ||
+                   fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_RDMA_TX) &&
+                  !(*flags & MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DROP)) {
                *dest_type = MLX5_FLOW_DESTINATION_TYPE_PORT;
        }