From patchwork Sat Feb 2 01:02:50 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 217634 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 E60F52C0292 for ; Sat, 2 Feb 2013 12:02:56 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756967Ab3BBBCy (ORCPT ); Fri, 1 Feb 2013 20:02:54 -0500 Received: from mail-qa0-f73.google.com ([209.85.216.73]:65360 "EHLO mail-qa0-f73.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756771Ab3BBBCw (ORCPT ); Fri, 1 Feb 2013 20:02:52 -0500 Received: by mail-qa0-f73.google.com with SMTP id g10so143273qah.0 for ; Fri, 01 Feb 2013 17:02:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:date:from:to:subject:message-id:user-agent:mime-version :content-type; bh=s5APjUK01mZ3RiOtJNiWamliLTHyGOSjTOERuCdkrlo=; b=OzbjI6N1eelLd/Vk8MWYbCCnyqy0uv/BWKmmre++fJ3JOXZkhl/RWQfz4ZsFO8A+wL xwt/5qkOT6QigS2VmIEoD+P4HaY6hsaTsiJFhNTNcSVeWo02523WK1P1/9VZA7psCvxe 9moSlGWYasjKAIVtEwjwvm5m1PcKC10VYlEWQ8yo8M/cVCAWSB1FpKrV1LZlPJhFf7qm lI1WEJ01ySqidkBzvOrtm6cjOx5x0bDAKLgwMrEUGYvUtHST3o1l8vZcq4jl7jmEslrr VKGsI1DqMyZnc21ECXVShKCnh2zsfPZ0LTeyISyT62FCIxptVheyCWJY6nNpZ4rgF9nE mt4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:date:from:to:subject:message-id:user-agent:mime-version :content-type:x-gm-message-state; bh=s5APjUK01mZ3RiOtJNiWamliLTHyGOSjTOERuCdkrlo=; b=Wgcesga5s3zyV2ZGoft01oGnNZxhKbgrbr8NrOXgZBTMEIQTZiz2ClN940NRqZwY/L ho3boauBBKePTuqlMbLOlXDXLDL6FYd4unqaPACFlekJp9lzCiXVBka6ksC2TYYI95f8 /Nh7VkVbMkGErbzkigXQQyR3WTHAK/0rq4ZqiyNL4M0YBsZe0TzZ48TaGaf4jev4wRP0 UW7Brpy5iGr2aq0NbjlmjpA1rkMhid//0aZWKt0hRXIB6HLAiaTGy6dcTwO+WDm7dFSi m6ebLU5yYlf4xAl4jz/7sYOhVO5QmT+I9TUBtwFqSWSsWkTC2UsCzoaLG8n2VjkAbrjP n1Qw== X-Received: by 10.101.142.22 with SMTP id u22mr1589295ann.21.1359766971927; Fri, 01 Feb 2013 17:02:51 -0800 (PST) Received: from corp2gmr1-2.hot.corp.google.com (corp2gmr1-2.hot.corp.google.com [172.24.189.93]) by gmr-mx.google.com with ESMTPS id s58si411710yhi.6.2013.02.01.17.02.51 (version=TLSv1.1 cipher=AES128-SHA bits=128/128); Fri, 01 Feb 2013 17:02:51 -0800 (PST) Received: from pokey.mtv.corp.google.com (pokey.mtv.corp.google.com [172.17.131.25]) by corp2gmr1-2.hot.corp.google.com (Postfix) with ESMTP id C44315A406B; Fri, 1 Feb 2013 17:02:51 -0800 (PST) Received: by pokey.mtv.corp.google.com (Postfix, from userid 60832) id 568EE22F042; Fri, 1 Feb 2013 17:02:51 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by pokey.mtv.corp.google.com (Postfix) with ESMTP id 0942C22F025; Fri, 1 Feb 2013 17:02:51 -0800 (PST) Date: Fri, 1 Feb 2013 17:02:50 -0800 (PST) From: Tom Herbert To: yevgenyp@mellanox.com, davem@davemloft.net, netdev@vger.kernel.org Subject: [PATCH net-next] mlx4_en: Change BQL reset TX queue call point Message-ID: User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 X-Gm-Message-State: ALoCoQnOXS157Pd7wIOJVABddGtdHEZhzbSWlq0u3FnkBJ7EIjHRbf/RCrIvFMU2rIAqPVLO2U+tUrEqTPynCtH4L0o0D/PJoqdz2qb2OZdeKL2KSjPFWncJE98o6JAzXq3FK8nVZOZm870wXvKtE1t5F8QI1b1sefetPOizy0pAXtat5DeOmXs9pwS0zGsUSkQjTen6VM+b Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Fix issue in Mellanox driver related to BQL. netdev_tx_reset_queue was not being called in certain situations where the device was being start and stopped. Moved netdev_tx_reset_queue from the reset device path to mlx4_en_free_tx_buf which is where the rings are cleaned in a reset (specifically from device being stopped). Signed-off-by: Tom Herbert Acked-by: Amir Vadai --- drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 3 --- drivers/net/ethernet/mellanox/mlx4/en_tx.c | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c index b467513..075fdff 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c @@ -1284,15 +1284,12 @@ static void mlx4_en_restart(struct work_struct *work) watchdog_task); struct mlx4_en_dev *mdev = priv->mdev; struct net_device *dev = priv->dev; - int i; en_dbg(DRV, priv, "Watchdog task called for port %d\n", priv->port); mutex_lock(&mdev->state_lock); if (priv->port_up) { mlx4_en_stop_port(dev); - for (i = 0; i < priv->tx_ring_num; i++) - netdev_tx_reset_queue(priv->tx_ring[i].tx_queue); if (mlx4_en_start_port(dev)) en_err(priv, "Failed restarting port %d\n", priv->port); } diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c index c579311..3c17732 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c @@ -294,6 +294,8 @@ int mlx4_en_free_tx_buf(struct net_device *dev, struct mlx4_en_tx_ring *ring) cnt++; } + netdev_tx_reset_queue(ring->tx_queue); + if (cnt) en_dbg(DRV, priv, "Freed %d uncompleted tx descriptors\n", cnt);