Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/28952/?format=api
https://patches.dpdk.org/api/patches/28952/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/1505831512-127244-2-git-send-email-xuemingl@mellanox.com/", "project": { "id": 1, "url": "https://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": "<1505831512-127244-2-git-send-email-xuemingl@mellanox.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1505831512-127244-2-git-send-email-xuemingl@mellanox.com", "date": "2017-09-19T14:31:48", "name": "[dpdk-dev,v4,1/5] net/mlx5: change eth device reference for secondary process", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": true, "hash": "5dacbad7543ad2523dddd3f020ab591c0190b83b", "submitter": { "id": 814, "url": "https://patches.dpdk.org/api/people/814/?format=api", "name": "Xueming Li", "email": "xuemingl@mellanox.com" }, "delegate": { "id": 319, "url": "https://patches.dpdk.org/api/users/319/?format=api", "username": "fyigit", "first_name": "Ferruh", "last_name": "Yigit", "email": "ferruh.yigit@amd.com" }, "mbox": "https://patches.dpdk.org/project/dpdk/patch/1505831512-127244-2-git-send-email-xuemingl@mellanox.com/mbox/", "series": [], "comments": "https://patches.dpdk.org/api/patches/28952/comments/", "check": "fail", "checks": "https://patches.dpdk.org/api/patches/28952/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id F15841B1BD;\n\tTue, 19 Sep 2017 16:32:21 +0200 (CEST)", "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n\tby dpdk.org (Postfix) with ESMTP id A523D1B1BC\n\tfor <dev@dpdk.org>; Tue, 19 Sep 2017 16:32:20 +0200 (CEST)", "from Internal Mail-Server by MTLPINE1 (envelope-from\n\txuemingl@mellanox.com)\n\twith ESMTPS (AES256-SHA encrypted); 19 Sep 2017 17:32:15 +0300", "from dev-r630-05.mtbc.labs.mlnx (dev-r630-05.mtbc.labs.mlnx\n\t[10.12.205.160])\n\tby labmailer.mlnx (8.13.8/8.13.8) with ESMTP id v8JEWEGd013103;\n\tTue, 19 Sep 2017 17:32:15 +0300", "from dev-r630-05.mtbc.labs.mlnx (localhost [127.0.0.1])\n\tby dev-r630-05.mtbc.labs.mlnx (8.14.7/8.14.7) with ESMTP id\n\tv8JEWExV127304; Tue, 19 Sep 2017 22:32:14 +0800", "(from xuemingl@localhost)\n\tby dev-r630-05.mtbc.labs.mlnx (8.14.7/8.14.7/Submit) id\n\tv8JEWE4T127303; Tue, 19 Sep 2017 22:32:14 +0800" ], "From": "Xueming Li <xuemingl@mellanox.com>", "To": "Nelio Laranjeiro <nelio.laranjeiro@6wind.com>,\n\tAdrien Mazarguil <adrien.mazarguil@6wind.com>", "Cc": "Xueming Li <xuemingl@mellanox.com>, dev@dpdk.org", "Date": "Tue, 19 Sep 2017 22:31:48 +0800", "Message-Id": "<1505831512-127244-2-git-send-email-xuemingl@mellanox.com>", "X-Mailer": "git-send-email 1.8.3.1", "In-Reply-To": [ "<1505831512-127244-1-git-send-email-xuemingl@mellanox.com>", "<20170824140341.95471-1-xuemingl@mellanox.com>" ], "References": [ "<1505831512-127244-1-git-send-email-xuemingl@mellanox.com>", "<20170824140341.95471-1-xuemingl@mellanox.com>" ], "Subject": "[dpdk-dev] [PATCH v4 1/5] net/mlx5: change eth device reference for\n\tsecondary process", "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": "rte_eth_dev created by primary process were not available in secondary\nprocess, it was not possible to use the primary process local memory\nobject from a secondary process.\n\nThis patch modify the reference of primary rte_eth_dev object, use\nlocal rte_eth_dev secondary process instead.\n\nSigned-off-by: Xueming Li <xuemingl@mellanox.com>\nAcked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>\n---\n drivers/net/mlx5/mlx5.h | 6 +++---\n drivers/net/mlx5/mlx5_ethdev.c | 47 ++++++++++++++++++++++++-----------------\n drivers/net/mlx5/mlx5_fdir.c | 2 ++\n drivers/net/mlx5/mlx5_rss.c | 1 +\n drivers/net/mlx5/mlx5_rxq.c | 1 +\n drivers/net/mlx5/mlx5_trigger.c | 4 ++--\n 6 files changed, 37 insertions(+), 24 deletions(-)", "diff": "diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h\nindex ab03fe0..78b27ed 100644\n--- a/drivers/net/mlx5/mlx5.h\n+++ b/drivers/net/mlx5/mlx5.h\n@@ -87,7 +87,7 @@ struct mlx5_xstats_ctrl {\n };\n \n struct priv {\n-\tstruct rte_eth_dev *dev; /* Ethernet device. */\n+\tstruct rte_eth_dev *dev; /* Ethernet device of master process. */\n \tstruct ibv_context *ctx; /* Verbs context. */\n \tstruct ibv_device_attr_ex device_attr; /* Device properties. */\n \tstruct ibv_pd *pd; /* Protection Domain. */\n@@ -208,8 +208,8 @@ int mlx5_ibv_device_to_pci_addr(const struct ibv_device *,\n void priv_dev_interrupt_handler_install(struct priv *, struct rte_eth_dev *);\n int mlx5_set_link_down(struct rte_eth_dev *dev);\n int mlx5_set_link_up(struct rte_eth_dev *dev);\n-void priv_select_tx_function(struct priv *);\n-void priv_select_rx_function(struct priv *);\n+void priv_dev_select_tx_function(struct priv *priv, struct rte_eth_dev *dev);\n+void priv_dev_select_rx_function(struct priv *priv, struct rte_eth_dev *dev);\n \n /* mlx5_mac.c */\n \ndiff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c\nindex 6f17a95..c1affba 100644\n--- a/drivers/net/mlx5/mlx5_ethdev.c\n+++ b/drivers/net/mlx5/mlx5_ethdev.c\n@@ -1260,7 +1260,9 @@ struct priv *\n * Change the link state (UP / DOWN).\n *\n * @param priv\n- * Pointer to Ethernet device structure.\n+ * Pointer to private data structure.\n+ * @param dev\n+ * Pointer to rte_eth_dev structure.\n * @param up\n * Nonzero for link up, otherwise link down.\n *\n@@ -1268,17 +1270,16 @@ struct priv *\n * 0 on success, errno value on failure.\n */\n static int\n-priv_set_link(struct priv *priv, int up)\n+priv_dev_set_link(struct priv *priv, struct rte_eth_dev *dev, int up)\n {\n-\tstruct rte_eth_dev *dev = priv->dev;\n \tint err;\n \n \tif (up) {\n \t\terr = priv_set_flags(priv, ~IFF_UP, IFF_UP);\n \t\tif (err)\n \t\t\treturn err;\n-\t\tpriv_select_tx_function(priv);\n-\t\tpriv_select_rx_function(priv);\n+\t\tpriv_dev_select_tx_function(priv, dev);\n+\t\tpriv_dev_select_rx_function(priv, dev);\n \t} else {\n \t\terr = priv_set_flags(priv, ~IFF_UP, ~IFF_UP);\n \t\tif (err)\n@@ -1305,7 +1306,7 @@ struct priv *\n \tint err;\n \n \tpriv_lock(priv);\n-\terr = priv_set_link(priv, 0);\n+\terr = priv_dev_set_link(priv, dev, 0);\n \tpriv_unlock(priv);\n \treturn err;\n }\n@@ -1326,7 +1327,7 @@ struct priv *\n \tint err;\n \n \tpriv_lock(priv);\n-\terr = priv_set_link(priv, 1);\n+\terr = priv_dev_set_link(priv, dev, 1);\n \tpriv_unlock(priv);\n \treturn err;\n }\n@@ -1335,29 +1336,33 @@ struct priv *\n * Configure the TX function to use.\n *\n * @param priv\n- * Pointer to private structure.\n+ * Pointer to private data structure.\n+ * @param dev\n+ * Pointer to rte_eth_dev structure.\n */\n void\n-priv_select_tx_function(struct priv *priv)\n+priv_dev_select_tx_function(struct priv *priv, struct rte_eth_dev *dev)\n {\n-\tpriv->dev->tx_pkt_burst = mlx5_tx_burst;\n+\tassert(priv != NULL);\n+\tassert(dev != NULL);\n+\tdev->tx_pkt_burst = mlx5_tx_burst;\n \t/* Select appropriate TX function. */\n \tif (priv->mps == MLX5_MPW_ENHANCED) {\n \t\tif (priv_check_vec_tx_support(priv) > 0) {\n \t\t\tif (priv_check_raw_vec_tx_support(priv) > 0)\n-\t\t\t\tpriv->dev->tx_pkt_burst = mlx5_tx_burst_raw_vec;\n+\t\t\t\tdev->tx_pkt_burst = mlx5_tx_burst_raw_vec;\n \t\t\telse\n-\t\t\t\tpriv->dev->tx_pkt_burst = mlx5_tx_burst_vec;\n+\t\t\t\tdev->tx_pkt_burst = mlx5_tx_burst_vec;\n \t\t\tDEBUG(\"selected Enhanced MPW TX vectorized function\");\n \t\t} else {\n-\t\t\tpriv->dev->tx_pkt_burst = mlx5_tx_burst_empw;\n+\t\t\tdev->tx_pkt_burst = mlx5_tx_burst_empw;\n \t\t\tDEBUG(\"selected Enhanced MPW TX function\");\n \t\t}\n \t} else if (priv->mps && priv->txq_inline) {\n-\t\tpriv->dev->tx_pkt_burst = mlx5_tx_burst_mpw_inline;\n+\t\tdev->tx_pkt_burst = mlx5_tx_burst_mpw_inline;\n \t\tDEBUG(\"selected MPW inline TX function\");\n \t} else if (priv->mps) {\n-\t\tpriv->dev->tx_pkt_burst = mlx5_tx_burst_mpw;\n+\t\tdev->tx_pkt_burst = mlx5_tx_burst_mpw;\n \t\tDEBUG(\"selected MPW TX function\");\n \t}\n }\n@@ -1366,15 +1371,19 @@ struct priv *\n * Configure the RX function to use.\n *\n * @param priv\n- * Pointer to private structure.\n+ * Pointer to private data structure.\n+ * @param dev\n+ * Pointer to rte_eth_dev structure.\n */\n void\n-priv_select_rx_function(struct priv *priv)\n+priv_dev_select_rx_function(struct priv *priv, struct rte_eth_dev *dev)\n {\n+\tassert(priv != NULL);\n+\tassert(dev != NULL);\n \tif (priv_check_vec_rx_support(priv) > 0) {\n-\t\tpriv->dev->rx_pkt_burst = mlx5_rx_burst_vec;\n+\t\tdev->rx_pkt_burst = mlx5_rx_burst_vec;\n \t\tDEBUG(\"selected RX vectorized function\");\n \t} else {\n-\t\tpriv->dev->rx_pkt_burst = mlx5_rx_burst;\n+\t\tdev->rx_pkt_burst = mlx5_rx_burst;\n \t}\n }\ndiff --git a/drivers/net/mlx5/mlx5_fdir.c b/drivers/net/mlx5/mlx5_fdir.c\nindex acae668..66e3818 100644\n--- a/drivers/net/mlx5/mlx5_fdir.c\n+++ b/drivers/net/mlx5/mlx5_fdir.c\n@@ -1068,6 +1068,8 @@ struct mlx5_fdir_filter {\n \tint ret = EINVAL;\n \tstruct priv *priv = dev->data->dev_private;\n \n+\tif (mlx5_is_secondary())\n+\t\treturn -E_RTE_SECONDARY;\n \tswitch (filter_type) {\n \tcase RTE_ETH_FILTER_GENERIC:\n \t\tif (filter_op != RTE_ETH_FILTER_GET)\ndiff --git a/drivers/net/mlx5/mlx5_rss.c b/drivers/net/mlx5/mlx5_rss.c\nindex 1249943..d3d2603 100644\n--- a/drivers/net/mlx5/mlx5_rss.c\n+++ b/drivers/net/mlx5/mlx5_rss.c\n@@ -350,6 +350,7 @@\n \tint ret;\n \tstruct priv *priv = dev->data->dev_private;\n \n+\tassert(!mlx5_is_secondary());\n \tmlx5_dev_stop(dev);\n \tpriv_lock(priv);\n \tret = priv_dev_rss_reta_update(priv, reta_conf, reta_size);\ndiff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c\nindex 22448c9..b71f72f 100644\n--- a/drivers/net/mlx5/mlx5_rxq.c\n+++ b/drivers/net/mlx5/mlx5_rxq.c\n@@ -1250,6 +1250,7 @@\n \tunsigned int count = 0;\n \tstruct rte_intr_handle *intr_handle = priv->dev->intr_handle;\n \n+\tassert(!mlx5_is_secondary());\n \tif (!priv->dev->data->dev_conf.intr_conf.rxq)\n \t\treturn 0;\n \tpriv_rx_intr_vec_disable(priv);\ndiff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c\nindex 3fa9401..51c31aa 100644\n--- a/drivers/net/mlx5/mlx5_trigger.c\n+++ b/drivers/net/mlx5/mlx5_trigger.c\n@@ -66,8 +66,8 @@\n \t\treturn 0;\n \t}\n \t/* Update Rx/Tx callback. */\n-\tpriv_select_tx_function(priv);\n-\tpriv_select_rx_function(priv);\n+\tpriv_dev_select_tx_function(priv, dev);\n+\tpriv_dev_select_rx_function(priv, dev);\n \tDEBUG(\"%p: allocating and configuring hash RX queues\", (void *)dev);\n \terr = priv_create_hash_rxqs(priv);\n \tif (!err)\n", "prefixes": [ "dpdk-dev", "v4", "1/5" ] }{ "id": 28952, "url": "