From: Dust Li <dust.li@linux.alibaba.com>
To: Karsten Graul <kgraul@linux.ibm.com>,
davem@davemloft.net, kuba@kernel.org
Cc: Guangguan Wang <guangguan.wang@linux.alibaba.com>,
Leon Romanovsky <leon@kernel.org>,
netdev@vger.kernel.org, linux-s390@vger.kernel.org,
linux-rdma@vger.kernel.org
Subject: [PATCH net-next] Revert "net/smc: don't req_notify until all CQEs drained"
Date: Fri, 4 Mar 2022 17:17:19 +0800 [thread overview]
Message-ID: <20220304091719.48340-1-dust.li@linux.alibaba.com> (raw)
This reverts commit a505cce6f7cfaf2aa2385aab7286063c96444526.
Leon says:
We already discussed that. SMC should be changed to use
RDMA CQ pool API
drivers/infiniband/core/cq.c.
ib_poll_handler() has much better implementation (tracing,
IRQ rescheduling, proper error handling) than this SMC variant.
Since we will switch to ib_poll_handler() in the future,
revert this patch.
Link: https://lore.kernel.org/netdev/20220301105332.GA9417@linux.alibaba.com/
Suggested-by: Leon Romanovsky <leon@kernel.org>
Suggested-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: Dust Li <dust.li@linux.alibaba.com>
---
net/smc/smc_wr.c | 49 +++++++++++++++++++++---------------------------
1 file changed, 21 insertions(+), 28 deletions(-)
diff --git a/net/smc/smc_wr.c b/net/smc/smc_wr.c
index 34d616406d51..24be1d03fef9 100644
--- a/net/smc/smc_wr.c
+++ b/net/smc/smc_wr.c
@@ -137,28 +137,25 @@ static void smc_wr_tx_tasklet_fn(struct tasklet_struct *t)
{
struct smc_ib_device *dev = from_tasklet(dev, t, send_tasklet);
struct ib_wc wc[SMC_WR_MAX_POLL_CQE];
- int i, rc;
+ int i = 0, rc;
+ int polled = 0;
again:
+ polled++;
do {
memset(&wc, 0, sizeof(wc));
rc = ib_poll_cq(dev->roce_cq_send, SMC_WR_MAX_POLL_CQE, wc);
+ if (polled == 1) {
+ ib_req_notify_cq(dev->roce_cq_send,
+ IB_CQ_NEXT_COMP |
+ IB_CQ_REPORT_MISSED_EVENTS);
+ }
+ if (!rc)
+ break;
for (i = 0; i < rc; i++)
smc_wr_tx_process_cqe(&wc[i]);
- if (rc < SMC_WR_MAX_POLL_CQE)
- /* If < SMC_WR_MAX_POLL_CQE, the CQ should have been
- * drained, no need to poll again. --Guangguan Wang
- */
- break;
} while (rc > 0);
-
- /* IB_CQ_REPORT_MISSED_EVENTS make sure if ib_req_notify_cq() returns
- * 0, it is safe to wait for the next event.
- * Else we must poll the CQ again to make sure we won't miss any event
- */
- if (ib_req_notify_cq(dev->roce_cq_send,
- IB_CQ_NEXT_COMP |
- IB_CQ_REPORT_MISSED_EVENTS))
+ if (polled == 1)
goto again;
}
@@ -481,28 +478,24 @@ static void smc_wr_rx_tasklet_fn(struct tasklet_struct *t)
{
struct smc_ib_device *dev = from_tasklet(dev, t, recv_tasklet);
struct ib_wc wc[SMC_WR_MAX_POLL_CQE];
+ int polled = 0;
int rc;
again:
+ polled++;
do {
memset(&wc, 0, sizeof(wc));
rc = ib_poll_cq(dev->roce_cq_recv, SMC_WR_MAX_POLL_CQE, wc);
- if (rc > 0)
- smc_wr_rx_process_cqes(&wc[0], rc);
- if (rc < SMC_WR_MAX_POLL_CQE)
- /* If < SMC_WR_MAX_POLL_CQE, the CQ should have been
- * drained, no need to poll again. --Guangguan Wang
- */
+ if (polled == 1) {
+ ib_req_notify_cq(dev->roce_cq_recv,
+ IB_CQ_SOLICITED_MASK
+ | IB_CQ_REPORT_MISSED_EVENTS);
+ }
+ if (!rc)
break;
+ smc_wr_rx_process_cqes(&wc[0], rc);
} while (rc > 0);
-
- /* IB_CQ_REPORT_MISSED_EVENTS make sure if ib_req_notify_cq() returns
- * 0, it is safe to wait for the next event.
- * Else we must poll the CQ again to make sure we won't miss any event
- */
- if (ib_req_notify_cq(dev->roce_cq_recv,
- IB_CQ_SOLICITED_MASK |
- IB_CQ_REPORT_MISSED_EVENTS))
+ if (polled == 1)
goto again;
}
--
2.19.1.3.ge56e4f7
next reply other threads:[~2022-03-04 9:17 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-04 9:17 Dust Li [this message]
2022-03-04 17:12 ` [PATCH net-next] Revert "net/smc: don't req_notify until all CQEs drained" Leon Romanovsky
2022-03-06 11:00 ` patchwork-bot+netdevbpf
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=20220304091719.48340-1-dust.li@linux.alibaba.com \
--to=dust.li@linux.alibaba.com \
--cc=davem@davemloft.net \
--cc=guangguan.wang@linux.alibaba.com \
--cc=kgraul@linux.ibm.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=linux-s390@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.