diff options
| author | Wei Zhao <wei.zhao1@intel.com> | 2026-07-28 11:20:32 +0000 |
|---|---|---|
| committer | Kevin Bowling <kbowling@FreeBSD.org> | 2026-07-31 11:38:25 +0000 |
| commit | 786c71845f80b8bf733d07f9155de9740a8cbc19 (patch) | |
| tree | 9f51b3cabae7bf1e392845304f54a80c758bbb9c | |
| parent | 8d1d32942b810d613be45ea78939872711803c3b (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.c | 5 |
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 */ |
