aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWei Zhao <wei.zhao1@intel.com>2026-07-28 11:20:32 +0000
committerKevin Bowling <kbowling@FreeBSD.org>2026-07-31 11:38:25 +0000
commit786c71845f80b8bf733d07f9155de9740a8cbc19 (patch)
tree9f51b3cabae7bf1e392845304f54a80c758bbb9c
parent8d1d32942b810d613be45ea78939872711803c3b (diff)
ixgbe: disable VF multicast reception for empty list
Clear ROMPE for an empty list and enable it only for a nonempty list. FreeBSD already clears ROMPE when resetting a VF, so that part of the DPDK change is not needed. DPDK commit message net/ixgbe: fix over using multicast table for VF VMOLR.ROMPE allows a VF to receive packets matching the shared multicast table. Leaving it enabled after the VF removes its last multicast address lets PF or peer-VF table entries continue selecting that VF. Signed-off-by: Wei Zhao <wei.zhao1@intel.com> Acked-by: Qi Zhang <qi.z.zhang@intel.com> Obtained from: DPDK (dc5a6e7422) MFC after: 1 week
-rw-r--r--sys/dev/ixgbe/if_sriov.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/ixgbe/if_sriov.c b/sys/dev/ixgbe/if_sriov.c
index c822303a4067..8d4e20fcf8bf 100644
--- a/sys/dev/ixgbe/if_sriov.c
+++ b/sys/dev/ixgbe/if_sriov.c
@@ -437,7 +437,10 @@ ixgbe_vf_set_mc_addr(struct ixgbe_softc *sc, struct ixgbe_vf *vf, u32 *msg)
IXGBE_WRITE_REG(&sc->hw, IXGBE_MTA(vec_reg), mta_reg);
}
- vmolr |= IXGBE_VMOLR_ROMPE;
+ if (entries == 0)
+ vmolr &= ~IXGBE_VMOLR_ROMPE;
+ else
+ vmolr |= IXGBE_VMOLR_ROMPE;
IXGBE_WRITE_REG(&sc->hw, IXGBE_VMOLR(vf->pool), vmolr);
ixgbe_send_vf_success(sc, vf, msg[0]);
} /* ixgbe_vf_set_mc_addr */