[PATCH net-next v2 0/6] enic: configure V2 VF addresses and receive mode
From: Satish Kharat
Date: Tue Sep 29 2026 - 15:00:11 EST
An ENIC V2 VF cannot program its station address or receive filters
directly. The PF owns those resources and exposes mailbox operations for
the VF to request changes. Add the VF control plane needed to use those
operations for station-address, address-list, and packet-filter
configuration.
The mailbox transport remains asynchronous: receive dispatch continues to
process replies and unsolicited PF notifications. The VF allows only one
request/reply transaction at a time because it stores one expected reply
and uses one completion. This serialization applies only to VF requests;
PF-side request processing is unchanged. Notifications and their
acknowledgments remain deferred and asynchronous.
The first patch adds a netdev helper for scheduling an immediate
receive-mode update with a new retry budget. Callers which need to replay
lost address state explicitly reset the corresponding synchronization state
before scheduling the update. The second patch serializes only VF requests.
The third patch recovers when a lost or malformed reply means that the VF
does not know which changes the PF applied. A hardware send timeout is
handled separately because the descriptor may still belong to the device.
The remaining patches add and validate the configuration operations,
manage station and administrative MAC changes, and install address lists
and packet-filter settings through the sleepable receive-mode path. Replies
are checked against the requested operation. If a station-address
replacement deletes the old address but fails to add the new one, the VF
registers again and rebuilds its mailbox state instead of assuming which
address the PF kept.
This is the VF-side receive-control series. It does not register
.sriov_configure, so the in-tree V2 PF path remains dormant. A later PF
activation series must implement the PF side of the MAC-address and
packet-filter mailbox requests, including the VF policy checks, before
wiring that callback.
AI assistance:
An LLM was used for design review, source review, commit-message
drafting, test automation, and review triage. Sashiko was used as an
additional review tool. All findings and generated changes were manually
reviewed, and the author takes responsibility for the series.
Validation:
- The exact v2 VF module against the deployed async PF passed 32 secondary
unicast addresses, station-address add/delete through the multicast list,
and fixed administrative-MAC enforcement across a close/open.
- Isolated test-only fault and timing controls verified bounded behavior
under persistent registration rejection, no reconnect after a coherent
generic MAC-operation rejection, convergence when an address changed
during receive-mode processing, and synchronous broad-to-exact filter
completion.
- With all injections disabled, the exact v2 VF passed 20 multicast
add/delete operations, three close/open cycles, statistics retrieval, and
bidirectional traffic. Bounded host and guest kernel-health scans found
no new fault report. The installed kernel was not rebuilt or rebooted.
Signed-off-by: Satish Kharat <satishkh@xxxxxxxxx>
---
Changes in v2:
- Rename the netdev helper to netif_rx_mode_schedule_update() and clarify
that it resets retry state and schedules reconciliation without itself
forcing a complete address-list replay.
- Stop a failed registration-recovery handshake from requeueing its own
reset worker indefinitely.
- Keep coherent generic MAC-operation failures as ordinary errors;
reconnect only after explicit registration loss or an indeterminate reply.
- Enforce a cached fixed administrative MAC while the VF is down and repair
an actual device-address mismatch during registration.
- Preserve compatibility with deployed async PFs at 32 secondary unicast
addresses and exclude the station address from both secondary lists.
- Complete receive-mode transitions in one callback so concurrent list
changes converge and synchronous operations return with filters
installed.
- Link to v1: https://patch.msgid.link/20260921-b4-enic-sriov-v2-vf-receive-control-v1-0-67a0a6e08d43@xxxxxxxxx
---
Satish Kharat (6):
net: add netif_rx_mode_schedule_update()
enic: serialize V2 VF mailbox requests
enic: recover V2 VF mailbox when PF state is unknown
enic: validate V2 VF configuration replies
enic: manage V2 VF station and administrative MAC
enic: configure V2 VF receive mode over mailbox
drivers/net/ethernet/cisco/enic/enic.h | 58 +-
drivers/net/ethernet/cisco/enic/enic_admin.c | 29 +-
drivers/net/ethernet/cisco/enic/enic_dev.c | 11 +
drivers/net/ethernet/cisco/enic/enic_dev.h | 1 +
drivers/net/ethernet/cisco/enic/enic_main.c | 1251 +++++++++++++++++++++++++-
drivers/net/ethernet/cisco/enic/enic_mbox.c | 739 ++++++++++++++-
drivers/net/ethernet/cisco/enic/enic_mbox.h | 84 ++
drivers/net/ethernet/cisco/enic/enic_rq.c | 11 +-
include/linux/netdevice.h | 1 +
net/core/dev_addr_lists.c | 21 +
10 files changed, 2126 insertions(+), 80 deletions(-)
---
base-commit: 8830e65ed46de41f849eefb8ba227d4852c460f6
change-id: 20260916-b4-enic-sriov-v2-vf-receive-control-b5c40bdae5b9
Best regards,
--
Satish Kharat <satishkh@xxxxxxxxx>