From patchwork Thu Feb 7 12:17:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 50169 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 34AA41B4E2; Thu, 7 Feb 2019 13:18:27 +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 122361B4B0 for ; Thu, 7 Feb 2019 13:18:15 +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 D859E600061 for ; Thu, 7 Feb 2019 12:18:13 +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:09 -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 x17CI83o013241 for ; Thu, 7 Feb 2019 12:18:08 GMT Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 97D721613E4 for ; Thu, 7 Feb 2019 12:18:08 +0000 (GMT) From: Andrew Rybchenko To: Date: Thu, 7 Feb 2019 12:17:34 +0000 Message-ID: <1549541873-17403-12-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-3.347400-4.000000-10 X-TMASE-MatchedRID: CpBUfk8vmJsfOjKSU0pCER+WEMjoO9WWTJDl9FKHbrnuaWurQfPpTaYm f3n26fzqalyDl//i2XBNkhpxJfv8GkJH8WyQMk5uliwpJdZauwdYMtqMzbYRNsA0eOJZYj7tvlJ 3+emUkhzi8zVgXoAltsIJ+4gwXrEtJ0RPnyOnrZIfCeRrCKctR4OAXlAXuAWeUQL6hgtEWgEzdf A9PWbPw80U/gfsvEKn12R8J4aRt5uAUA888eNE92WGksDODCi6n+C1jk8hv6WqFrt9xUgp+uq+T 0IcdvQ1BtPt5WQTZkLauEQaIW46K6fL1/LSJ6vL X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--3.347400-4.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.5.1010-24412.006 X-MDID: 1549541894-YNkbNRCNamCP Subject: [dpdk-dev] [PATCH 11/30] net/sfc: move datapath RxQ handle to shared RxQ info 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" If datapath supports multi-process, it should be possible to get its RxQ structure by the queue index. Signed-off-by: Andrew Rybchenko --- drivers/net/sfc/sfc_ethdev.c | 8 +++----- drivers/net/sfc/sfc_rx.c | 16 ++++++++-------- drivers/net/sfc/sfc_rx.h | 2 +- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index 7118d2293..71be88f3e 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -415,7 +415,7 @@ sfc_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id, if (rc != 0) goto fail_rx_qinit; - dev->data->rx_queues[rx_queue_id] = sa->rxq_info[rx_queue_id].rxq->dp; + dev->data->rx_queues[rx_queue_id] = sa->rxq_info[rx_queue_id].dp; sfc_adapter_unlock(sa); @@ -1123,16 +1123,14 @@ sfc_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id) const struct sfc_adapter_priv *sap = sfc_adapter_priv_by_eth_dev(dev); struct sfc_adapter *sa = dev->data->dev_private; struct sfc_rxq_info *rxq_info; - struct sfc_rxq *rxq; SFC_ASSERT(rx_queue_id < sa->rxq_count); rxq_info = &sa->rxq_info[rx_queue_id]; - rxq = rxq_info->rxq; - if (rxq == NULL || (rxq_info->state & SFC_RXQ_STARTED) == 0) + if ((rxq_info->state & SFC_RXQ_STARTED) == 0) return 0; - return sap->dp_rx->qdesc_npending(rxq->dp); + return sap->dp_rx->qdesc_npending(rxq_info->dp); } static int diff --git a/drivers/net/sfc/sfc_rx.c b/drivers/net/sfc/sfc_rx.c index 130270dba..886a7a2fd 100644 --- a/drivers/net/sfc/sfc_rx.c +++ b/drivers/net/sfc/sfc_rx.c @@ -590,7 +590,7 @@ sfc_rx_qflush(struct sfc_adapter *sa, unsigned int sw_index) sfc_notice(sa, "RxQ %u flushed", sw_index); } - sa->priv.dp_rx->qpurge(rxq->dp); + sa->priv.dp_rx->qpurge(rxq_info->dp); } static int @@ -704,7 +704,7 @@ sfc_rx_qstart(struct sfc_adapter *sa, unsigned int sw_index) efx_rx_qenable(rxq->common); - rc = sa->priv.dp_rx->qstart(rxq->dp, evq->read_ptr); + rc = sa->priv.dp_rx->qstart(rxq_info->dp, evq->read_ptr); if (rc != 0) goto fail_dp_qstart; @@ -723,7 +723,7 @@ sfc_rx_qstart(struct sfc_adapter *sa, unsigned int sw_index) return 0; fail_mac_filter_default_rxq_set: - sa->priv.dp_rx->qstop(rxq->dp, &rxq->evq->read_ptr); + sa->priv.dp_rx->qstop(rxq_info->dp, &rxq->evq->read_ptr); fail_dp_qstart: sfc_rx_qflush(sa, sw_index); @@ -758,7 +758,7 @@ sfc_rx_qstop(struct sfc_adapter *sa, unsigned int sw_index) sa->eth_dev->data->rx_queue_state[sw_index] = RTE_ETH_QUEUE_STATE_STOPPED; - sa->priv.dp_rx->qstop(rxq->dp, &rxq->evq->read_ptr); + sa->priv.dp_rx->qstop(rxq_info->dp, &rxq->evq->read_ptr); if (sw_index == 0) efx_mac_filter_default_rxq_clear(sa->nic); @@ -1051,11 +1051,11 @@ sfc_rx_qinit(struct sfc_adapter *sa, unsigned int sw_index, rc = sa->priv.dp_rx->qcreate(sa->eth_dev->data->port_id, sw_index, &RTE_ETH_DEV_TO_PCI(sa->eth_dev)->addr, - socket_id, &info, &rxq->dp); + socket_id, &info, &rxq_info->dp); if (rc != 0) goto fail_dp_rx_qcreate; - evq->dp_rxq = rxq->dp; + evq->dp_rxq = rxq_info->dp; rxq_info->state = SFC_RXQ_INITIALIZED; @@ -1096,8 +1096,8 @@ sfc_rx_qfini(struct sfc_adapter *sa, unsigned int sw_index) rxq = rxq_info->rxq; SFC_ASSERT(rxq_info->state == SFC_RXQ_INITIALIZED); - sa->priv.dp_rx->qdestroy(rxq->dp); - rxq->dp = NULL; + sa->priv.dp_rx->qdestroy(rxq_info->dp); + rxq_info->dp = NULL; rxq_info->rxq = NULL; rxq_info->entries = 0; diff --git a/drivers/net/sfc/sfc_rx.h b/drivers/net/sfc/sfc_rx.h index be64004d0..9c946d7cb 100644 --- a/drivers/net/sfc/sfc_rx.h +++ b/drivers/net/sfc/sfc_rx.h @@ -59,7 +59,6 @@ struct sfc_rxq { efsys_mem_t mem; unsigned int hw_index; uint16_t buf_size; - struct sfc_dp_rxq *dp; }; static inline unsigned int @@ -124,6 +123,7 @@ struct sfc_rxq_info { efx_rxq_type_t type; unsigned int type_flags; struct sfc_rxq *rxq; + struct sfc_dp_rxq *dp; boolean_t deferred_start; boolean_t deferred_started; unsigned int refill_threshold;