From patchwork Fri Feb 11 21:42:55 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Heinz X-Patchwork-Id: 550851 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p1BLh6cd027247 for ; Fri, 11 Feb 2011 21:43:07 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757012Ab1BKVnF (ORCPT ); Fri, 11 Feb 2011 16:43:05 -0500 Received: from cain.qlogic.com ([198.70.193.223]:38443 "EHLO cain.qlc.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756829Ab1BKVnE (ORCPT ); Fri, 11 Feb 2011 16:43:04 -0500 X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 11 Feb 2011 21:43:08 +0000 (UTC) X-Greylist: delayed 1765 seconds by postgrey-1.27 at vger.kernel.org; Fri, 11 Feb 2011 16:43:04 EST Received: from kop-sds-dev-02.qlogic.org (IDENT:U2FsdGVkX1/HYvaelgnPpDYs5lpLm7rbMBzXcM2hFC0@kop-sds-dev-02.qlogic.org [10.32.4.222]) by cain.qlc.com (8.13.7+Sun/8.12.10) with ESMTP id p1BLgtYW012557; Fri, 11 Feb 2011 13:42:55 -0800 (PST) Received: from kop-sds-dev-02.qlogic.org (localhost.localdomain [127.0.0.1]) by kop-sds-dev-02.qlogic.org (8.13.1/8.13.1) with ESMTP id p1BLgtqZ027609; Fri, 11 Feb 2011 16:42:55 -0500 Subject: [PATCH] ofed_kernel/net/rds/ib_send.c To: Roland Dreier From: Michael Heinz Cc: linux-rdma@vger.kernel.org Date: Fri, 11 Feb 2011 16:42:55 -0500 Message-ID: <20110211214255.27586.4904.stgit@kop-sds-dev-02.qlogic.org> User-Agent: StGit/0.15 MIME-Version: 1.0 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org diff --git a/net/rds/ib_send.c b/net/rds/ib_send.c index 71f373c..61a317e 100644 --- a/net/rds/ib_send.c +++ b/net/rds/ib_send.c @@ -286,10 +286,8 @@ void rds_ib_send_cq_comp_handler(struct ib_cq *cq, void *context) rdsdebug("cq %p conn %p\n", cq, conn); rds_ib_stats_inc(s_ib_tx_cq_call); - ret = ib_req_notify_cq(cq, IB_CQ_NEXT_COMP); - if (ret) - rdsdebug("ib_req_notify_cq send failed: %d\n", ret); +again: while (ib_poll_cq(cq, 1, &wc) > 0) { rdsdebug("wc wr_id 0x%llx status %u (%s) byte_len %u imm_data %u\n", (unsigned long long)wc.wr_id, wc.status, @@ -347,6 +345,12 @@ void rds_ib_send_cq_comp_handler(struct ib_cq *cq, void *context) rds_ib_wc_status_str(wc.status)); } } + ret = ib_req_notify_cq(cq, IB_CQ_NEXT_COMP | + IB_CQ_REPORT_MISSED_EVENTS); + if (ret > 0) + goto again; + if (ret < 0) + rdsdebug("ib_req_notify_cq send failed: %d\n", ret); } /*