From patchwork Fri Nov 6 00:09:31 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Hemminger X-Patchwork-Id: 8728 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id AF5448E7A; Fri, 6 Nov 2015 01:09:31 +0100 (CET) Received: from mail-pa0-f42.google.com (mail-pa0-f42.google.com [209.85.220.42]) by dpdk.org (Postfix) with ESMTP id 44A2B8D8A for ; Fri, 6 Nov 2015 01:09:28 +0100 (CET) Received: by padhx2 with SMTP id hx2so94211302pad.1 for ; Thu, 05 Nov 2015 16:09:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber_org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=UxBVB8e5BTnABL7cWl8Rrj5fAlBtWJHbojHLpDRB970=; b=lW1D7UXDkZF01BcQyoql4YNzzUWFLMb8RcFzLs9OQ2FBJRf+/gFslIPIU77wYAIe6Y PKbgdKD2yFJwcLPLfjxIvdIEy3gnMHIZfBhvNL/IKhY4FLzMXoMM5Ghf9ZqQlz7QsDHA 9hIaSheu+mRRuieXr8KqlSOvkXAi0zostdzoLOc0v6dPyv6Umhb0luVZaUe1Vo31PPRF oIV2u2IaLtmAlYNRvgsceVkZEMKrPKBnNNgzKtIXRxWYVJL0F0oeiVsiS1jHySFjI4dL 2x/VMobAPXbORVt9AaBfx3nEqtVx7N+labQg0IvheXThqsGXssecnIOFElSrvAtKY9qK u+tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=UxBVB8e5BTnABL7cWl8Rrj5fAlBtWJHbojHLpDRB970=; b=KvszCAZAtxsPIywS2SGuoV08Skiphr4WOjzBXQB91K8bsnfRBN2qNrVwIqJxQrrFXc aWUANMcSST8W8xk29Z30R8rCOR+NYpn3VaeV+/2ON99rZuEV6QsDa8/IJb5tBmpUqDsf p+1+ZDPsdddpcSqGiPyMY2BngEtuwvGHeopN+peTKv7rtbDXENaI9uq/IiGW3qUHgpCR AEIX7tjkxEpzMo3p79yrU57R+hn5v9m5RKoO1T7j0w3Abfj5zj2A5kSRY3xBNO1+Dojr VebFLRRGvk3zOZm/9zsfRcMBdd1n6TSXpyk8Oz+S+FoG23ZGmUnMBadPyo/hg+f92s5k o78w== X-Gm-Message-State: ALoCoQnm+B71a29rmxdGJVhOA9zT1Y2/AGCfpYWEppZ/Dwt43ol+ZYNzAi8Kj3XWLmGLYCF8cgRy X-Received: by 10.68.172.228 with SMTP id bf4mr13198338pbc.169.1446768567622; Thu, 05 Nov 2015 16:09:27 -0800 (PST) Received: from xeon-e3.home.lan (static-50-53-82-155.bvtn.or.frontiernet.net. [50.53.82.155]) by smtp.gmail.com with ESMTPSA id rz9sm9963592pbb.61.2015.11.05.16.09.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 05 Nov 2015 16:09:26 -0800 (PST) From: Stephen Hemminger To: dev@dpdk.org Date: Thu, 5 Nov 2015 16:09:31 -0800 Message-Id: <1446768574-32310-3-git-send-email-stephen@networkplumber.org> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1446768574-32310-1-git-send-email-stephen@networkplumber.org> References: <1446768574-32310-1-git-send-email-stephen@networkplumber.org> Subject: [dpdk-dev] [PATCH 2/5] e1000: use rte_eth_dma_zone_reserve X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Use common code to handle Xen support at runtime. Signed-off-by: Stephen Hemminger --- drivers/net/e1000/em_rxtx.c | 40 ++++++---------------------------------- drivers/net/e1000/igb_rxtx.c | 40 ++++++---------------------------------- 2 files changed, 12 insertions(+), 68 deletions(-) diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c index 03e1bc2..d8fb252 100644 --- a/drivers/net/e1000/em_rxtx.c +++ b/drivers/net/e1000/em_rxtx.c @@ -1084,28 +1084,6 @@ eth_em_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, #define EM_MAX_BUF_SIZE 16384 #define EM_RCTL_FLXBUF_STEP 1024 -static const struct rte_memzone * -ring_dma_zone_reserve(struct rte_eth_dev *dev, const char *ring_name, - uint16_t queue_id, uint32_t ring_size, int socket_id) -{ - const struct rte_memzone *mz; - char z_name[RTE_MEMZONE_NAMESIZE]; - - snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d", - dev->driver->pci_drv.name, ring_name, dev->data->port_id, - queue_id); - - if ((mz = rte_memzone_lookup(z_name)) != 0) - return (mz); - -#ifdef RTE_LIBRTE_XEN_DOM0 - return rte_memzone_reserve_bounded(z_name, ring_size, - socket_id, 0, RTE_CACHE_LINE_SIZE, RTE_PGSIZE_2M); -#else - return rte_memzone_reserve(z_name, ring_size, socket_id, 0); -#endif -} - static void em_tx_queue_release_mbufs(struct em_tx_queue *txq) { @@ -1253,8 +1231,9 @@ eth_em_tx_queue_setup(struct rte_eth_dev *dev, * resizing in later calls to the queue setup function. */ tsize = sizeof(txq->tx_ring[0]) * E1000_MAX_RING_DESC; - if ((tz = ring_dma_zone_reserve(dev, "tx_ring", queue_idx, tsize, - socket_id)) == NULL) + tz = rte_eth_dma_zone_reserve(dev, "tx_ring", queue_idx, tsize, + RTE_CACHE_LINE_SIZE, socket_id); + if (tz == NULL) return (-ENOMEM); /* Allocate the tx queue data structure. */ @@ -1280,11 +1259,7 @@ eth_em_tx_queue_setup(struct rte_eth_dev *dev, txq->port_id = dev->data->port_id; txq->tdt_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_TDT(queue_idx)); -#ifndef RTE_LIBRTE_XEN_DOM0 - txq->tx_ring_phys_addr = (uint64_t) tz->phys_addr; -#else txq->tx_ring_phys_addr = rte_mem_phy2mch(tz->memseg_id, tz->phys_addr); -#endif txq->tx_ring = (struct e1000_data_desc *) tz->addr; PMD_INIT_LOG(DEBUG, "sw_ring=%p hw_ring=%p dma_addr=0x%"PRIx64, @@ -1380,8 +1355,9 @@ eth_em_rx_queue_setup(struct rte_eth_dev *dev, /* Allocate RX ring for max possible mumber of hardware descriptors. */ rsize = sizeof(rxq->rx_ring[0]) * E1000_MAX_RING_DESC; - if ((rz = ring_dma_zone_reserve(dev, "rx_ring", queue_idx, rsize, - socket_id)) == NULL) + rz = rte_eth_dma_zone_reserve(dev, "rx_ring", queue_idx, rsize, + RTE_CACHE_LINE_SIZE, socket_id); + if (rz == NULL) return (-ENOMEM); /* Allocate the RX queue data structure. */ @@ -1410,11 +1386,7 @@ eth_em_rx_queue_setup(struct rte_eth_dev *dev, rxq->rdt_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_RDT(queue_idx)); rxq->rdh_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_RDH(queue_idx)); -#ifndef RTE_LIBRTE_XEN_DOM0 - rxq->rx_ring_phys_addr = (uint64_t) rz->phys_addr; -#else rxq->rx_ring_phys_addr = rte_mem_phy2mch(rz->memseg_id, rz->phys_addr); -#endif rxq->rx_ring = (struct e1000_rx_desc *) rz->addr; PMD_INIT_LOG(DEBUG, "sw_ring=%p hw_ring=%p dma_addr=0x%"PRIx64, diff --git a/drivers/net/e1000/igb_rxtx.c b/drivers/net/e1000/igb_rxtx.c index 384e4f1..996e7da 100644 --- a/drivers/net/e1000/igb_rxtx.c +++ b/drivers/net/e1000/igb_rxtx.c @@ -1209,28 +1209,6 @@ eth_igb_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, * desscriptors should meet the following condition: * (num_ring_desc * sizeof(struct e1000_rx/tx_desc)) % 128 == 0 */ -static const struct rte_memzone * -ring_dma_zone_reserve(struct rte_eth_dev *dev, const char *ring_name, - uint16_t queue_id, uint32_t ring_size, int socket_id) -{ - char z_name[RTE_MEMZONE_NAMESIZE]; - const struct rte_memzone *mz; - - snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d", - dev->driver->pci_drv.name, ring_name, - dev->data->port_id, queue_id); - mz = rte_memzone_lookup(z_name); - if (mz) - return mz; - -#ifdef RTE_LIBRTE_XEN_DOM0 - return rte_memzone_reserve_bounded(z_name, ring_size, - socket_id, 0, E1000_ALIGN, RTE_PGSIZE_2M); -#else - return rte_memzone_reserve_aligned(z_name, ring_size, - socket_id, 0, E1000_ALIGN); -#endif -} static void igb_tx_queue_release_mbufs(struct igb_tx_queue *txq) @@ -1365,8 +1343,8 @@ eth_igb_tx_queue_setup(struct rte_eth_dev *dev, * resizing in later calls to the queue setup function. */ size = sizeof(union e1000_adv_tx_desc) * E1000_MAX_RING_DESC; - tz = ring_dma_zone_reserve(dev, "tx_ring", queue_idx, - size, socket_id); + tz = rte_eth_dma_zone_reserve(dev, "tx_ring", queue_idx, size, + E1000_ALIGN, socket_id); if (tz == NULL) { igb_tx_queue_release(txq); return (-ENOMEM); @@ -1384,12 +1362,9 @@ eth_igb_tx_queue_setup(struct rte_eth_dev *dev, txq->port_id = dev->data->port_id; txq->tdt_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_TDT(txq->reg_idx)); -#ifndef RTE_LIBRTE_XEN_DOM0 - txq->tx_ring_phys_addr = (uint64_t) tz->phys_addr; -#else txq->tx_ring_phys_addr = rte_mem_phy2mch(tz->memseg_id, tz->phys_addr); -#endif - txq->tx_ring = (union e1000_adv_tx_desc *) tz->addr; + + txq->tx_ring = (union e1000_adv_tx_desc *) tz->addr; /* Allocate software ring */ txq->sw_ring = rte_zmalloc("txq->sw_ring", sizeof(struct igb_tx_entry) * nb_desc, @@ -1514,18 +1489,15 @@ eth_igb_rx_queue_setup(struct rte_eth_dev *dev, * resizing in later calls to the queue setup function. */ size = sizeof(union e1000_adv_rx_desc) * E1000_MAX_RING_DESC; - rz = ring_dma_zone_reserve(dev, "rx_ring", queue_idx, size, socket_id); + rz = rte_eth_dma_zone_reserve(dev, "rx_ring", queue_idx, size, + E1000_ALIGN, socket_id); if (rz == NULL) { igb_rx_queue_release(rxq); return (-ENOMEM); } rxq->rdt_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_RDT(rxq->reg_idx)); rxq->rdh_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_RDH(rxq->reg_idx)); -#ifndef RTE_LIBRTE_XEN_DOM0 - rxq->rx_ring_phys_addr = (uint64_t) rz->phys_addr; -#else rxq->rx_ring_phys_addr = rte_mem_phy2mch(rz->memseg_id, rz->phys_addr); -#endif rxq->rx_ring = (union e1000_adv_rx_desc *) rz->addr; /* Allocate software ring. */