diff --git a/dp-core/vr_nexthop.c b/dp-core/vr_nexthop.c index 704d06aa9..10ad1c52a 100644 --- a/dp-core/vr_nexthop.c +++ b/dp-core/vr_nexthop.c @@ -2060,13 +2060,12 @@ nh_encap_l2(struct vr_packet *pkt, struct vr_nexthop *nh, } } - if (pkt->vp_flags & VP_FLAG_GRO) { - if (vif_is_virtual(vif)) { - if (vr_gro_input(pkt, nh)) { - if (stats) - stats->vrf_gros++; - return 0; - } + if ((pkt->vp_flags & VP_FLAG_GRO) && vif_is_virtual(vif) && + (!(vif->vif_flags & VIF_FLAG_MIRROR_TX))) { + if (vr_gro_input(pkt, nh)) { + if (stats) + stats->vrf_gros++; + return 0; } } @@ -2139,7 +2138,8 @@ nh_encap_l3(struct vr_packet *pkt, struct vr_nexthop *nh, } } - if ((pkt->vp_flags & VP_FLAG_GRO) && vif_is_virtual(vif)) { + if ((pkt->vp_flags & VP_FLAG_GRO) && vif_is_virtual(vif) && + (!(vif->vif_flags & VIF_FLAG_MIRROR_TX))) { if (vr_gro_input(pkt, nh)) return 0; }