get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 27322,
    "url": "http://patches.dpdk.org/api/patches/27322/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/efe518dbfd2c32d713d621d78f7cb324d2fb97d7.1501598384.git.adrien.mazarguil@6wind.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<efe518dbfd2c32d713d621d78f7cb324d2fb97d7.1501598384.git.adrien.mazarguil@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/efe518dbfd2c32d713d621d78f7cb324d2fb97d7.1501598384.git.adrien.mazarguil@6wind.com",
    "date": "2017-08-01T16:53:57",
    "name": "[dpdk-dev,v1,10/48] net/mlx4: remove allmulti and promisc support",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "82f83ea113970675027257bfbaf00f9075d2a97c",
    "submitter": {
        "id": 165,
        "url": "http://patches.dpdk.org/api/people/165/?format=api",
        "name": "Adrien Mazarguil",
        "email": "adrien.mazarguil@6wind.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/efe518dbfd2c32d713d621d78f7cb324d2fb97d7.1501598384.git.adrien.mazarguil@6wind.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/27322/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/27322/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 39FADA0FC;\n\tTue,  1 Aug 2017 18:55:19 +0200 (CEST)",
            "from mail-wr0-f177.google.com (mail-wr0-f177.google.com\n\t[209.85.128.177]) by dpdk.org (Postfix) with ESMTP id 6F682A0B2\n\tfor <dev@dpdk.org>; Tue,  1 Aug 2017 18:55:04 +0200 (CEST)",
            "by mail-wr0-f177.google.com with SMTP id 33so9237227wrz.4\n\tfor <dev@dpdk.org>; Tue, 01 Aug 2017 09:55:04 -0700 (PDT)",
            "from 6wind.com (host.78.145.23.62.rev.coltfrance.com.\n\t[62.23.145.78]) by smtp.gmail.com with ESMTPSA id\n\tc141sm1764676wmd.44.2017.08.01.09.55.02\n\tfor <dev@dpdk.org> (version=TLS1_2 cipher=AES128-SHA bits=128/128);\n\tTue, 01 Aug 2017 09:55:02 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=6wind-com.20150623.gappssmtp.com; s=20150623;\n\th=from:to:subject:date:message-id:in-reply-to:references;\n\tbh=QP7Sa49l4LFuYK2hU3KmausulsBMq7uc++XCU6Z292M=;\n\tb=r4C+lcGOaJA0vDT3NI88MQQFHOtkmfCU1VzqSqooOQgU8rTNu5qsT+cg7g5i8q2RKR\n\tj4byLaXF7IC24udMC7I4yGzt/yfRNEuWM7t1ado5ilSWmJMPaCnAjplRw4v/Om2xC+tu\n\t3RWLmtMlvdjiBcicTqaXTjmW0BxiniS5n5MUupWU5YENPwYa4xSOfYL5K9Jk+Dwg2gI1\n\ty0bI39U/Xblfo829B6m3Zl0x0or9oH8W8Hek90tcLAg6kaVPFveP6pDBnr87q8A+WGGW\n\tuwo/5Wc0D/KIphpbFntxqax4mStzE8GU/I5FdiL1amA+HldGNSnPdIM6eSBwNBl5U3wm\n\tGI1g==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=QP7Sa49l4LFuYK2hU3KmausulsBMq7uc++XCU6Z292M=;\n\tb=PfVHf+PpNHRQqr9x9JVs8UG7ArflgxeCFDBTtoR4W6KLJlaobcNqeXlhWNxqW3tUWq\n\tYH6L2STzIoxanpOjQN9VBSu0foJpwl8Q3Z9lC/3gnngCact2KCRoA/hFIotmBTlgeMo0\n\t3ND8ZixZMemdNWaJpLI90H2ffQmaLXrB/CvsHdo0FT8Tba8vADuiWa1nMMkzmgo46fvt\n\t2dBwhfsxp+WFnPWTY9CTmDBwwYcsBJkxJiJK/AJpPhC9abHVXPjPRlVJLhMzEWS7/AHV\n\tgXzb1OBfdrM9vEfGUQ8WvRcSRMmg/e/tU4c+xp9KdAgqYhcmkVAGRLFOiMZZmpiDxFoT\n\tXZzQ==",
        "X-Gm-Message-State": "AIVw1139qr2XXqt5kc2zvOwwN8y67OpFRmk/i75kB20fkxR4s+NrpIoz\n\tKb+7SYf7YehGwOdHsTE=",
        "X-Received": "by 10.223.128.177 with SMTP id 46mr16425449wrl.150.1501606503531;\n\tTue, 01 Aug 2017 09:55:03 -0700 (PDT)",
        "From": "Adrien Mazarguil <adrien.mazarguil@6wind.com>",
        "To": "dev@dpdk.org",
        "Date": "Tue,  1 Aug 2017 18:53:57 +0200",
        "Message-Id": "<efe518dbfd2c32d713d621d78f7cb324d2fb97d7.1501598384.git.adrien.mazarguil@6wind.com>",
        "X-Mailer": "git-send-email 2.1.4",
        "In-Reply-To": "<cover.1501598383.git.adrien.mazarguil@6wind.com>",
        "References": "<cover.1501598383.git.adrien.mazarguil@6wind.com>",
        "Subject": "[dpdk-dev] [PATCH v1 10/48] net/mlx4: remove allmulti and promisc\n\tsupport",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This is done in preparation for a major refactoring.\n\nSigned-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>\n---\n doc/guides/nics/features/mlx4.ini |   2 -\n doc/guides/nics/mlx4.rst          |   2 -\n drivers/net/mlx4/mlx4.c           | 311 ---------------------------------\n drivers/net/mlx4/mlx4.h           |   4 -\n 4 files changed, 319 deletions(-)",
    "diff": "diff --git a/doc/guides/nics/features/mlx4.ini b/doc/guides/nics/features/mlx4.ini\nindex f6efd21..344731f 100644\n--- a/doc/guides/nics/features/mlx4.ini\n+++ b/doc/guides/nics/features/mlx4.ini\n@@ -13,8 +13,6 @@ Queue start/stop     = Y\n MTU update           = Y\n Jumbo frame          = Y\n Scattered Rx         = Y\n-Promiscuous mode     = Y\n-Allmulticast mode    = Y\n Unicast MAC filter   = Y\n Multicast MAC filter = Y\n RSS hash             = Y\ndiff --git a/doc/guides/nics/mlx4.rst b/doc/guides/nics/mlx4.rst\nindex f84d56c..9559261 100644\n--- a/doc/guides/nics/mlx4.rst\n+++ b/doc/guides/nics/mlx4.rst\n@@ -82,8 +82,6 @@ Features\n   configured RX queues must be a power of two.\n - VLAN filtering is supported.\n - Link state information is provided.\n-- Promiscuous mode is supported.\n-- All multicast mode is supported.\n - Multiple MAC addresses (unicast, multicast) can be configured.\n - Scattered packets are supported for TX and RX.\n - Inner L3/L4 (IP, TCP and UDP) TX/RX checksum offloading and validation.\ndiff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c\nindex d00ddc6..fe1da04 100644\n--- a/drivers/net/mlx4/mlx4.c\n+++ b/drivers/net/mlx4/mlx4.c\n@@ -2141,9 +2141,6 @@ rxq_mac_addrs_del(struct rxq *rxq)\n \t\trxq_mac_addr_del(rxq, i);\n }\n \n-static int rxq_promiscuous_enable(struct rxq *);\n-static void rxq_promiscuous_disable(struct rxq *);\n-\n /**\n  * Add single flow steering rule.\n  *\n@@ -2422,122 +2419,6 @@ priv_mac_addr_add(struct priv *priv, unsigned int mac_index,\n }\n \n /**\n- * Enable allmulti mode in a RX queue.\n- *\n- * @param rxq\n- *   Pointer to RX queue structure.\n- *\n- * @return\n- *   0 on success, errno value on failure.\n- */\n-static int\n-rxq_allmulticast_enable(struct rxq *rxq)\n-{\n-\tstruct ibv_flow *flow;\n-\tstruct ibv_flow_attr attr = {\n-\t\t.type = IBV_FLOW_ATTR_MC_DEFAULT,\n-\t\t.num_of_specs = 0,\n-\t\t.port = rxq->priv->port,\n-\t\t.flags = 0\n-\t};\n-\n-\tDEBUG(\"%p: enabling allmulticast mode\", (void *)rxq);\n-\tif (rxq->allmulti_flow != NULL)\n-\t\treturn EBUSY;\n-\terrno = 0;\n-\tflow = ibv_create_flow(rxq->qp, &attr);\n-\tif (flow == NULL) {\n-\t\t/* It's not clear whether errno is always set in this case. */\n-\t\tERROR(\"%p: flow configuration failed, errno=%d: %s\",\n-\t\t      (void *)rxq, errno,\n-\t\t      (errno ? strerror(errno) : \"Unknown error\"));\n-\t\tif (errno)\n-\t\t\treturn errno;\n-\t\treturn EINVAL;\n-\t}\n-\trxq->allmulti_flow = flow;\n-\tDEBUG(\"%p: allmulticast mode enabled\", (void *)rxq);\n-\treturn 0;\n-}\n-\n-/**\n- * Disable allmulti mode in a RX queue.\n- *\n- * @param rxq\n- *   Pointer to RX queue structure.\n- */\n-static void\n-rxq_allmulticast_disable(struct rxq *rxq)\n-{\n-\tDEBUG(\"%p: disabling allmulticast mode\", (void *)rxq);\n-\tif (rxq->allmulti_flow == NULL)\n-\t\treturn;\n-\tclaim_zero(ibv_destroy_flow(rxq->allmulti_flow));\n-\trxq->allmulti_flow = NULL;\n-\tDEBUG(\"%p: allmulticast mode disabled\", (void *)rxq);\n-}\n-\n-/**\n- * Enable promiscuous mode in a RX queue.\n- *\n- * @param rxq\n- *   Pointer to RX queue structure.\n- *\n- * @return\n- *   0 on success, errno value on failure.\n- */\n-static int\n-rxq_promiscuous_enable(struct rxq *rxq)\n-{\n-\tstruct ibv_flow *flow;\n-\tstruct ibv_flow_attr attr = {\n-\t\t.type = IBV_FLOW_ATTR_ALL_DEFAULT,\n-\t\t.num_of_specs = 0,\n-\t\t.port = rxq->priv->port,\n-\t\t.flags = 0\n-\t};\n-\n-\tif (rxq->priv->vf)\n-\t\treturn 0;\n-\tDEBUG(\"%p: enabling promiscuous mode\", (void *)rxq);\n-\tif (rxq->promisc_flow != NULL)\n-\t\treturn EBUSY;\n-\terrno = 0;\n-\tflow = ibv_create_flow(rxq->qp, &attr);\n-\tif (flow == NULL) {\n-\t\t/* It's not clear whether errno is always set in this case. */\n-\t\tERROR(\"%p: flow configuration failed, errno=%d: %s\",\n-\t\t      (void *)rxq, errno,\n-\t\t      (errno ? strerror(errno) : \"Unknown error\"));\n-\t\tif (errno)\n-\t\t\treturn errno;\n-\t\treturn EINVAL;\n-\t}\n-\trxq->promisc_flow = flow;\n-\tDEBUG(\"%p: promiscuous mode enabled\", (void *)rxq);\n-\treturn 0;\n-}\n-\n-/**\n- * Disable promiscuous mode in a RX queue.\n- *\n- * @param rxq\n- *   Pointer to RX queue structure.\n- */\n-static void\n-rxq_promiscuous_disable(struct rxq *rxq)\n-{\n-\tif (rxq->priv->vf)\n-\t\treturn;\n-\tDEBUG(\"%p: disabling promiscuous mode\", (void *)rxq);\n-\tif (rxq->promisc_flow == NULL)\n-\t\treturn;\n-\tclaim_zero(ibv_destroy_flow(rxq->promisc_flow));\n-\trxq->promisc_flow = NULL;\n-\tDEBUG(\"%p: promiscuous mode disabled\", (void *)rxq);\n-}\n-\n-/**\n  * Clean up a RX queue.\n  *\n  * Destroy objects, free allocated memory and reset the structure for reuse.\n@@ -2578,8 +2459,6 @@ rxq_cleanup(struct rxq *rxq)\n \t\t\t\t\t\t&params));\n \t}\n \tif (rxq->qp != NULL && !rxq->priv->isolated) {\n-\t\trxq_promiscuous_disable(rxq);\n-\t\trxq_allmulticast_disable(rxq);\n \t\trxq_mac_addrs_del(rxq);\n \t}\n \tif (rxq->qp != NULL)\n@@ -3222,12 +3101,8 @@ rxq_rehash(struct rte_eth_dev *dev, struct rxq *rxq)\n \t}\n \t/* Remove attached flows if RSS is disabled (no parent queue). */\n \tif (!priv->rss && !priv->isolated) {\n-\t\trxq_allmulticast_disable(&tmpl);\n-\t\trxq_promiscuous_disable(&tmpl);\n \t\trxq_mac_addrs_del(&tmpl);\n \t\t/* Update original queue in case of failure. */\n-\t\trxq->allmulti_flow = tmpl.allmulti_flow;\n-\t\trxq->promisc_flow = tmpl.promisc_flow;\n \t\tmemcpy(rxq->mac_configured, tmpl.mac_configured,\n \t\t       sizeof(rxq->mac_configured));\n \t\tmemcpy(rxq->mac_flow, tmpl.mac_flow, sizeof(rxq->mac_flow));\n@@ -3268,13 +3143,7 @@ rxq_rehash(struct rte_eth_dev *dev, struct rxq *rxq)\n \t/* Reconfigure flows. Do not care for errors. */\n \tif (!priv->rss && !priv->isolated) {\n \t\trxq_mac_addrs_add(&tmpl);\n-\t\tif (priv->promisc)\n-\t\t\trxq_promiscuous_enable(&tmpl);\n-\t\tif (priv->allmulti)\n-\t\t\trxq_allmulticast_enable(&tmpl);\n \t\t/* Update original queue in case of failure. */\n-\t\trxq->allmulti_flow = tmpl.allmulti_flow;\n-\t\trxq->promisc_flow = tmpl.promisc_flow;\n \t\tmemcpy(rxq->mac_configured, tmpl.mac_configured,\n \t\t       sizeof(rxq->mac_configured));\n \t\tmemcpy(rxq->mac_flow, tmpl.mac_flow, sizeof(rxq->mac_flow));\n@@ -3817,10 +3686,6 @@ mlx4_dev_start(struct rte_eth_dev *dev)\n \t\tif (rxq == NULL)\n \t\t\tcontinue;\n \t\tret = rxq_mac_addrs_add(rxq);\n-\t\tif (!ret && priv->promisc)\n-\t\t\tret = rxq_promiscuous_enable(rxq);\n-\t\tif (!ret && priv->allmulti)\n-\t\t\tret = rxq_allmulticast_enable(rxq);\n \t\tif (!ret)\n \t\t\tcontinue;\n \t\tWARN(\"%p: QP flow attachment failed: %s\",\n@@ -3858,8 +3723,6 @@ mlx4_dev_start(struct rte_eth_dev *dev)\n \twhile (i != 0) {\n \t\trxq = (*priv->rxqs)[i--];\n \t\tif (rxq != NULL) {\n-\t\t\trxq_allmulticast_disable(rxq);\n-\t\t\trxq_promiscuous_disable(rxq);\n \t\t\trxq_mac_addrs_del(rxq);\n \t\t}\n \t}\n@@ -3907,8 +3770,6 @@ mlx4_dev_stop(struct rte_eth_dev *dev)\n \t\t/* Ignore nonexistent RX queues. */\n \t\tif (rxq == NULL)\n \t\t\tcontinue;\n-\t\trxq_allmulticast_disable(rxq);\n-\t\trxq_promiscuous_disable(rxq);\n \t\trxq_mac_addrs_del(rxq);\n \t} while ((--r) && ((rxq = (*priv->rxqs)[++i]), i));\n \tpriv_unlock(priv);\n@@ -4378,170 +4239,6 @@ mlx4_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)\n }\n \n /**\n- * DPDK callback to enable promiscuous mode.\n- *\n- * @param dev\n- *   Pointer to Ethernet device structure.\n- */\n-static void\n-mlx4_promiscuous_enable(struct rte_eth_dev *dev)\n-{\n-\tstruct priv *priv = dev->data->dev_private;\n-\tunsigned int i;\n-\tint ret;\n-\n-\tpriv_lock(priv);\n-\tif (priv->isolated) {\n-\t\tDEBUG(\"%p: cannot enable promiscuous, \"\n-\t\t      \"device is in isolated mode\", (void *)dev);\n-\t\tpriv_unlock(priv);\n-\t\treturn;\n-\t}\n-\tif (priv->promisc) {\n-\t\tpriv_unlock(priv);\n-\t\treturn;\n-\t}\n-\t/* If device isn't started, this is all we need to do. */\n-\tif (!priv->started)\n-\t\tgoto end;\n-\tif (priv->rss) {\n-\t\tret = rxq_promiscuous_enable(LIST_FIRST(&priv->parents));\n-\t\tif (ret) {\n-\t\t\tpriv_unlock(priv);\n-\t\t\treturn;\n-\t\t}\n-\t\tgoto end;\n-\t}\n-\tfor (i = 0; (i != priv->rxqs_n); ++i) {\n-\t\tif ((*priv->rxqs)[i] == NULL)\n-\t\t\tcontinue;\n-\t\tret = rxq_promiscuous_enable((*priv->rxqs)[i]);\n-\t\tif (!ret)\n-\t\t\tcontinue;\n-\t\t/* Failure, rollback. */\n-\t\twhile (i != 0)\n-\t\t\tif ((*priv->rxqs)[--i] != NULL)\n-\t\t\t\trxq_promiscuous_disable((*priv->rxqs)[i]);\n-\t\tpriv_unlock(priv);\n-\t\treturn;\n-\t}\n-end:\n-\tpriv->promisc = 1;\n-\tpriv_unlock(priv);\n-}\n-\n-/**\n- * DPDK callback to disable promiscuous mode.\n- *\n- * @param dev\n- *   Pointer to Ethernet device structure.\n- */\n-static void\n-mlx4_promiscuous_disable(struct rte_eth_dev *dev)\n-{\n-\tstruct priv *priv = dev->data->dev_private;\n-\tunsigned int i;\n-\n-\tpriv_lock(priv);\n-\tif (!priv->promisc || priv->isolated) {\n-\t\tpriv_unlock(priv);\n-\t\treturn;\n-\t}\n-\tif (priv->rss) {\n-\t\trxq_promiscuous_disable(LIST_FIRST(&priv->parents));\n-\t\tgoto end;\n-\t}\n-\tfor (i = 0; (i != priv->rxqs_n); ++i)\n-\t\tif ((*priv->rxqs)[i] != NULL)\n-\t\t\trxq_promiscuous_disable((*priv->rxqs)[i]);\n-end:\n-\tpriv->promisc = 0;\n-\tpriv_unlock(priv);\n-}\n-\n-/**\n- * DPDK callback to enable allmulti mode.\n- *\n- * @param dev\n- *   Pointer to Ethernet device structure.\n- */\n-static void\n-mlx4_allmulticast_enable(struct rte_eth_dev *dev)\n-{\n-\tstruct priv *priv = dev->data->dev_private;\n-\tunsigned int i;\n-\tint ret;\n-\n-\tpriv_lock(priv);\n-\tif (priv->isolated) {\n-\t\tDEBUG(\"%p: cannot enable allmulticast, \"\n-\t\t      \"device is in isolated mode\", (void *)dev);\n-\t\tpriv_unlock(priv);\n-\t\treturn;\n-\t}\n-\tif (priv->allmulti) {\n-\t\tpriv_unlock(priv);\n-\t\treturn;\n-\t}\n-\t/* If device isn't started, this is all we need to do. */\n-\tif (!priv->started)\n-\t\tgoto end;\n-\tif (priv->rss) {\n-\t\tret = rxq_allmulticast_enable(LIST_FIRST(&priv->parents));\n-\t\tif (ret) {\n-\t\t\tpriv_unlock(priv);\n-\t\t\treturn;\n-\t\t}\n-\t\tgoto end;\n-\t}\n-\tfor (i = 0; (i != priv->rxqs_n); ++i) {\n-\t\tif ((*priv->rxqs)[i] == NULL)\n-\t\t\tcontinue;\n-\t\tret = rxq_allmulticast_enable((*priv->rxqs)[i]);\n-\t\tif (!ret)\n-\t\t\tcontinue;\n-\t\t/* Failure, rollback. */\n-\t\twhile (i != 0)\n-\t\t\tif ((*priv->rxqs)[--i] != NULL)\n-\t\t\t\trxq_allmulticast_disable((*priv->rxqs)[i]);\n-\t\tpriv_unlock(priv);\n-\t\treturn;\n-\t}\n-end:\n-\tpriv->allmulti = 1;\n-\tpriv_unlock(priv);\n-}\n-\n-/**\n- * DPDK callback to disable allmulti mode.\n- *\n- * @param dev\n- *   Pointer to Ethernet device structure.\n- */\n-static void\n-mlx4_allmulticast_disable(struct rte_eth_dev *dev)\n-{\n-\tstruct priv *priv = dev->data->dev_private;\n-\tunsigned int i;\n-\n-\tpriv_lock(priv);\n-\tif (!priv->allmulti || priv->isolated) {\n-\t\tpriv_unlock(priv);\n-\t\treturn;\n-\t}\n-\tif (priv->rss) {\n-\t\trxq_allmulticast_disable(LIST_FIRST(&priv->parents));\n-\t\tgoto end;\n-\t}\n-\tfor (i = 0; (i != priv->rxqs_n); ++i)\n-\t\tif ((*priv->rxqs)[i] != NULL)\n-\t\t\trxq_allmulticast_disable((*priv->rxqs)[i]);\n-end:\n-\tpriv->allmulti = 0;\n-\tpriv_unlock(priv);\n-}\n-\n-/**\n  * DPDK callback to retrieve physical link information.\n  *\n  * @param dev\n@@ -4664,10 +4361,6 @@ mlx4_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n \t\t * for errors at this stage. */\n \t\tif (!priv->rss && !priv->isolated) {\n \t\t\trxq_mac_addrs_add(rxq);\n-\t\t\tif (priv->promisc)\n-\t\t\t\trxq_promiscuous_enable(rxq);\n-\t\t\tif (priv->allmulti)\n-\t\t\t\trxq_allmulticast_enable(rxq);\n \t\t}\n \t\t/* Scattered burst function takes priority. */\n \t\tif (rxq->sp)\n@@ -4956,10 +4649,6 @@ static const struct eth_dev_ops mlx4_dev_ops = {\n \t.dev_set_link_down = mlx4_set_link_down,\n \t.dev_set_link_up = mlx4_set_link_up,\n \t.dev_close = mlx4_dev_close,\n-\t.promiscuous_enable = mlx4_promiscuous_enable,\n-\t.promiscuous_disable = mlx4_promiscuous_disable,\n-\t.allmulticast_enable = mlx4_allmulticast_enable,\n-\t.allmulticast_disable = mlx4_allmulticast_disable,\n \t.link_update = mlx4_link_update,\n \t.stats_get = mlx4_stats_get,\n \t.stats_reset = mlx4_stats_reset,\ndiff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h\nindex 469ab4b..35c9549 100644\n--- a/drivers/net/mlx4/mlx4.h\n+++ b/drivers/net/mlx4/mlx4.h\n@@ -204,8 +204,6 @@ struct rxq {\n \t */\n \tBITFIELD_DECLARE(mac_configured, uint32_t, MLX4_MAX_MAC_ADDRESSES);\n \tstruct ibv_flow *mac_flow[MLX4_MAX_MAC_ADDRESSES][MLX4_MAX_VLAN_IDS];\n-\tstruct ibv_flow *promisc_flow; /* Promiscuous flow. */\n-\tstruct ibv_flow *allmulti_flow; /* Multicast flow. */\n \tunsigned int port_id; /* Port ID for incoming packets. */\n \tunsigned int elts_n; /* (*elts)[] length. */\n \tunsigned int elts_head; /* Current index in (*elts)[]. */\n@@ -297,8 +295,6 @@ struct priv {\n \tuint16_t mtu; /* Configured MTU. */\n \tuint8_t port; /* Physical port number. */\n \tunsigned int started:1; /* Device started, flows enabled. */\n-\tunsigned int promisc:1; /* Device in promiscuous mode. */\n-\tunsigned int allmulti:1; /* Device receives all multicast packets. */\n \tunsigned int hw_qpg:1; /* QP groups are supported. */\n \tunsigned int hw_tss:1; /* TSS is supported. */\n \tunsigned int hw_rss:1; /* RSS is supported. */\n",
    "prefixes": [
        "dpdk-dev",
        "v1",
        "10/48"
    ]
}