From: Nick Child <nnac123@linux.ibm.com>
To: Jakub Kicinski <kuba@kernel.org>
Cc: netdev@vger.kernel.org, haren@linux.ibm.com, ricklind@us.ibm.com
Subject: Re: [PATCH net] ibmvnic: Do not reset dql stats on NON_FATAL err
Date: Mon, 26 Jun 2023 10:45:38 -0500 [thread overview]
Message-ID: <25e42e2a-4662-e00a-e274-a6887aaae9d6@linux.ibm.com> (raw)
In-Reply-To: <20230624151911.7442620c@kernel.org>
On 6/24/23 17:19, Jakub Kicinski wrote:
> On Thu, 22 Jun 2023 14:03:32 -0500 Nick Child wrote:
>> + if (adapter->reset_reason == VNIC_RESET_NON_FATAL)
>> + clear_bit(__QUEUE_STATE_STACK_XOFF,
>> + &netdev_get_tx_queue(netdev, i)->state);
>
> Why are you trying to clear this bit?
>
> If the completions will still come the bit will be cleared (or not)
> during completion handling (netdev_tx_completed_queue() et al.)
>
> Drivers shouldn't be poking into queue state bits directly.
Most likely, yes there could be some bytes that will get a completion
which would clear this bit.
That being said, it is also possible that all bytes sent to the NIC are
already completed. In which case we would not get a completion. The
ibmvnic driver sends its skb's to the NIC in batches, it makes a call to
netdev_tx_sent_queue on every time an skb is added to the batch. This is
not necessarily every-time that the batch is sent to the NIC.
I am not sure what number of bytes causes dql to set
__QUEUE_STATE_STACK_XOFF but I do know that it is possible for up to 15
skb's to be sitting in the queues batch. If there are no outstanding
bytes on the NIC (ie not expecting a tx completion) and the internal
batch has 15 references per queue, is this enough to enforce dql and set
__QUEUE_STATE_STACK_XOFF? If so, then we must clear
__QUEUE_STATE_STACK_XOFF when resetting.
I had a feeling this would raise some eyebrows. The main intent is to do
everything that netdev_tx_reset_queue() does besides resetting
statistics. Setting a "*STACK*" flag in driver code feels wrong
(especially since a *DRV* flag exists) but I could not find an
appropriate upper-level function. I suppose an alternative is to read
this flag after the device finishes the reset and sending the batch if
it is set. Is this any better?
As always, thanks for the review.
Nick
next prev parent reply other threads:[~2023-06-26 15:46 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-22 19:03 [PATCH net] ibmvnic: Do not reset dql stats on NON_FATAL err Nick Child
2023-06-23 7:52 ` Simon Horman
2023-06-23 12:41 ` Simon Horman
2023-06-23 12:24 ` Rick Lindsley
2023-06-24 22:19 ` Jakub Kicinski
2023-06-26 15:45 ` Nick Child [this message]
2023-06-26 17:33 ` Jakub Kicinski
2023-06-26 19:23 ` Nick Child
2023-06-26 19:06 ` Rick Lindsley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=25e42e2a-4662-e00a-e274-a6887aaae9d6@linux.ibm.com \
--to=nnac123@linux.ibm.com \
--cc=haren@linux.ibm.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=ricklind@us.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).