From patchwork Tue Jan 13 19:52:43 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dhananjay Phadke X-Patchwork-Id: 18278 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.176.167]) by ozlabs.org (Postfix) with ESMTP id 12A08474C8 for ; Wed, 14 Jan 2009 06:53:22 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753756AbZAMTw6 (ORCPT ); Tue, 13 Jan 2009 14:52:58 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753606AbZAMTwz (ORCPT ); Tue, 13 Jan 2009 14:52:55 -0500 Received: from nxgate.netxen.com ([38.99.60.130]:60179 "EHLO unm84.unmin.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752544AbZAMTws (ORCPT ); Tue, 13 Jan 2009 14:52:48 -0500 Received: by unm84.unmin.com (Postfix, from userid 720) id EE24BE8F7A; Tue, 13 Jan 2009 11:52:44 -0800 (PST) From: Dhananjay Phadke To: netdev@vger.kernel.org Cc: davem@davemloft.net Subject: [PATCHv2 6/7] netxen: hold tx lock while sending firmware commands Date: Tue, 13 Jan 2009 11:52:43 -0800 Message-Id: <1231876364-866-7-git-send-email-dhananjay@netxen.com> X-Mailer: git-send-email 1.6.0.2 In-Reply-To: <1231876364-866-1-git-send-email-dhananjay@netxen.com> References: <1231876364-866-1-git-send-email-dhananjay@netxen.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Some firmware commands like mac address addition/deletion are sent on the transmit ring. So need to hold the tx lock before touching tx producer/consumer indices. Signed-off-by: Dhananjay Phadke --- drivers/net/netxen/netxen_nic_hw.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c index e2d2a2f..821cff6 100644 --- a/drivers/net/netxen/netxen_nic_hw.c +++ b/drivers/net/netxen/netxen_nic_hw.c @@ -503,6 +503,8 @@ netxen_send_cmd_descs(struct netxen_adapter *adapter, i = 0; + netif_tx_lock_bh(adapter->netdev); + producer = adapter->cmd_producer; do { cmd_desc = &cmd_desc_arr[i]; @@ -527,6 +529,8 @@ netxen_send_cmd_descs(struct netxen_adapter *adapter, netxen_nic_update_cmd_producer(adapter, adapter->cmd_producer); + netif_tx_unlock_bh(adapter->netdev); + return 0; }