individual queue blocking entire rx unit on ixgbe (Re: How do I balance bandwidth over several virtual NICs?)
Luigi Rizzo
rizzo at iet.unipi.it
Wed Oct 1 20:27:24 UTC 2014
On Wed, Oct 01, 2014 at 10:37:35AM -0700, Adrian Chadd wrote:
> Hi,
>
> Try this on -HEAD. There were some recent fixes to ixgbe that haven't
> been RFCed.
I don't have a way to test this on HEAD.
Do you know if there is any change that could be related ?
On 10.1 beta 3 I noticed is that when I open a single queue on an ixgbe
(and with incoming traffic), the rx unit stalls no matter what the
previous state of dev.ix.*.fc (i.e. the DROP_EN bits) or QDE are.
In this state, toggling DROP_EN has no effect, whereas something that seems
effective is setting the QDE bit(s) in the PFQDE register for all queues,
_after_ i open the device.
>From the above my take is the following:
- on NIC reset, the SRRCTL register starts at 0 including DROP_EN;
same goes for PFQDE.QDE
- setting SRRCTL.DROP_EN must happen before the receive unit is started;
- conversely, toggling PFQDE.QDE has effect even when the receive
unit has started
- sysctl dev.ix.*.fc sets/clear DROP_EN but at the wrong time
(the right time seems to be the window between reset and start)
I am going to run more tests to figure out.
cheers
luigi
More information about the freebsd-net
mailing list