FreeBSD/src cce53d1sys/arm64/linux linux_emul_md.c, sys/compat/linux linux_emul.h

linux: unbreak arm64 linux_emul_md.c after pkey syscalls

linux_emul.h uses struct image_args without a file-scope forward
declaration.  The new arm64 (and i386) stubs include that header
without imgact.h first, which fails the build under -Werror.
Include it the same way linux_pkru.c already does, and declare the
type next to struct image_params so the header is self-contained.

Reported by:    tuexen
Fixes:          bdb561843e86
MFC after:      1 month
DeltaFile
+1-0sys/i386/linux/linux_emul_md.c
+1-0sys/compat/linux/linux_emul.h
+1-0sys/arm64/linux/linux_emul_md.c
+3-03 files

FreeBSD/src c1ff9c9lib/libc/gen fts.c, lib/libc/tests/gen fts_regress_test.c

fts: fix trailing-slash regression in fts_read after fts_children

When fts_read() descends into a directory whose children were
already prefetched by fts_children() (as ls -R does), it changed
directory using p->fts_name instead of p->fts_accpath.

With a trailing slash on a relative root path (e.g. 'dir/'),
the bare name was resolved relative to the wrong directory, so
every sibling directory after the first failed with ENOENT and
was reported as FTS_DNR.  This manifested as 'ls -lR dir/'
skipping the contents of all but the first subdirectory.

Restore the use of p->fts_accpath, matching the behavior prior
to 4bd01d6ae016.

Add a regression test that reproduces the exact conditions:
fts_children() on each directory, FTS_PHYSICAL without
FTS_NOCHDIR, and a trailing slash on the root path.


    [5 lines not shown]
DeltaFile
+58-0lib/libc/tests/gen/fts_regress_test.c
+1-1lib/libc/gen/fts.c
+59-12 files

FreeBSD/src 851af28sys/dev/ixgbe if_ix.c

ixgbe: Report the management packet drop counter

The management_pkts_drpd sysctl was wired to MNGPTC, making it an
alias of management_pkts_txd, instead of MNGPDC.

(cherry picked from commit 435cde959c8823ff38c699d1bc8655918fda57dd)
DeltaFile
+1-1sys/dev/ixgbe/if_ix.c
+1-11 files

FreeBSD/src dbb7ce7sys/dev/ixgbe if_ix.c

ixgbe: Re-enable the SFP laser during initialization

ixgbe_if_stop() disables the transmit laser on every 82599 SFP fiber
port, but the iflib initialization path did not re-enable it. Re-enable
the laser before deferred SFP module setup so interface
reinitialization cannot leave either single-speed or multispeed optics
dark.

The hardware wrapper is a no-op when laser control is unavailable. The
placement follows Intel ix-3.4.39; this version deliberately applies to
every SFP port affected by the stop path.

(cherry picked from commit 545779a99290b7b7d94dece6c096ce230be91ff9)
DeltaFile
+2-0sys/dev/ixgbe/if_ix.c
+2-01 files

FreeBSD/src eceddfbsys/dev/ixgbe if_ix.c

ixgbe: Report the management packet drop counter

The management_pkts_drpd sysctl was wired to MNGPTC, making it an
alias of management_pkts_txd, instead of MNGPDC.

(cherry picked from commit 435cde959c8823ff38c699d1bc8655918fda57dd)
DeltaFile
+1-1sys/dev/ixgbe/if_ix.c
+1-11 files

FreeBSD/src 45aac70sys/dev/ixgbe if_ix.c

ixgbe: Re-enable the SFP laser during initialization

ixgbe_if_stop() disables the transmit laser on every 82599 SFP fiber
port, but the iflib initialization path did not re-enable it. Re-enable
the laser before deferred SFP module setup so interface
reinitialization cannot leave either single-speed or multispeed optics
dark.

The hardware wrapper is a no-op when laser control is unavailable. The
placement follows Intel ix-3.4.39; this version deliberately applies to
every SFP port affected by the stop path.

(cherry picked from commit 545779a99290b7b7d94dece6c096ce230be91ff9)
DeltaFile
+2-0sys/dev/ixgbe/if_ix.c
+2-01 files

FreeBSD/src 5cd4954sys/net iflib.c

iflib: Permit SR-IOV configuration on a down interface

Drivers which remap PF queues need a stop/mutate/restart transaction
only when the interface has live queues. Permit their IOV
initialization callback while the interface is administratively down
and leave it down afterward.

This restores the standard boot-time iovctl.conf workflow and
lets other opt-in drivers configure VFs before netif brings the PF up.

(cherry picked from commit 2cf580c694f6f392531a63f01c3fb89c0244f89a)
DeltaFile
+31-0sys/net/iflib.c
+31-01 files

FreeBSD/src dc1d2c7sys/net iflib.c

iflib: Permit SR-IOV configuration on a down interface

Drivers which remap PF queues need a stop/mutate/restart transaction
only when the interface has live queues. Permit their IOV
initialization callback while the interface is administratively down
and leave it down afterward.

This restores the standard boot-time iovctl.conf workflow and
lets other opt-in drivers configure VFs before netif brings the PF up.

(cherry picked from commit 2cf580c694f6f392531a63f01c3fb89c0244f89a)
DeltaFile
+31-0sys/net/iflib.c
+31-01 files

FreeBSD/src 5f215a2sys/dev/pci pci.c

pci: Permit function-level reset of 82599 VFs

Intel 82599 supports FLR on VFs but reports FLR support only in the PF
Device Capabilities register.  The VF register therefore leaves the FLR
Capable bit clear, and pcie_flr() rejects the reset.

Intel documents the zeroed VF PCIe capability structure as erratum 35
in the 82599 Specification Update (B0=Yes; NoFix).

Add a positive FLR quirk for the 82599 VF.  Keep the capability check
for every other function, so an unknown nonconforming VF cannot make
pcie_flr() report success when its reset request was ignored.

SR-IOV requires VFs to support FLR, but a clear capability bit cannot
distinguish the 82599's misadvertisement from a VF that fails to
implement it.

(cherry picked from commit ee776a8e291cb73845a8611d3dec5a2a966106b9)
DeltaFile
+11-3sys/dev/pci/pci.c
+11-31 files

FreeBSD/src 61542deshare/man/man4 pci.4, sys/dev/pci pci.c

pci: Ignore SR-IOV VFs when tuning MPS

The VF Device Control MPS and MRRS fields are reserved and preserved.
VF transactions use the PF MPS, so a hardwired VF value must not be
used to retune the shared PCIe hierarchy.

Document the previously undocumented tuning knob and clarify why a VF
may continue to display its reserved hardwired value.

This fixes an instant crash/reboot on my Zen3 system with 82599 VFs.

(cherry picked from commit 5aab6164161db397d84e5fff88e1af1a9e405875)
DeltaFile
+12-1share/man/man4/pci.4
+7-0sys/dev/pci/pci.c
+19-12 files

FreeBSD/src 8620422sys/dev/ixgbe ixgbe.h if_ixv.c

ixv: reconcile VLAN filters through the mailbox

VLAN registration callbacks only update the software shadow, leaving
the PF unaware until a later full initialization.  Initialization then
retries each failed request in a tight loop, while skipping replay
entirely when local hardware filtering is disabled.

Send additions and removals as soon as the desired state changes,
independent of the VF local-filter capability.  Replay the desired
memberships after reset and retry a bounded batch per timer tick.  Stop
after the first failure so a silent PF can consume only one mailbox
timeout per pass, while a responsive PF can drain several requests.
Treat the retry window as a no-progress deadline: advance it when
pending work succeeds so a large backlog can drain, but leave entries
dormant after a sustained failure.

A successful mailbox request wakes a dormant backlog.  Dispatch
timer-driven retries only while iflib marks the VF running, so a stale
timer tick cannot restore PF VLAN state after the stop path resets the

    [14 lines not shown]
DeltaFile
+210-54sys/dev/ixgbe/if_ixv.c
+4-0sys/dev/ixgbe/ixgbe.h
+214-542 files

FreeBSD/src a3d02a6share/man/man4 ix.4, sys/dev/ixgbe ixgbe_sriov.h ixgbe.h

ixgbe: implement VF secondary MAC filters

The PF advertises the legacy SET_MACVLAN mailbox request but always
rejects it. The request installs secondary unicast addresses.

Allocate an owned RAR pool for VF secondary addresses, reserve low
entries for PF filters, and place VF-primary addresses at the top of
the usable RAR range. Reject address collisions and cap each VF at
three secondary filters so one guest cannot exhaust the shared table.

Clear secondary filters on VF or PF reset and on SR-IOV teardown. This
hardware can anti-spoof only the VF primary source address. Reject
secondary filters while MAC anti-spoofing is configured, so installing
them requires an explicit administrative policy choice. Report optional
filter-table allocation failure without disabling SR-IOV.

Adapt the owned-RAR allocation and reset-cleanup model from igb(4) in
a2ed165f0049 to DPDK's ixgbe SET_MACVLAN mailbox semantics.


    [3 lines not shown]
DeltaFile
+149-5sys/dev/ixgbe/if_sriov.c
+10-0sys/dev/ixgbe/ixgbe.h
+10-0share/man/man4/ix.4
+2-0sys/dev/ixgbe/ixgbe_sriov.h
+171-54 files

FreeBSD/src 2c12bf9sys/dev/ixgbe ixgbe_vf.c ixgbe.h

ixgbe: enforce VF promiscuity and multicast policy

The allow-promisc IOV property is advertised but ignored, and the PF
rejects the xcast request used by modern VFs. Negotiate mailbox APIs
1.2 and 1.3, implement pool-scoped xcast modes, and require
allow-promisc for requested all-multicast or unicast-promiscuous modes.

The VF mailbox can carry only 30 multicast hashes. When ixv has a
larger list, request the API 1.2 all-multicast xcast mode instead of
extending the legacy SET_MULTICAST message. The PF grants that fallback
only to VFs configured with allow-promisc; otherwise ixv reports that
only the first 30 addresses are active.

Reset xcast state with the VF and have ixv replay the mode implied by
its interface flags after multicast updates.

Follow DPDK's ixgbe API 1.2/1.3 xcast contract, with allow-promisc
policy adapted from igb(4) in a2ed165f0049.


    [3 lines not shown]
DeltaFile
+90-26sys/dev/ixgbe/if_sriov.c
+48-1sys/dev/ixgbe/if_ixv.c
+3-0sys/dev/ixgbe/ixgbe_sriov.h
+1-1sys/dev/ixgbe/ixgbe_vf.c
+2-0sys/dev/ixgbe/ixgbe.h
+144-285 files

FreeBSD/src 5aa48d0sys/dev/ixgbe ix_txrx.c if_sriov.c

ixgbe: Preserve priority-tagged traffic with SR-IOV

VID 0 carries only 802.1p priority and does not identify VLAN
membership. Keep VFTA bit zero in the persistent PF shadow table so
reset and SR-IOV replay admit priority-tagged frames while VLAN
filtering is enabled.

In virtualization mode, also reserve VLVF slot zero and restore PF and
eligible VF pool memberships. A VFTA hit alone admits the tag globally
but does not deliver it to the correct pools.

This matches the priority-tag treatment in em/igb.

(cherry picked from commit caa08ed331da02a91f95472193e25e573c0ae1e3)
DeltaFile
+10-1sys/dev/ixgbe/if_ix.c
+4-2sys/dev/ixgbe/if_sriov.c
+3-2sys/dev/ixgbe/ix_txrx.c
+17-53 files

FreeBSD/src 1b45a0ashare/man/man4 ix.4, sys/dev/ixgbe ixgbe.h ix_txrx.c

ixgbe: preserve VLAN ownership with SR-IOV

The VF VLAN capability is checked but never granted, and no SR-IOV
configuration property exposes the existing default-VLAN support. PF
VLAN updates also replace VFTA registers from a PF-only shadow, erasing
live VF filters.

Expose access VLAN and trunk policy through the IOV schema. Track each
VF VLAN as desired state, restore the administrative VLAN after reset,
and use the native VLVF helper for incremental PF and VF ownership
changes.

Keep VLAN filtering enabled while SR-IOV is active. When PF hardware
filtering is disabled, admit every VLAN to the PF without bypassing
per-pool VF isolation. Reconstruct VLVF and the shared VFTA from PF and
VF desired state after reset or a filtering-mode transition, and
restore PF-only state on teardown.

When the last VF leaves a VLAN still owned by the PF, free its VLVF

    [15 lines not shown]
DeltaFile
+201-21sys/dev/ixgbe/if_sriov.c
+149-69sys/dev/ixgbe/if_ix.c
+23-1share/man/man4/ix.4
+15-3sys/dev/ixgbe/ix_txrx.c
+5-1sys/dev/ixgbe/ixgbe.h
+393-955 files

FreeBSD/src fc2fcb0sys/dev/ixgbe ixgbe_sriov.h if_sriov.c

ixgbe: enforce configured VF anti-spoofing

The SR-IOV schema advertises MAC anti-spoofing and enables it by
default, but the VF configuration was never consumed and the hardware
policy remained disabled.

Record the configured policy and apply MAC and VLAN anti-spoofing
throughout VF initialization and reset. On X550-family devices, also
protect the LLDP and flow-control Ethertypes and enable per-VF
spoof-event accounting. Remove the driver-owned state during SR-IOV
teardown.

Adapt the anti-spoof configuration lifecycle used by igb(4) in
a2ed165f0049 to the ixgbe hardware controls.

Relnotes:       yes

(cherry picked from commit 7d3d6309398ebeb4d60e35535160c722cd25f9bb)
DeltaFile
+50-0sys/dev/ixgbe/if_sriov.c
+1-0sys/dev/ixgbe/ixgbe_sriov.h
+51-02 files

FreeBSD/src 180a03fsys/dev/ixgbe ixgbe_sriov.h ixgbe.h

ixgbe: rebuild the shared multicast table

The MTA is shared by the PF and all VFs. The VF mailbox handler only
ORs new bits, so hashes survive list removal and VF reset. Conversely,
PF multicast updates replace the whole table with PF-only state and
discard live VF filters.

Rebuild the table from the PF list and every active VF whenever either
changes. Clear VF multicast state during reset and PF reinitialization,
and remove all VF hashes on SR-IOV teardown. Keep the software shadow
and multicast control state synchronized, and avoid writes to unchanged
MTA registers.

Adapt the aggregate desired-state rebuild introduced for igb(4) in
a2ed165f0049 and its write-elision scheme from 350211ab1782 to ixgbe's
shared MTA.

(cherry picked from commit 1a180b4c86fc7534596cfbe451e25e403db81666)
DeltaFile
+77-8sys/dev/ixgbe/if_ix.c
+23-22sys/dev/ixgbe/if_sriov.c
+1-0sys/dev/ixgbe/ixgbe_sriov.h
+1-0sys/dev/ixgbe/ixgbe.h
+102-304 files

FreeBSD/src da1cc3esys/dev/ixgbe if_ixv.c

ixv: reconcile the PF-approved MAC address

The shared VF set-RAR helper restores hw.mac.addr when the PF rejects a
requested address, but ixv ignores the error and leaves the interface
link-layer address unchanged. Subsequent initialization repeats the
rejected request while the interface appears to use an address the PF
will not deliver.

Refresh the permanent address returned by the PF after every successful
reset handshake. Copy the resulting PF-approved address back to the
interface and emit the normal link-layer address notification without
re-entering the driver initialization path. This also recovers from a
prior mailbox transport failure or a PF-side reassignment.

Adapt the igb VF address reconciliation added in a6bb3850e7c6.

(cherry picked from commit 4c03feacd17199a4d8689e4415992111c99e6220)
DeltaFile
+26-0sys/dev/ixgbe/if_ixv.c
+26-01 files

FreeBSD/src f6c5fdfsys/dev/ixgbe if_ixv.c

ixv: defer every admin-vector interrupt

The VF admin vector carries both link and PF mailbox causes, but the
filter schedules the admin task only for link-status changes. Defer
administration for every interrupt so reset and control notifications
are serviced promptly.

(cherry picked from commit 5e05c40aff53f2adb366b3c30ff5b98aac0bb54a)
DeltaFile
+2-3sys/dev/ixgbe/if_ixv.c
+2-31 files

FreeBSD/src cd6f4b3sys/dev/pci pci.c

pci: Permit function-level reset of 82599 VFs

Intel 82599 supports FLR on VFs but reports FLR support only in the PF
Device Capabilities register.  The VF register therefore leaves the FLR
Capable bit clear, and pcie_flr() rejects the reset.

Intel documents the zeroed VF PCIe capability structure as erratum 35
in the 82599 Specification Update (B0=Yes; NoFix).

Add a positive FLR quirk for the 82599 VF.  Keep the capability check
for every other function, so an unknown nonconforming VF cannot make
pcie_flr() report success when its reset request was ignored.

SR-IOV requires VFs to support FLR, but a clear capability bit cannot
distinguish the 82599's misadvertisement from a VF that fails to
implement it.

(cherry picked from commit ee776a8e291cb73845a8611d3dec5a2a966106b9)
DeltaFile
+11-3sys/dev/pci/pci.c
+11-31 files

FreeBSD/src cafdeedshare/man/man4 pci.4, sys/dev/pci pci.c

pci: Ignore SR-IOV VFs when tuning MPS

The VF Device Control MPS and MRRS fields are reserved and preserved.
VF transactions use the PF MPS, so a hardwired VF value must not be
used to retune the shared PCIe hierarchy.

Document the previously undocumented tuning knob and clarify why a VF
may continue to display its reserved hardwired value.

This fixes an instant crash/reboot on my Zen3 system with 82599 VFs.

(cherry picked from commit 5aab6164161db397d84e5fff88e1af1a9e405875)
DeltaFile
+12-1share/man/man4/pci.4
+7-0sys/dev/pci/pci.c
+19-12 files

FreeBSD/src 5dfc962sys/dev/ixgbe ixgbe.h if_ixv.c

ixv: reconcile VLAN filters through the mailbox

VLAN registration callbacks only update the software shadow, leaving
the PF unaware until a later full initialization.  Initialization then
retries each failed request in a tight loop, while skipping replay
entirely when local hardware filtering is disabled.

Send additions and removals as soon as the desired state changes,
independent of the VF local-filter capability.  Replay the desired
memberships after reset and retry a bounded batch per timer tick.  Stop
after the first failure so a silent PF can consume only one mailbox
timeout per pass, while a responsive PF can drain several requests.
Treat the retry window as a no-progress deadline: advance it when
pending work succeeds so a large backlog can drain, but leave entries
dormant after a sustained failure.

A successful mailbox request wakes a dormant backlog.  Dispatch
timer-driven retries only while iflib marks the VF running, so a stale
timer tick cannot restore PF VLAN state after the stop path resets the

    [14 lines not shown]
DeltaFile
+210-54sys/dev/ixgbe/if_ixv.c
+4-0sys/dev/ixgbe/ixgbe.h
+214-542 files

FreeBSD/src 626a367share/man/man4 ix.4, sys/dev/ixgbe ixgbe_sriov.h ixgbe.h

ixgbe: implement VF secondary MAC filters

The PF advertises the legacy SET_MACVLAN mailbox request but always
rejects it. The request installs secondary unicast addresses.

Allocate an owned RAR pool for VF secondary addresses, reserve low
entries for PF filters, and place VF-primary addresses at the top of
the usable RAR range. Reject address collisions and cap each VF at
three secondary filters so one guest cannot exhaust the shared table.

Clear secondary filters on VF or PF reset and on SR-IOV teardown. This
hardware can anti-spoof only the VF primary source address. Reject
secondary filters while MAC anti-spoofing is configured, so installing
them requires an explicit administrative policy choice. Report optional
filter-table allocation failure without disabling SR-IOV.

Adapt the owned-RAR allocation and reset-cleanup model from igb(4) in
a2ed165f0049 to DPDK's ixgbe SET_MACVLAN mailbox semantics.


    [3 lines not shown]
DeltaFile
+149-5sys/dev/ixgbe/if_sriov.c
+10-0sys/dev/ixgbe/ixgbe.h
+10-0share/man/man4/ix.4
+2-0sys/dev/ixgbe/ixgbe_sriov.h
+171-54 files

FreeBSD/src 1ff1416sys/dev/ixgbe ixgbe_vf.c ixgbe.h

ixgbe: enforce VF promiscuity and multicast policy

The allow-promisc IOV property is advertised but ignored, and the PF
rejects the xcast request used by modern VFs. Negotiate mailbox APIs
1.2 and 1.3, implement pool-scoped xcast modes, and require
allow-promisc for requested all-multicast or unicast-promiscuous modes.

The VF mailbox can carry only 30 multicast hashes. When ixv has a
larger list, request the API 1.2 all-multicast xcast mode instead of
extending the legacy SET_MULTICAST message. The PF grants that fallback
only to VFs configured with allow-promisc; otherwise ixv reports that
only the first 30 addresses are active.

Reset xcast state with the VF and have ixv replay the mode implied by
its interface flags after multicast updates.

Follow DPDK's ixgbe API 1.2/1.3 xcast contract, with allow-promisc
policy adapted from igb(4) in a2ed165f0049.


    [3 lines not shown]
DeltaFile
+90-26sys/dev/ixgbe/if_sriov.c
+48-1sys/dev/ixgbe/if_ixv.c
+3-0sys/dev/ixgbe/ixgbe_sriov.h
+1-1sys/dev/ixgbe/ixgbe_vf.c
+2-0sys/dev/ixgbe/ixgbe.h
+144-285 files

FreeBSD/src df7e516sys/dev/ixgbe ix_txrx.c if_sriov.c

ixgbe: Preserve priority-tagged traffic with SR-IOV

VID 0 carries only 802.1p priority and does not identify VLAN
membership. Keep VFTA bit zero in the persistent PF shadow table so
reset and SR-IOV replay admit priority-tagged frames while VLAN
filtering is enabled.

In virtualization mode, also reserve VLVF slot zero and restore PF and
eligible VF pool memberships. A VFTA hit alone admits the tag globally
but does not deliver it to the correct pools.

This matches the priority-tag treatment in em/igb.

(cherry picked from commit caa08ed331da02a91f95472193e25e573c0ae1e3)
DeltaFile
+10-1sys/dev/ixgbe/if_ix.c
+4-2sys/dev/ixgbe/if_sriov.c
+3-2sys/dev/ixgbe/ix_txrx.c
+17-53 files

FreeBSD/src 06a514bshare/man/man4 ix.4, sys/dev/ixgbe ixgbe.h ix_txrx.c

ixgbe: preserve VLAN ownership with SR-IOV

The VF VLAN capability is checked but never granted, and no SR-IOV
configuration property exposes the existing default-VLAN support. PF
VLAN updates also replace VFTA registers from a PF-only shadow, erasing
live VF filters.

Expose access VLAN and trunk policy through the IOV schema. Track each
VF VLAN as desired state, restore the administrative VLAN after reset,
and use the native VLVF helper for incremental PF and VF ownership
changes.

Keep VLAN filtering enabled while SR-IOV is active. When PF hardware
filtering is disabled, admit every VLAN to the PF without bypassing
per-pool VF isolation. Reconstruct VLVF and the shared VFTA from PF and
VF desired state after reset or a filtering-mode transition, and
restore PF-only state on teardown.

When the last VF leaves a VLAN still owned by the PF, free its VLVF

    [15 lines not shown]
DeltaFile
+201-21sys/dev/ixgbe/if_sriov.c
+149-69sys/dev/ixgbe/if_ix.c
+23-1share/man/man4/ix.4
+15-3sys/dev/ixgbe/ix_txrx.c
+5-1sys/dev/ixgbe/ixgbe.h
+393-955 files

FreeBSD/src 59bd5fcsys/dev/ixgbe ixgbe_sriov.h if_sriov.c

ixgbe: enforce configured VF anti-spoofing

The SR-IOV schema advertises MAC anti-spoofing and enables it by
default, but the VF configuration was never consumed and the hardware
policy remained disabled.

Record the configured policy and apply MAC and VLAN anti-spoofing
throughout VF initialization and reset. On X550-family devices, also
protect the LLDP and flow-control Ethertypes and enable per-VF
spoof-event accounting. Remove the driver-owned state during SR-IOV
teardown.

Adapt the anti-spoof configuration lifecycle used by igb(4) in
a2ed165f0049 to the ixgbe hardware controls.

Relnotes:       yes

(cherry picked from commit 7d3d6309398ebeb4d60e35535160c722cd25f9bb)
DeltaFile
+50-0sys/dev/ixgbe/if_sriov.c
+1-0sys/dev/ixgbe/ixgbe_sriov.h
+51-02 files

FreeBSD/src bc00b34sys/dev/ixgbe ixgbe_sriov.h ixgbe.h

ixgbe: rebuild the shared multicast table

The MTA is shared by the PF and all VFs. The VF mailbox handler only
ORs new bits, so hashes survive list removal and VF reset. Conversely,
PF multicast updates replace the whole table with PF-only state and
discard live VF filters.

Rebuild the table from the PF list and every active VF whenever either
changes. Clear VF multicast state during reset and PF reinitialization,
and remove all VF hashes on SR-IOV teardown. Keep the software shadow
and multicast control state synchronized, and avoid writes to unchanged
MTA registers.

Adapt the aggregate desired-state rebuild introduced for igb(4) in
a2ed165f0049 and its write-elision scheme from 350211ab1782 to ixgbe's
shared MTA.

(cherry picked from commit 1a180b4c86fc7534596cfbe451e25e403db81666)
DeltaFile
+77-8sys/dev/ixgbe/if_ix.c
+23-22sys/dev/ixgbe/if_sriov.c
+1-0sys/dev/ixgbe/ixgbe_sriov.h
+1-0sys/dev/ixgbe/ixgbe.h
+102-304 files

FreeBSD/src 07b73c3sys/dev/ixgbe if_ixv.c

ixv: reconcile the PF-approved MAC address

The shared VF set-RAR helper restores hw.mac.addr when the PF rejects a
requested address, but ixv ignores the error and leaves the interface
link-layer address unchanged. Subsequent initialization repeats the
rejected request while the interface appears to use an address the PF
will not deliver.

Refresh the permanent address returned by the PF after every successful
reset handshake. Copy the resulting PF-approved address back to the
interface and emit the normal link-layer address notification without
re-entering the driver initialization path. This also recovers from a
prior mailbox transport failure or a PF-side reassignment.

Adapt the igb VF address reconciliation added in a6bb3850e7c6.

(cherry picked from commit 4c03feacd17199a4d8689e4415992111c99e6220)
DeltaFile
+26-0sys/dev/ixgbe/if_ixv.c
+26-01 files

FreeBSD/src cc03ff9sys/dev/ixgbe if_ixv.c

ixv: defer every admin-vector interrupt

The VF admin vector carries both link and PF mailbox causes, but the
filter schedules the admin task only for link-status changes. Defer
administration for every interrupt so reset and control notifications
are serviced promptly.

(cherry picked from commit 5e05c40aff53f2adb366b3c30ff5b98aac0bb54a)
DeltaFile
+2-3sys/dev/ixgbe/if_ixv.c
+2-31 files