From: Jon Mason <jon.mason@intel.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
Dave Jiang <dave.jiang@intel.com>,
Nicholas Bellinger <nab@linux-iscsi.org>
Subject: [PATCH 13/21] NTB: Out of free receive entries issue
Date: Sat, 19 Jan 2013 02:02:27 -0700 [thread overview]
Message-ID: <1358586155-23322-14-git-send-email-jon.mason@intel.com> (raw)
In-Reply-To: <1358586155-23322-1-git-send-email-jon.mason@intel.com>
If the NTB client driver enqueues the maximum number of rx buffers, it
will not be able to re-enqueue another in its callback handler due to a
lack of free entries. This can be avoided by adding the current entry
to the free queue prior to calling the client callback handler. With
this change, ntb_netdev will no longer encounter a rx error on its first
packet.
Signed-off-by: Jon Mason <jon.mason@intel.com>
---
drivers/ntb/ntb_transport.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/ntb/ntb_transport.c b/drivers/ntb/ntb_transport.c
index 69c58da..b3afb24 100644
--- a/drivers/ntb/ntb_transport.c
+++ b/drivers/ntb/ntb_transport.c
@@ -910,12 +910,15 @@ void ntb_transport_free(void *transport)
static void ntb_rx_copy_task(struct ntb_transport_qp *qp,
struct ntb_queue_entry *entry, void *offset)
{
- memcpy(entry->buf, offset, entry->len);
+ void *cb_data = entry->cb_data;
+ unsigned int len = entry->len;
- if (qp->rx_handler && qp->client_ready == NTB_LINK_UP)
- qp->rx_handler(qp, qp->cb_data, entry->cb_data, entry->len);
+ memcpy(entry->buf, offset, entry->len);
ntb_list_add(&qp->ntb_rx_free_q_lock, &entry->entry, &qp->rx_free_q);
+
+ if (qp->rx_handler && qp->client_ready == NTB_LINK_UP)
+ qp->rx_handler(qp, qp->cb_data, cb_data, len);
}
static int ntb_process_rxc(struct ntb_transport_qp *qp)
--
1.7.9.5
next prev parent reply other threads:[~2013-01-19 9:02 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-19 9:02 [PATCH 0/21] NTB and ntb_netdev patches Jon Mason
2013-01-19 9:02 ` [PATCH 01/21] NTB: correct missing readq/writeq errors Jon Mason
2013-01-20 23:40 ` Greg KH
2013-01-21 17:38 ` Jon Mason
2013-01-21 18:23 ` Greg KH
2013-01-21 20:34 ` Ben Hutchings
2013-01-21 20:47 ` Greg KH
2013-01-19 9:02 ` [PATCH 02/21] NTB: Handle ntb client device probes without present hardware Jon Mason
2013-01-19 9:02 ` [PATCH 03/21] NTB: correct memory barrier Jon Mason
2013-01-19 9:02 ` [PATCH 04/21] NTB: separate transmit and receive windows Jon Mason
2013-01-19 9:02 ` [PATCH 05/21] NTB: No sleeping in interrupt context Jon Mason
2013-01-19 9:02 ` [PATCH 06/21] NTB: use simple_open for debugfs Jon Mason
2013-01-19 9:02 ` [PATCH 07/21] NTB: zero PCI driver data Jon Mason
2013-01-20 23:41 ` Greg KH
2013-01-19 9:02 ` [PATCH 08/21] NTB: declare unused variables Jon Mason
2013-01-20 23:42 ` Greg KH
2013-01-21 17:50 ` Jon Mason
2013-01-21 18:25 ` Greg KH
2013-01-19 9:02 ` [PATCH 09/21] NTB: namespacecheck cleanups Jon Mason
2013-01-19 9:02 ` [PATCH 10/21] NTB: whitespace cleanups Jon Mason
2013-01-19 9:02 ` [PATCH 11/21] NTB: correct stack usage warning in debugfs_read Jon Mason
2013-01-19 9:02 ` [PATCH 12/21] NTB: Remove reads across NTB Jon Mason
2013-01-19 9:02 ` Jon Mason [this message]
2013-01-19 9:02 ` [PATCH 14/21] NTB: Fix Sparse Warnings Jon Mason
2013-01-20 23:45 ` Greg KH
2013-01-21 21:13 ` Jon Mason
2013-01-21 21:37 ` Greg KH
2013-01-21 22:28 ` Jon Mason
2013-01-19 9:02 ` [PATCH 15/21] NTB: Update Version Jon Mason
2013-01-20 23:47 ` Greg KH
2013-01-21 17:57 ` Jon Mason
2013-01-21 18:26 ` Greg KH
2013-01-19 9:02 ` [PATCH 16/21] ntb_netdev: remove init/exit from probe/remove Jon Mason
2013-01-19 9:02 ` [PATCH 17/21] ntb_netdev: correct skb leak Jon Mason
2013-01-19 9:02 ` [PATCH 18/21] ntb_netdev: remove tx timeout Jon Mason
2013-01-19 9:02 ` [PATCH 19/21] ntb_netdev: declare unused variables and fix missing initializer Jon Mason
2013-01-20 23:47 ` Greg KH
2013-01-19 9:02 ` [PATCH 20/21] ntb_netdev: improve logging Jon Mason
2013-01-19 18:51 ` Joe Perches
2013-01-19 9:02 ` [PATCH 21/21] ntb_netdev: Update Version Jon Mason
2013-01-20 23:48 ` [PATCH 0/21] NTB and ntb_netdev patches Greg KH
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=1358586155-23322-14-git-send-email-jon.mason@intel.com \
--to=jon.mason@intel.com \
--cc=dave.jiang@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nab@linux-iscsi.org \
--cc=netdev@vger.kernel.org \
/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).