Enabling Flow Director reduces the Rx packet buffer 0 to reserve memory for the filter table, but the size was computed from the current register value and never restored when FDIR was no longer used. Since the FDIR mode is reset when the last rule is removed, on flush, or when enabling FDIR fails, the next rule enabled FDIR again and shrank the buffer once more, until it underflowed. Validating a rule also enabled FDIR.
Patch 1 computes the buffer size from the default packet buffer size, which alone stops the repeated reduction. Patch 2 stops enabling FDIR from flow validate and rolls back the mode when the first rule fails. Patch 3 disables FDIR and restores the buffer when no rule is left. The same issue was fixed in ixgbe: <https://patches.dpdk.org/project/dpdk/patch/[email protected]> Compile tested only. Zhang Tengfei (3): net/txgbe: fix Rx packet buffer size with flow director net/txgbe: do not enable flow director on flow validate net/txgbe: disable flow director when no rule is left drivers/net/txgbe/txgbe_ethdev.h | 1 + drivers/net/txgbe/txgbe_fdir.c | 36 +++++++++++++++---- drivers/net/txgbe/txgbe_flow.c | 60 +++++++++++++++++--------------- 3 files changed, 62 insertions(+), 35 deletions(-) -- 2.53.0

