From patchwork Thu Feb 7 12:17:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 50185 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E6A081B55F; Thu, 7 Feb 2019 13:18:43 +0100 (CET) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 4B7FD1B4C9 for ; Thu, 7 Feb 2019 13:18:18 +0100 (CET) X-Virus-Scanned: Proofpoint Essentials engine Received: from webmail.solarflare.com (webmail.solarflare.com [12.187.104.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us3.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with ESMTPS id 1927A600057 for ; Thu, 7 Feb 2019 12:18:17 +0000 (UTC) Received: from ocex03.SolarFlarecom.com (10.20.40.36) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 7 Feb 2019 04:18:10 -0800 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1395.4 via Frontend Transport; Thu, 7 Feb 2019 04:18:10 -0800 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id x17CI9J9013288 for ; Thu, 7 Feb 2019 12:18:09 GMT Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 3E2E61613E4 for ; Thu, 7 Feb 2019 12:18:09 +0000 (GMT) From: Andrew Rybchenko To: Date: Thu, 7 Feb 2019 12:17:45 +0000 Message-ID: <1549541873-17403-23-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1549541873-17403-1-git-send-email-arybchenko@solarflare.com> References: <1549541873-17403-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.5.1010-24412.006 X-TM-AS-Result: No-0.086500-4.000000-10 X-TMASE-MatchedRID: iMP5BsV0NcrqS7G2+aV4gmO43qcJKa+vSjyMfjCRfaPfUZT83lbkEOfO AF5/z/59PYw9javfqq5jtX6mE5W/EKF5AEN4ATBvEhGH3CRdKUWPkLWPE/SFuo1OuwjPrj0Eb1W 5p1u8tFzoeKOTEZFx86IYjKg3ZP+QP6r3lv2GeEum/Bn0aZ3AM1o0Sa3mjlr+myiLZetSf8mfop 0ytGwvXiq2rl3dzGQ1FdlkKSmICRvffNov+rQxrJTVjoH/tkVbo+b+cd3HS4fTbuEI4qY0ueh5+ t5ZGjrxExB0eqs6fhOGKiQRe9M5gEeBTfuk/jFfG9gFrduzbrAjoqQAvYDmRwy1ivD0G5PCpKZI 9GApJkzQfLyY6W+8Xu90JQgW5qyr X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10-0.086500-4.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.5.1010-24412.006 X-MDID: 1549541897-9h0aAaFmXx07 Subject: [dpdk-dev] [PATCH 22/30] net/sfc: move Rx/Tx datapath names to shared state X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Prepare to make sfc_adapter primary process private data. Signed-off-by: Andrew Rybchenko --- drivers/net/sfc/sfc.h | 21 +++++++++---------- drivers/net/sfc/sfc_ethdev.c | 39 +++++++++++++++++++----------------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/drivers/net/sfc/sfc.h b/drivers/net/sfc/sfc.h index 766336f8c..890a04d0e 100644 --- a/drivers/net/sfc/sfc.h +++ b/drivers/net/sfc/sfc.h @@ -178,6 +178,9 @@ struct sfc_rss { struct sfc_adapter_shared { struct rte_pci_addr pci_addr; uint16_t port_id; + + char *dp_rx_name; + char *dp_tx_name; }; /* Adapter process private data */ @@ -281,19 +284,15 @@ struct sfc_adapter { uint32_t rxd_wait_timeout_ns; struct sfc_rss rss; +}; - /* - * Shared memory copy of the Rx datapath name to be used by - * the secondary process to find Rx datapath to be used. - */ - char *dp_rx_name; +static inline struct sfc_adapter_shared * +sfc_adapter_shared_by_eth_dev(struct rte_eth_dev *eth_dev) +{ + struct sfc_adapter *sa = eth_dev->data->dev_private; - /* - * Shared memory copy of the Tx datapath name to be used by - * the secondary process to find Tx datapath to be used. - */ - char *dp_tx_name; -}; + return sa->priv.shared; +} /* * Add wrapper functions to acquire/release lock to be able to remove or diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index 88dbecd46..9f0036375 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -1768,6 +1768,7 @@ static int sfc_eth_dev_set_ops(struct rte_eth_dev *dev) { struct sfc_adapter *sa = dev->data->dev_private; + struct sfc_adapter_shared *sas = sfc_adapter_shared_by_eth_dev(dev); const struct sfc_dp_rx *dp_rx; const struct sfc_dp_tx *dp_tx; const efx_nic_cfg_t *encp; @@ -1819,13 +1820,13 @@ sfc_eth_dev_set_ops(struct rte_eth_dev *dev) } } - sa->dp_rx_name = sfc_strdup(dp_rx->dp.name); - if (sa->dp_rx_name == NULL) { + sas->dp_rx_name = sfc_strdup(dp_rx->dp.name); + if (sas->dp_rx_name == NULL) { rc = ENOMEM; goto fail_dp_rx_name; } - sfc_notice(sa, "use %s Rx datapath", sa->dp_rx_name); + sfc_notice(sa, "use %s Rx datapath", sas->dp_rx_name); rc = sfc_kvargs_process(sa, SFC_KVARG_TX_DATAPATH, sfc_kvarg_string_handler, &tx_name); @@ -1856,13 +1857,13 @@ sfc_eth_dev_set_ops(struct rte_eth_dev *dev) } } - sa->dp_tx_name = sfc_strdup(dp_tx->dp.name); - if (sa->dp_tx_name == NULL) { + sas->dp_tx_name = sfc_strdup(dp_tx->dp.name); + if (sas->dp_tx_name == NULL) { rc = ENOMEM; goto fail_dp_tx_name; } - sfc_notice(sa, "use %s Tx datapath", sa->dp_tx_name); + sfc_notice(sa, "use %s Tx datapath", sas->dp_tx_name); sa->priv.dp_rx = dp_rx; sa->priv.dp_tx = dp_tx; @@ -1878,8 +1879,8 @@ sfc_eth_dev_set_ops(struct rte_eth_dev *dev) fail_dp_tx_caps: fail_dp_tx: fail_kvarg_tx_datapath: - rte_free(sa->dp_rx_name); - sa->dp_rx_name = NULL; + rte_free(sas->dp_rx_name); + sas->dp_rx_name = NULL; fail_dp_rx_name: fail_dp_rx_caps: @@ -1892,17 +1893,18 @@ static void sfc_eth_dev_clear_ops(struct rte_eth_dev *dev) { struct sfc_adapter *sa = dev->data->dev_private; + struct sfc_adapter_shared *sas = sfc_adapter_shared_by_eth_dev(dev); dev->dev_ops = NULL; dev->rx_pkt_burst = NULL; dev->tx_pkt_burst = NULL; - rte_free(sa->dp_tx_name); - sa->dp_tx_name = NULL; + rte_free(sas->dp_tx_name); + sas->dp_tx_name = NULL; sa->priv.dp_tx = NULL; - rte_free(sa->dp_rx_name); - sa->dp_rx_name = NULL; + rte_free(sas->dp_rx_name); + sas->dp_rx_name = NULL; sa->priv.dp_rx = NULL; } @@ -1926,6 +1928,7 @@ sfc_eth_dev_secondary_init(struct rte_eth_dev *dev, uint32_t logtype_main) * in shared memory only. */ struct sfc_adapter *sa = dev->data->dev_private; + struct sfc_adapter_shared *sas = sfc_adapter_shared_by_eth_dev(dev); struct sfc_adapter_priv *sap; const struct sfc_dp_rx *dp_rx; const struct sfc_dp_tx *dp_tx; @@ -1943,32 +1946,32 @@ sfc_eth_dev_secondary_init(struct rte_eth_dev *dev, uint32_t logtype_main) sap->logtype_main = logtype_main; - dp_rx = sfc_dp_find_rx_by_name(&sfc_dp_head, sa->dp_rx_name); + dp_rx = sfc_dp_find_rx_by_name(&sfc_dp_head, sas->dp_rx_name); if (dp_rx == NULL) { SFC_LOG(sa, RTE_LOG_ERR, logtype_main, - "cannot find %s Rx datapath", sa->dp_rx_name); + "cannot find %s Rx datapath", sas->dp_rx_name); rc = ENOENT; goto fail_dp_rx; } if (~dp_rx->features & SFC_DP_RX_FEAT_MULTI_PROCESS) { SFC_LOG(sa, RTE_LOG_ERR, logtype_main, "%s Rx datapath does not support multi-process", - sa->dp_rx_name); + sas->dp_rx_name); rc = EINVAL; goto fail_dp_rx_multi_process; } - dp_tx = sfc_dp_find_tx_by_name(&sfc_dp_head, sa->dp_tx_name); + dp_tx = sfc_dp_find_tx_by_name(&sfc_dp_head, sas->dp_tx_name); if (dp_tx == NULL) { SFC_LOG(sa, RTE_LOG_ERR, logtype_main, - "cannot find %s Tx datapath", sa->dp_tx_name); + "cannot find %s Tx datapath", sas->dp_tx_name); rc = ENOENT; goto fail_dp_tx; } if (~dp_tx->features & SFC_DP_TX_FEAT_MULTI_PROCESS) { SFC_LOG(sa, RTE_LOG_ERR, logtype_main, "%s Tx datapath does not support multi-process", - sa->dp_tx_name); + sas->dp_tx_name); rc = EINVAL; goto fail_dp_tx_multi_process; }