Skip to content

Warn at XDP parallel start if the NIC firmware LLDP agent is active - #223

Open
jason-sirius wants to merge 1 commit into
LibtraceTeam:developfrom
jason-sirius:feat/warn-i40e-fw-lldp-rss
Open

Warn at XDP parallel start if the NIC firmware LLDP agent is active#223
jason-sirius wants to merge 1 commit into
LibtraceTeam:developfrom
jason-sirius:feat/warn-i40e-fw-lldp-rss

Conversation

@jason-sirius

Copy link
Copy Markdown

On Intel i40e/X710 NICs the firmware LLDP agent applies a default FCoE-aware DCB configuration that splits the queue pairs into two traffic classes (e.g. TC0 = queues 0-7, TC1 = queues 8-15). Hardware RSS only distributes within a traffic class, so the upper half of the receive queues, and the libtrace processing threads reading them, silently receive no packets. Every software-visible setting (channel count, RSS indirection table, sysfs queues) looks correct throughout, which makes this painful to diagnose: we lost several days to it and only found it via the driver's debugfs VSI dump (numtc=2).

Add linux_get_nic_fw_lldp_enabled(), which looks up the "disable-fw-lldp" private flag by name via ETHTOOL_GDRVINFO / ETHTOOL_GSTRINGS / ETHTOOL_GPFLAGS (driver-agnostic; returns -1 when the driver has no such flag), and warn from linux_xdp_pstart_input() with the one-line remedy (ethtool --set-priv-flags <if> disable-fw-lldp on, a persistent NVM write).

On Intel i40e/X710 NICs the firmware LLDP agent applies a default
FCoE-aware DCB configuration that splits the queue pairs into two
traffic classes (e.g. TC0 = queues 0-7, TC1 = queues 8-15). Hardware
RSS only distributes within a traffic class, so the upper half of the
receive queues -- and the libtrace processing threads reading them --
silently receive no packets. Every software-visible setting (channel
count, RSS indirection table, sysfs queues) looks correct throughout,
which makes this painful to diagnose: we lost several days to it and
only found it via the driver's debugfs VSI dump (numtc=2).

Add linux_get_nic_fw_lldp_enabled(), which looks up the
"disable-fw-lldp" private flag by name via ETHTOOL_GDRVINFO /
ETHTOOL_GSTRINGS / ETHTOOL_GPFLAGS (driver-agnostic; returns -1 when
the driver has no such flag), and warn from linux_xdp_pstart_input()
with the one-line remedy (ethtool --set-priv-flags <if>
disable-fw-lldp on, a persistent NVM write).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant