if (!flow_is_multicast_only(flow_attr))
                set_underlay_qp(dev, spec, underlay_qpn);
 
+       if (dev->rep) {
+               void *misc;
+
+               misc = MLX5_ADDR_OF(fte_match_param, spec->match_value,
+                                   misc_parameters);
+               MLX5_SET(fte_match_set_misc, misc, source_port,
+                        dev->rep->vport);
+               misc = MLX5_ADDR_OF(fte_match_param, spec->match_criteria,
+                                   misc_parameters);
+               MLX5_SET_TO_ONES(fte_match_set_misc, misc, source_port);
+       }
+
        spec->match_criteria_enable = get_match_criteria_enable(spec->match_criteria);
        if (is_drop) {
                flow_act.action = MLX5_FLOW_CONTEXT_ACTION_DROP;