Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/111910/?format=api
https://patches.dpdk.org/api/patches/111910/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/20220526084550.243121-3-ivan.malov@oktetlabs.ru/", "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": "<20220526084550.243121-3-ivan.malov@oktetlabs.ru>", "list_archive_url": "https://inbox.dpdk.org/dev/20220526084550.243121-3-ivan.malov@oktetlabs.ru", "date": "2022-05-26T08:45:50", "name": "[3/3] net/sfc: allow to control the represented entity MAC address", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "22b5c0012dc7d6616c1169e8a37d83b1e659b346", "submitter": { "id": 869, "url": "https://patches.dpdk.org/api/people/869/?format=api", "name": "Ivan Malov", "email": "Ivan.Malov@oktetlabs.ru" }, "delegate": { "id": 3961, "url": "https://patches.dpdk.org/api/users/3961/?format=api", "username": "arybchenko", "first_name": "Andrew", "last_name": "Rybchenko", "email": "andrew.rybchenko@oktetlabs.ru" }, "mbox": "https://patches.dpdk.org/project/dpdk/patch/20220526084550.243121-3-ivan.malov@oktetlabs.ru/mbox/", "series": [ { "id": 23183, "url": "https://patches.dpdk.org/api/series/23183/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=23183", "date": "2022-05-26T08:45:48", "name": "[1/3] common/sfc_efx/base: convert EFX PCIe INTF to MCDI value", "version": 1, "mbox": "https://patches.dpdk.org/series/23183/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/111910/comments/", "check": "fail", "checks": "https://patches.dpdk.org/api/patches/111910/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 24135A0555;\n\tThu, 26 May 2022 10:46:05 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id C26B7427F7;\n\tThu, 26 May 2022 10:45:55 +0200 (CEST)", "from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113])\n by mails.dpdk.org (Postfix) with ESMTP id 84D4840DF7\n for <dev@dpdk.org>; Thu, 26 May 2022 10:45:53 +0200 (CEST)", "from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by shelob.oktetlabs.ru (Postfix) with ESMTPS id ED14694;\n Thu, 26 May 2022 11:45:52 +0300 (MSK)" ], "DKIM-Filter": "OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru ED14694", "Authentication-Results": "shelob.oktetlabs.ru/ED14694; dkim=none;\n dkim-atps=neutral", "From": "Ivan Malov <ivan.malov@oktetlabs.ru>", "To": "dev@dpdk.org", "Cc": "Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n Andy Moreton <amoreton@xilinx.com>", "Subject": "[PATCH 3/3] net/sfc: allow to control the represented entity MAC\n address", "Date": "Thu, 26 May 2022 11:45:50 +0300", "Message-Id": "<20220526084550.243121-3-ivan.malov@oktetlabs.ru>", "X-Mailer": "git-send-email 2.30.2", "In-Reply-To": "<20220526084550.243121-1-ivan.malov@oktetlabs.ru>", "References": "<20220526084550.243121-1-ivan.malov@oktetlabs.ru>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org" }, "content": "The MAC address is accessed via the representor ethdev's one.\n\nSigned-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>\nReviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>\nReviewed-by: Andy Moreton <amoreton@xilinx.com>\n---\n drivers/net/sfc/sfc_port.c | 1 +\n drivers/net/sfc/sfc_repr.c | 29 ++++++++++++++++--\n drivers/net/sfc/sfc_repr_proxy.c | 45 +++++++++++++++++++++++++++-\n drivers/net/sfc/sfc_repr_proxy.h | 1 +\n drivers/net/sfc/sfc_repr_proxy_api.h | 7 ++++-\n 5 files changed, 78 insertions(+), 5 deletions(-)", "diff": "diff --git a/drivers/net/sfc/sfc_port.c b/drivers/net/sfc/sfc_port.c\nindex 91139375ea..5f312ab1ba 100644\n--- a/drivers/net/sfc/sfc_port.c\n+++ b/drivers/net/sfc/sfc_port.c\n@@ -8,6 +8,7 @@\n */\n \n #include <rte_bitmap.h>\n+#include <rte_ether.h>\n \n #include \"efx.h\"\n \ndiff --git a/drivers/net/sfc/sfc_repr.c b/drivers/net/sfc/sfc_repr.c\nindex 9d88d554c1..d0e5385889 100644\n--- a/drivers/net/sfc/sfc_repr.c\n+++ b/drivers/net/sfc/sfc_repr.c\n@@ -853,6 +853,17 @@ sfc_repr_dev_close(struct rte_eth_dev *dev)\n \treturn 0;\n }\n \n+static int\n+sfc_repr_mac_addr_set(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr)\n+{\n+\tstruct sfc_repr_shared *srs = sfc_repr_shared_by_eth_dev(dev);\n+\tint ret;\n+\n+\tret = sfc_repr_proxy_repr_entity_mac_addr_set(srs->pf_port_id,\n+\t\t\t\t\t\t srs->repr_id, mac_addr);\n+\treturn -ret;\n+}\n+\n static int\n sfc_repr_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)\n {\n@@ -889,6 +900,7 @@ static const struct eth_dev_ops sfc_repr_dev_ops = {\n \t.dev_close\t\t\t= sfc_repr_dev_close,\n \t.dev_infos_get\t\t\t= sfc_repr_dev_infos_get,\n \t.link_update\t\t\t= sfc_repr_dev_link_update,\n+\t.mac_addr_set\t\t\t= sfc_repr_mac_addr_set,\n \t.stats_get\t\t\t= sfc_repr_stats_get,\n \t.rx_queue_setup\t\t\t= sfc_repr_rx_queue_setup,\n \t.rx_queue_release\t\t= sfc_repr_rx_queue_release,\n@@ -956,9 +968,9 @@ sfc_repr_eth_dev_init(struct rte_eth_dev *dev, void *init_params)\n \t}\n \n \tret = sfc_repr_proxy_add_port(repr_data->pf_port_id,\n-\t\t\t\t srs->switch_port_id,\n-\t\t\t\t dev->data->port_id,\n-\t\t\t\t &repr_data->mport_sel);\n+\t\t\t\t srs->switch_port_id, dev->data->port_id,\n+\t\t\t\t &repr_data->mport_sel, repr_data->intf,\n+\t\t\t\t repr_data->pf, repr_data->vf);\n \tif (ret != 0) {\n \t\tSFC_GENERIC_LOG(ERR, \"%s() failed to add repr proxy port\",\n \t\t\t\t__func__);\n@@ -996,6 +1008,16 @@ sfc_repr_eth_dev_init(struct rte_eth_dev *dev, void *init_params)\n \t\tgoto fail_mac_addrs;\n \t}\n \n+\trte_eth_random_addr(dev->data->mac_addrs[0].addr_bytes);\n+\n+\tret = sfc_repr_proxy_repr_entity_mac_addr_set(repr_data->pf_port_id,\n+\t\t\t\t\t\t srs->repr_id,\n+\t\t\t\t\t\t &dev->data->mac_addrs[0]);\n+\tif (ret != 0) {\n+\t\tret = -ret;\n+\t\tgoto fail_mac_addr_set;\n+\t}\n+\n \tdev->rx_pkt_burst = sfc_repr_rx_burst;\n \tdev->tx_pkt_burst = sfc_repr_tx_burst;\n \tdev->dev_ops = &sfc_repr_dev_ops;\n@@ -1005,6 +1027,7 @@ sfc_repr_eth_dev_init(struct rte_eth_dev *dev, void *init_params)\n \n \treturn 0;\n \n+fail_mac_addr_set:\n fail_mac_addrs:\n \tsfc_repr_unlock(sr);\n \tfree(sr);\ndiff --git a/drivers/net/sfc/sfc_repr_proxy.c b/drivers/net/sfc/sfc_repr_proxy.c\nindex 8660d419a3..4b958ced61 100644\n--- a/drivers/net/sfc/sfc_repr_proxy.c\n+++ b/drivers/net/sfc/sfc_repr_proxy.c\n@@ -1280,7 +1280,8 @@ sfc_repr_proxy_stop(struct sfc_adapter *sa)\n \n int\n sfc_repr_proxy_add_port(uint16_t pf_port_id, uint16_t repr_id,\n-\t\t\tuint16_t rte_port_id, const efx_mport_sel_t *mport_sel)\n+\t\t\tuint16_t rte_port_id, const efx_mport_sel_t *mport_sel,\n+\t\t\tefx_pcie_interface_t intf, uint16_t pf, uint16_t vf)\n {\n \tstruct sfc_repr_proxy_port *port;\n \tstruct sfc_repr_proxy *rp;\n@@ -1319,6 +1320,14 @@ sfc_repr_proxy_add_port(uint16_t pf_port_id, uint16_t repr_id,\n \tport->rte_port_id = rte_port_id;\n \tport->repr_id = repr_id;\n \n+\trc = efx_mcdi_get_client_handle(sa->nic, intf, pf, vf,\n+\t\t\t\t\t&port->remote_vnic_mcdi_client_handle);\n+\tif (rc != 0) {\n+\t\tsfc_err(sa, \"failed to get the represented VNIC's MCDI handle (repr_id=%u): %s\",\n+\t\t\trepr_id, rte_strerror(rc));\n+\t\tgoto fail_client_handle;\n+\t}\n+\n \tif (rp->started) {\n \t\trc = sfc_repr_proxy_mbox_send(&rp->mbox, port,\n \t\t\t\t\t SFC_REPR_PROXY_MBOX_ADD_PORT);\n@@ -1337,6 +1346,7 @@ sfc_repr_proxy_add_port(uint16_t pf_port_id, uint16_t repr_id,\n \treturn 0;\n \n fail_port_add:\n+fail_client_handle:\n fail_mport_id:\n \trte_free(port);\n fail_alloc_port:\n@@ -1664,3 +1674,36 @@ sfc_repr_proxy_stop_repr(uint16_t pf_port_id, uint16_t repr_id)\n \n \treturn 0;\n }\n+\n+int\n+sfc_repr_proxy_repr_entity_mac_addr_set(uint16_t pf_port_id, uint16_t repr_id,\n+\t\t\t\t\tconst struct rte_ether_addr *mac_addr)\n+{\n+\tstruct sfc_repr_proxy_port *port;\n+\tstruct sfc_repr_proxy *rp;\n+\tstruct sfc_adapter *sa;\n+\tint rc;\n+\n+\tsa = sfc_get_adapter_by_pf_port_id(pf_port_id);\n+\trp = sfc_repr_proxy_by_adapter(sa);\n+\n+\tport = sfc_repr_proxy_find_port(rp, repr_id);\n+\tif (port == NULL) {\n+\t\tsfc_err(sa, \"%s() failed: no such port (repr_id=%u)\",\n+\t\t\t__func__, repr_id);\n+\t\tsfc_put_adapter(sa);\n+\t\treturn ENOENT;\n+\t}\n+\n+\trc = efx_mcdi_client_mac_addr_set(sa->nic,\n+\t\t\t\t\t port->remote_vnic_mcdi_client_handle,\n+\t\t\t\t\t mac_addr->addr_bytes);\n+\tif (rc != 0) {\n+\t\tsfc_err(sa, \"%s() failed: cannot set MAC address (repr_id=%u): %s\",\n+\t\t\t__func__, repr_id, rte_strerror(rc));\n+\t}\n+\n+\tsfc_put_adapter(sa);\n+\n+\treturn rc;\n+}\ndiff --git a/drivers/net/sfc/sfc_repr_proxy.h b/drivers/net/sfc/sfc_repr_proxy.h\nindex b49b1a2a96..260e2cab30 100644\n--- a/drivers/net/sfc/sfc_repr_proxy.h\n+++ b/drivers/net/sfc/sfc_repr_proxy.h\n@@ -64,6 +64,7 @@ struct sfc_repr_proxy_port {\n \tuint16_t\t\t\t\trepr_id;\n \tuint16_t\t\t\t\trte_port_id;\n \tefx_mport_id_t\t\t\t\tegress_mport;\n+\tuint32_t\t\t\t\tremote_vnic_mcdi_client_handle;\n \tstruct sfc_repr_proxy_rxq\t\trxq[SFC_REPR_RXQ_MAX];\n \tstruct sfc_repr_proxy_txq\t\ttxq[SFC_REPR_TXQ_MAX];\n \tstruct sfc_mae_rule\t\t\t*mae_rule;\ndiff --git a/drivers/net/sfc/sfc_repr_proxy_api.h b/drivers/net/sfc/sfc_repr_proxy_api.h\nindex 95b065801d..1d38ab2451 100644\n--- a/drivers/net/sfc/sfc_repr_proxy_api.h\n+++ b/drivers/net/sfc/sfc_repr_proxy_api.h\n@@ -23,7 +23,9 @@ extern \"C\" {\n \n int sfc_repr_proxy_add_port(uint16_t pf_port_id, uint16_t repr_id,\n \t\t\t uint16_t rte_port_id,\n-\t\t\t const efx_mport_sel_t *mport_set);\n+\t\t\t const efx_mport_sel_t *mport_sel,\n+\t\t\t efx_pcie_interface_t intf, uint16_t pf,\n+\t\t\t uint16_t vf);\n int sfc_repr_proxy_del_port(uint16_t pf_port_id, uint16_t repr_id);\n \n int sfc_repr_proxy_add_rxq(uint16_t pf_port_id, uint16_t repr_id,\n@@ -41,6 +43,9 @@ void sfc_repr_proxy_del_txq(uint16_t pf_port_id, uint16_t repr_id,\n int sfc_repr_proxy_start_repr(uint16_t pf_port_id, uint16_t repr_id);\n int sfc_repr_proxy_stop_repr(uint16_t pf_port_id, uint16_t repr_id);\n \n+int sfc_repr_proxy_repr_entity_mac_addr_set(uint16_t pf_port_id,\n+\t\tuint16_t repr_id, const struct rte_ether_addr *mac_addr);\n+\n #ifdef __cplusplus\n }\n #endif\n", "prefixes": [ "3/3" ] }{ "id": 111910, "url": "