From patchwork Tue Feb 18 12:26:11 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hariprasad Shenai X-Patchwork-Id: 321480 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id AA2782C00D2 for ; Wed, 19 Feb 2014 00:36:42 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755205AbaBRNgH (ORCPT ); Tue, 18 Feb 2014 08:36:07 -0500 Received: from stargate.chelsio.com ([67.207.112.58]:31324 "EHLO stargate.asicdesigners.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754609AbaBRNgG (ORCPT ); Tue, 18 Feb 2014 08:36:06 -0500 X-Greylist: delayed 3698 seconds by postgrey-1.27 at vger.kernel.org; Tue, 18 Feb 2014 08:36:05 EST Received: from maui.asicdesigners.com (maui.asicdesigners.com [10.192.180.15]) by stargate.asicdesigners.com (8.14.4/8.14.4) with SMTP id s1ICYZBI006103; Tue, 18 Feb 2014 04:34:35 -0800 Received: from strawberry.blr.asicdesigners.com.com ([10.193.185.96]) by maui.asicdesigners.com with Microsoft SMTPSVC(6.0.3790.4675); Tue, 18 Feb 2014 04:34:35 -0800 From: Hariprasad Shenai To: netdev@vger.kernel.org Cc: davem@davemloft.net, dm@chelsio.com, leedom@chelsio.com, nirranjan@chelsio.com, kumaras@chelsio.com, santosh@chelsio.com, hariprasad@chelsio.com Subject: [PATCH net-next 4/8] cxgb4: LE-Workaround is not atomic in firmware Date: Tue, 18 Feb 2014 17:56:11 +0530 Message-Id: <1392726375-32001-5-git-send-email-hariprasad@chelsio.com> X-Mailer: git-send-email 1.8.0 In-Reply-To: <1392726375-32001-1-git-send-email-hariprasad@chelsio.com> References: <1392726375-32001-1-git-send-email-hariprasad@chelsio.com> X-OriginalArrivalTime: 18 Feb 2014 12:34:35.0457 (UTC) FILETIME=[C80D3B10:01CF2CA5] Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Kumar Sanghvi The LE workaround in firmware is not atomic and fw_ofld_connection_wrs must not interleave. Therefore, when the workaround is enabled, we need to send all ctrlq WRs on a single ctrl queue. Based on original work by Santosh Rastapur Signed-off-by: Kumar Sanghvi --- drivers/net/ethernet/chelsio/cxgb4/sge.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c index 47ffa64..23dbe28 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/sge.c +++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c @@ -1467,8 +1467,12 @@ static inline int ofld_send(struct adapter *adap, struct sk_buff *skb) { unsigned int idx = skb_txq(skb); - if (unlikely(is_ctrl_pkt(skb))) + if (unlikely(is_ctrl_pkt(skb))) { + /* Single ctrl queue is a requirement for LE workaround path */ + if (adap->tids.nsftids) + idx = 0; return ctrl_xmit(&adap->sge.ctrlq[idx], skb); + } return ofld_xmit(&adap->sge.ofldtxq[idx], skb); }