get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/840490/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 840490,
    "url": "http://patchwork.ozlabs.org/api/patches/840490/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20171122185723.29785.8129.stgit@localhost.localdomain/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api",
        "name": "Intel Wired Ethernet development",
        "link_name": "intel-wired-lan",
        "list_id": "intel-wired-lan.osuosl.org",
        "list_email": "intel-wired-lan@osuosl.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20171122185723.29785.8129.stgit@localhost.localdomain>",
    "list_archive_url": null,
    "date": "2017-11-22T18:57:23",
    "name": "[jkirsher/next-queue,12/16] ixgbe: Do not manipulate macvlan Tx queues when performing macvlan offload",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "b39076102e3186f9e156f9cbd418074282dd0eda",
    "submitter": {
        "id": 252,
        "url": "http://patchwork.ozlabs.org/api/people/252/?format=api",
        "name": "Alexander Duyck",
        "email": "alexander.duyck@gmail.com"
    },
    "delegate": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/users/68/?format=api",
        "username": "jtkirshe",
        "first_name": "Jeff",
        "last_name": "Kirsher",
        "email": "jeffrey.t.kirsher@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20171122185723.29785.8129.stgit@localhost.localdomain/mbox/",
    "series": [
        {
            "id": 14756,
            "url": "http://patchwork.ozlabs.org/api/series/14756/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=14756",
            "date": "2017-11-22T18:56:10",
            "name": "ixgbe/fm10k: macvlan fixes",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/14756/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/840490/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/840490/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.137; helo=fraxinus.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"sF5q7urV\"; dkim-atps=neutral"
        ],
        "Received": [
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3yhsXm1vHTz9s1h\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 23 Nov 2017 06:12:40 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 9FCEA87A6E;\n\tWed, 22 Nov 2017 19:12:38 +0000 (UTC)",
            "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id tyokZaMJ2p6x; Wed, 22 Nov 2017 19:12:33 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id B74AC87A87;\n\tWed, 22 Nov 2017 19:12:32 +0000 (UTC)",
            "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id C70A01C2314\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 22 Nov 2017 18:57:25 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id C11FC888C8\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 22 Nov 2017 18:57:25 +0000 (UTC)",
            "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id jdk60gyJLELJ for <intel-wired-lan@lists.osuosl.org>;\n\tWed, 22 Nov 2017 18:57:24 +0000 (UTC)",
            "from mail-pg0-f68.google.com (mail-pg0-f68.google.com\n\t[74.125.83.68])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id C41FD888C7\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 22 Nov 2017 18:57:24 +0000 (UTC)",
            "by mail-pg0-f68.google.com with SMTP id 4so12969988pge.1\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tWed, 22 Nov 2017 10:57:24 -0800 (PST)",
            "from localhost.localdomain ([2001:470:b:9c3:9e5c:8eff:fe4f:f2d0])\n\tby smtp.gmail.com with ESMTPSA id\n\tu188sm27226599pfb.188.2017.11.22.10.57.23\n\tfor <intel-wired-lan@lists.osuosl.org>\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tWed, 22 Nov 2017 10:57:23 -0800 (PST)"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=subject:from:to:date:message-id:in-reply-to:references:user-agent\n\t:mime-version:content-transfer-encoding;\n\tbh=3njWjhclYzeGIwCK3rgOs8urBKMYJF5n+5+DL+NdINw=;\n\tb=sF5q7urVQzuDQzzAJhpfUNDOEAitJ9k7d7HrTL1THPZCEqPiDZXVGOaNOhllQOW2Ne\n\t1zf155wkRBB+EuwZFsAZfUraNFdQ0piDgiVwnVOYsV+1pEo+qAGdV09B8OaMS8eknNwf\n\t0WXVUZvq3r4ijkhEPbqVlsQbG/Xp2v4jU0QVsxvi2YaRnkRf3biBTLr4zzQk5RahY/gr\n\t0Kzrvbj+Cf9qr/uyj6UQ3It/M2l57N2RW9Q1lGBEgG+cEgt/NmuLCAk9WBiMdkxH67/T\n\tdm5K3Z0ZwdBS0nqb0pj/KMYE59pqSzYkSzcJu3lI6hfd389/iI61LsTDPazt+nTiD6sj\n\tjkZQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:from:to:date:message-id:in-reply-to\n\t:references:user-agent:mime-version:content-transfer-encoding;\n\tbh=3njWjhclYzeGIwCK3rgOs8urBKMYJF5n+5+DL+NdINw=;\n\tb=qaK6c/tH4Axr9ynK3wy2AfEStc+ZmqBu8Ul3skn4qaUEIWQ01eeeOXlmUaSRi4X7gQ\n\trmjyW1xw+fI6qGOD9q5AE59jTTYqL8FsORuieaPEehQZVWHLNWiFNAffwqxcA5yr7zsJ\n\tVS/iQX4h5NyUSrmIkeuA80d7URcZ3bMJOD2ynFhs2oVlo4MJ9xQqzH/YDwU+4Dk3x689\n\toWibxLomuNAxp/GPad/K661kCJkE/tr1vP7Zct9cNJE/c7tcVJsQZDZ4wLuOWrfymTfM\n\tdbr/A1RAfKl6EQgubChDCDGgNDQsOqCRXikoqsgMKIq8EUTjUVHDfe5oTQ6eweEI5PN4\n\t05GQ==",
        "X-Gm-Message-State": "AJaThX7H5TcYFx5nGJ6MZxWvvgylV3klT/ZhPe/tinLh5imhcolPm95P\n\tf41NJN4YJChLPGwR9a8ohsOQNUoR",
        "X-Google-Smtp-Source": "AGs4zMbtzYN6FrdYClqvPziUD+ONth0qTVvkrVVQGhC2U+PLdIyQUkD3kjuXWqqhZpcuR+W3hiW7Vg==",
        "X-Received": "by 10.101.82.129 with SMTP id y1mr21871660pgp.137.1511377044055; \n\tWed, 22 Nov 2017 10:57:24 -0800 (PST)",
        "From": "Alexander Duyck <alexander.duyck@gmail.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Wed, 22 Nov 2017 10:57:23 -0800",
        "Message-ID": "<20171122185723.29785.8129.stgit@localhost.localdomain>",
        "In-Reply-To": "<20171122185256.29785.93548.stgit@localhost.localdomain>",
        "References": "<20171122185256.29785.93548.stgit@localhost.localdomain>",
        "User-Agent": "StGit/0.17.1-dirty",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [jkirsher/next-queue PATCH 12/16] ixgbe: Do not\n\tmanipulate macvlan Tx queues when performing macvlan offload",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.24",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>",
        "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "From: Alexander Duyck <alexander.h.duyck@intel.com>\n\nWe should not be stopping/starting the upper devices Tx queues when\nhandling a macvlan offload. Instead we should be stopping and starting\ntraffic on our own queues.\n\nIn order to prevent us from doing this I am updating the code so that we no\nlonger change the queue configuration on the upper device, nor do we update\nthe queue_index on our own device. Instead we can just use the queue index\nfor our local device and not update the netdev in the case of the transmit\nrings.\n\nSigned-off-by: Alexander Duyck <alexander.h.duyck@intel.com>\n---\n drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c  |   12 --\n drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |  121 +++++--------------------\n 2 files changed, 25 insertions(+), 108 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c\nindex df23a57ddb56..dc7f3ef2957b 100644\n--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c\n+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c\n@@ -920,11 +920,7 @@ static int ixgbe_alloc_q_vector(struct ixgbe_adapter *adapter,\n \n \t\t/* apply Tx specific ring traits */\n \t\tring->count = adapter->tx_ring_count;\n-\t\tif (adapter->num_rx_pools > 1)\n-\t\t\tring->queue_index =\n-\t\t\t\ttxr_idx % adapter->num_rx_queues_per_pool;\n-\t\telse\n-\t\t\tring->queue_index = txr_idx;\n+\t\tring->queue_index = txr_idx;\n \n \t\t/* assign ring to adapter */\n \t\tadapter->tx_ring[txr_idx] = ring;\n@@ -994,11 +990,7 @@ static int ixgbe_alloc_q_vector(struct ixgbe_adapter *adapter,\n #endif /* IXGBE_FCOE */\n \t\t/* apply Rx specific ring traits */\n \t\tring->count = adapter->rx_ring_count;\n-\t\tif (adapter->num_rx_pools > 1)\n-\t\t\tring->queue_index =\n-\t\t\t\trxr_idx % adapter->num_rx_queues_per_pool;\n-\t\telse\n-\t\t\tring->queue_index = rxr_idx;\n+\t\tring->queue_index = rxr_idx;\n \n \t\t/* assign ring to adapter */\n \t\tadapter->rx_ring[rxr_idx] = ring;\ndiff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c\nindex 825d093ebf2e..c21fd98bd45a 100644\n--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c\n+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c\n@@ -5339,12 +5339,11 @@ static void ixgbe_disable_fwd_ring(struct ixgbe_fwd_adapter *vadapter,\n \t\t\t\t   struct ixgbe_ring *rx_ring)\n {\n \tstruct ixgbe_adapter *adapter = vadapter->real_adapter;\n-\tint index = rx_ring->queue_index + vadapter->rx_base_queue;\n \n \t/* shutdown specific queue receive and wait for dma to settle */\n \tixgbe_disable_rx_queue(adapter, rx_ring);\n \tusleep_range(10000, 20000);\n-\tixgbe_irq_disable_queues(adapter, BIT_ULL(index));\n+\tixgbe_irq_disable_queues(adapter, BIT_ULL(rx_ring->queue_index));\n \tixgbe_clean_rx_ring(rx_ring);\n }\n \n@@ -5353,20 +5352,13 @@ static int ixgbe_fwd_ring_down(struct net_device *vdev,\n {\n \tstruct ixgbe_adapter *adapter = accel->real_adapter;\n \tunsigned int rxbase = accel->rx_base_queue;\n-\tunsigned int txbase = accel->tx_base_queue;\n \tint i;\n \n-\tnetif_tx_stop_all_queues(vdev);\n-\n \tfor (i = 0; i < adapter->num_rx_queues_per_pool; i++) {\n \t\tixgbe_disable_fwd_ring(accel, adapter->rx_ring[rxbase + i]);\n \t\tadapter->rx_ring[rxbase + i]->netdev = adapter->netdev;\n \t}\n \n-\tfor (i = 0; i < adapter->num_rx_queues_per_pool; i++)\n-\t\tadapter->tx_ring[txbase + i]->netdev = adapter->netdev;\n-\n-\n \treturn 0;\n }\n \n@@ -5374,8 +5366,7 @@ static int ixgbe_fwd_ring_up(struct net_device *vdev,\n \t\t\t     struct ixgbe_fwd_adapter *accel)\n {\n \tstruct ixgbe_adapter *adapter = accel->real_adapter;\n-\tunsigned int rxbase, txbase, queues;\n-\tint i, baseq, err = 0;\n+\tint i, baseq, err;\n \n \tif (!test_bit(accel->pool, adapter->fwd_bitmask))\n \t\treturn 0;\n@@ -5386,30 +5377,17 @@ static int ixgbe_fwd_ring_up(struct net_device *vdev,\n \t\t   baseq, baseq + adapter->num_rx_queues_per_pool);\n \n \taccel->netdev = vdev;\n-\taccel->rx_base_queue = rxbase = baseq;\n-\taccel->tx_base_queue = txbase = baseq;\n+\taccel->rx_base_queue = baseq;\n+\taccel->tx_base_queue = baseq;\n \n \tfor (i = 0; i < adapter->num_rx_queues_per_pool; i++)\n-\t\tixgbe_disable_fwd_ring(accel, adapter->rx_ring[rxbase + i]);\n+\t\tixgbe_disable_fwd_ring(accel, adapter->rx_ring[baseq + i]);\n \n \tfor (i = 0; i < adapter->num_rx_queues_per_pool; i++) {\n-\t\tadapter->rx_ring[rxbase + i]->netdev = vdev;\n-\t\tixgbe_configure_rx_ring(adapter, adapter->rx_ring[rxbase + i]);\n+\t\tadapter->rx_ring[baseq + i]->netdev = vdev;\n+\t\tixgbe_configure_rx_ring(adapter, adapter->rx_ring[baseq + i]);\n \t}\n \n-\tfor (i = 0; i < adapter->num_rx_queues_per_pool; i++)\n-\t\tadapter->tx_ring[txbase + i]->netdev = vdev;\n-\n-\tqueues = min_t(unsigned int,\n-\t\t       adapter->num_rx_queues_per_pool, vdev->num_tx_queues);\n-\terr = netif_set_real_num_tx_queues(vdev, queues);\n-\tif (err)\n-\t\tgoto fwd_queue_err;\n-\n-\terr = netif_set_real_num_rx_queues(vdev, queues);\n-\tif (err)\n-\t\tgoto fwd_queue_err;\n-\n \t/* ixgbe_add_mac_filter will return an index if it succeeds, so we\n \t * need to only treat it as an error value if it is negative.\n \t */\n@@ -5897,21 +5875,6 @@ static void ixgbe_fdir_filter_exit(struct ixgbe_adapter *adapter)\n \tspin_unlock(&adapter->fdir_perfect_lock);\n }\n \n-static int ixgbe_disable_macvlan(struct net_device *upper, void *data)\n-{\n-\tif (netif_is_macvlan(upper)) {\n-\t\tstruct macvlan_dev *vlan = netdev_priv(upper);\n-\n-\t\tif (vlan->fwd_priv) {\n-\t\t\tnetif_tx_stop_all_queues(upper);\n-\t\t\tnetif_carrier_off(upper);\n-\t\t\tnetif_tx_disable(upper);\n-\t\t}\n-\t}\n-\n-\treturn 0;\n-}\n-\n void ixgbe_down(struct ixgbe_adapter *adapter)\n {\n \tstruct net_device *netdev = adapter->netdev;\n@@ -5941,10 +5904,6 @@ void ixgbe_down(struct ixgbe_adapter *adapter)\n \tnetif_carrier_off(netdev);\n \tnetif_tx_disable(netdev);\n \n-\t/* disable any upper devices */\n-\tnetdev_walk_all_upper_dev_rcu(adapter->netdev,\n-\t\t\t\t      ixgbe_disable_macvlan, NULL);\n-\n \tixgbe_irq_disable(adapter);\n \n \tixgbe_napi_disable_all(adapter);\n@@ -7254,18 +7213,6 @@ static void ixgbe_update_default_up(struct ixgbe_adapter *adapter)\n #endif\n }\n \n-static int ixgbe_enable_macvlan(struct net_device *upper, void *data)\n-{\n-\tif (netif_is_macvlan(upper)) {\n-\t\tstruct macvlan_dev *vlan = netdev_priv(upper);\n-\n-\t\tif (vlan->fwd_priv)\n-\t\t\tnetif_tx_wake_all_queues(upper);\n-\t}\n-\n-\treturn 0;\n-}\n-\n /**\n  * ixgbe_watchdog_link_is_up - update netif_carrier status and\n  *                             print link up message\n@@ -7346,12 +7293,6 @@ static void ixgbe_watchdog_link_is_up(struct ixgbe_adapter *adapter)\n \t/* enable transmits */\n \tnetif_tx_wake_all_queues(adapter->netdev);\n \n-\t/* enable any upper devices */\n-\trtnl_lock();\n-\tnetdev_walk_all_upper_dev_rcu(adapter->netdev,\n-\t\t\t\t      ixgbe_enable_macvlan, NULL);\n-\trtnl_unlock();\n-\n \t/* update the default user priority for VFs */\n \tixgbe_update_default_up(adapter);\n \n@@ -8312,14 +8253,19 @@ static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb,\n \t\t\t      void *accel_priv, select_queue_fallback_t fallback)\n {\n \tstruct ixgbe_fwd_adapter *fwd_adapter = accel_priv;\n-#ifdef IXGBE_FCOE\n \tstruct ixgbe_adapter *adapter;\n-\tstruct ixgbe_ring_feature *f;\n \tint txq;\n+#ifdef IXGBE_FCOE\n+\tstruct ixgbe_ring_feature *f;\n #endif\n \n-\tif (fwd_adapter)\n-\t\treturn skb->queue_mapping + fwd_adapter->tx_base_queue;\n+\tif (fwd_adapter) {\n+\t\tadapter = netdev_priv(dev);\n+\t\ttxq = reciprocal_scale(skb_get_hash(skb),\n+\t\t\t\t       adapter->num_rx_queues_per_pool);\n+\n+\t\treturn txq + fwd_adapter->tx_base_queue;\n+\t}\n \n #ifdef IXGBE_FCOE\n \n@@ -9806,22 +9752,6 @@ static void *ixgbe_fwd_add(struct net_device *pdev, struct net_device *vdev)\n \tif (used_pools >= IXGBE_MAX_VF_FUNCTIONS)\n \t\treturn ERR_PTR(-EINVAL);\n \n-#ifdef CONFIG_RPS\n-\tif (vdev->num_rx_queues != vdev->num_tx_queues) {\n-\t\tnetdev_info(pdev, \"%s: Only supports a single queue count for TX and RX\\n\",\n-\t\t\t    vdev->name);\n-\t\treturn ERR_PTR(-EINVAL);\n-\t}\n-#endif\n-\t/* Check for hardware restriction on number of rx/tx queues */\n-\tif (vdev->num_tx_queues > IXGBE_MAX_L2A_QUEUES ||\n-\t    vdev->num_tx_queues == IXGBE_BAD_L2A_QUEUE) {\n-\t\tnetdev_info(pdev,\n-\t\t\t    \"%s: Supports RX/TX Queue counts 1,2, and 4\\n\",\n-\t\t\t    pdev->name);\n-\t\treturn ERR_PTR(-EINVAL);\n-\t}\n-\n \tif (((adapter->flags & IXGBE_FLAG_DCB_ENABLED) &&\n \t      adapter->num_rx_pools >= (MAX_TX_QUEUES / tcs)) ||\n \t    (adapter->num_rx_pools > IXGBE_MAX_MACVLANS))\n@@ -9838,24 +9768,19 @@ static void *ixgbe_fwd_add(struct net_device *pdev, struct net_device *vdev)\n \t/* Enable VMDq flag so device will be set in VM mode */\n \tadapter->flags |= IXGBE_FLAG_VMDQ_ENABLED | IXGBE_FLAG_SRIOV_ENABLED;\n \tadapter->ring_feature[RING_F_VMDQ].limit = limit + 1;\n-\tadapter->ring_feature[RING_F_RSS].limit = vdev->num_tx_queues;\n \n-\t/* Force reinit of ring allocation with VMDQ enabled */\n-\terr = ixgbe_setup_tc(pdev, adapter->hw_tcs);\n-\tif (err)\n-\t\tgoto fwd_add_err;\n \tfwd_adapter->pool = pool;\n \tfwd_adapter->real_adapter = adapter;\n \n-\tif (netif_running(pdev)) {\n+\t/* Force reinit of ring allocation with VMDQ enabled */\n+\terr = ixgbe_setup_tc(pdev, adapter->hw_tcs);\n+\n+\tif (!err && netif_running(pdev))\n \t\terr = ixgbe_fwd_ring_up(vdev, fwd_adapter);\n-\t\tif (err)\n-\t\t\tgoto fwd_add_err;\n-\t\tnetif_tx_start_all_queues(vdev);\n-\t}\n \n-\treturn fwd_adapter;\n-fwd_add_err:\n+\tif (!err)\n+\t\treturn fwd_adapter;\n+\n \t/* unwind counter and free adapter struct */\n \tnetdev_info(pdev,\n \t\t    \"%s: dfwd hardware acceleration failed\\n\", vdev->name);\n",
    "prefixes": [
        "jkirsher/next-queue",
        "12/16"
    ]
}