From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-bk0-f53.google.com (mail-bk0-f53.google.com [209.85.214.53]) by dpdk.org (Postfix) with ESMTP id 310491F3 for ; Tue, 17 Sep 2013 12:20:41 +0200 (CEST) Received: by mail-bk0-f53.google.com with SMTP id d7so2019608bkh.26 for ; Tue, 17 Sep 2013 03:21:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=7lLypIpaEeFDdXyJN9ZC3vuAoFeXxD3qT4CccKc5KQk=; b=URCoZgAL3Ta5WCnjKWIxyqnJIyWNcdBQj55obvNhXBZH4hqUOLbbMs2xSXLJxUf/4+ iJBmVyRxOMniRBF5JWIcBM5940XfYKiZvBWVl1z5fmO0GBdnefQ+B7ARkAUe2jxrmgT3 YPwrNAGyJaC2sHls03YxnAeeo27UqEd9dITYFaK980VINL43sPd+KZIceGfBbLEtib6U u/kGArrg4vEJFvDEQoHVCTODvAUu8ajJz0E5FM9Bc3usH4e/irReqb/LO+P7If2wQf8v mEp5NY/6ph9HHagup/0OXpa43VJZVM3/1n1Qib/TN+t5gOliRTUX8cPLKTKTXOrv7ZB3 ZPmw== X-Gm-Message-State: ALoCoQlX1rFyYIY1DA6tmzLUFBdzC2uv3HmH6K8KLi+622ngQr9KnUpBBVstVqrBpzz81eUsKJEt X-Received: by 10.204.168.197 with SMTP id v5mr28582727bky.24.1379413279294; Tue, 17 Sep 2013 03:21:19 -0700 (PDT) Received: from 6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by mx.google.com with ESMTPSA id jt14sm9630694bkb.0.1969.12.31.16.00.00 (version=TLSv1 cipher=RC4-SHA bits=128/128); Tue, 17 Sep 2013 03:21:19 -0700 (PDT) Received: by 6wind.com (sSMTP sendmail emulation); Tue, 17 Sep 2013 12:21:16 +0200 From: Thomas Monjalon To: dev@dpdk.org Date: Tue, 17 Sep 2013 12:21:10 +0200 Message-Id: <82132fea875815a5569d5138b2531eabf6545090.1379413101.git.thomas.monjalon@6wind.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: References: <1379363340-20870-1-git-send-email-thomas.monjalon@6wind.com> In-Reply-To: References: Subject: [dpdk-dev] [PATCH v2 2/2] pci: use igb_uio mapping only when needed 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: , X-List-Received-Date: Tue, 17 Sep 2013 10:20:41 -0000 pci_uio_map_resource() should only be called for Intel devices (using igb_uio kernel module). The flag RTE_PCI_DRV_NEED_IGB_UIO is set for all those devices, even when RTE_EAL_UNBIND_PORTS is disabled. Signed-off-by: Thomas Monjalon --- app/test/test_pci.c | 2 -- lib/librte_eal/common/include/rte_pci.h | 2 -- lib/librte_eal/linuxapp/eal/eal_pci.c | 20 +++++++------------- lib/librte_pmd_e1000/em_ethdev.c | 2 -- lib/librte_pmd_e1000/igb_ethdev.c | 4 ---- lib/librte_pmd_ixgbe/ixgbe_ethdev.c | 4 ---- 6 files changed, 7 insertions(+), 27 deletions(-) diff --git a/app/test/test_pci.c b/app/test/test_pci.c index 30d3c9f..55f603d 100644 --- a/app/test/test_pci.c +++ b/app/test/test_pci.c @@ -95,9 +95,7 @@ struct rte_pci_driver my_driver = { .name = "test_driver", .devinit = my_driver_init, .id_table = my_driver_id, -#ifdef RTE_EAL_UNBIND_PORTS .drv_flags = RTE_PCI_DRV_NEED_IGB_UIO, -#endif }; struct rte_pci_driver my_driver2 = { diff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h index 1314d20..3cfce1b 100644 --- a/lib/librte_eal/common/include/rte_pci.h +++ b/lib/librte_eal/common/include/rte_pci.h @@ -184,10 +184,8 @@ struct rte_pci_driver { uint32_t drv_flags; /**< Flags contolling handling of device. */ }; -#ifdef RTE_EAL_UNBIND_PORTS /** Device needs igb_uio kernel module */ #define RTE_PCI_DRV_NEED_IGB_UIO 0x0001 -#endif /** Device driver must be registered several times until failure */ #define RTE_PCI_DRV_MULTIPLE 0x0002 diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c index 3913c65..ec6a7e2 100644 --- a/lib/librte_eal/linuxapp/eal/eal_pci.c +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c @@ -913,13 +913,6 @@ int rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr, struct rte_pci_device *dev) { struct rte_pci_id *id_table; -#ifdef RTE_EAL_UNBIND_PORTS - const char *module_name = NULL; - int uio_status = -1; - - if (dr->drv_flags & RTE_PCI_DRV_NEED_IGB_UIO) - module_name = IGB_UIO_NAME; -#endif for (id_table = dr->id_table ; id_table->vendor_id != 0; id_table++) { @@ -953,14 +946,15 @@ rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr, struct rte_pci_device *d } #ifdef RTE_EAL_UNBIND_PORTS - /* Unbind PCI devices if needed */ - if (module_name != NULL) - if (pci_switch_module(dr, dev, uio_status, module_name) < 0) + if (dr->drv_flags & RTE_PCI_DRV_NEED_IGB_UIO) + /* unbind driver and load uio resources for Intel NICs */ + if (pci_switch_module(dr, dev, 1, IGB_UIO_NAME) < 0) return -1; #else - /* just map the NIC resources */ - if (pci_uio_map_resource(dev) < 0) - return -1; + if (dr->drv_flags & RTE_PCI_DRV_NEED_IGB_UIO) + /* just map resources for Intel NICs */ + if (pci_uio_map_resource(dev) < 0) + return -1; #endif /* reference driver structure */ diff --git a/lib/librte_pmd_e1000/em_ethdev.c b/lib/librte_pmd_e1000/em_ethdev.c index 9c6ff20..103c9cf 100644 --- a/lib/librte_pmd_e1000/em_ethdev.c +++ b/lib/librte_pmd_e1000/em_ethdev.c @@ -280,9 +280,7 @@ static struct eth_driver rte_em_pmd = { { .name = "rte_em_pmd", .id_table = pci_id_em_map, -#ifdef RTE_EAL_UNBIND_PORTS .drv_flags = RTE_PCI_DRV_NEED_IGB_UIO, -#endif }, .eth_dev_init = eth_em_dev_init, .dev_private_size = sizeof(struct e1000_adapter), diff --git a/lib/librte_pmd_e1000/igb_ethdev.c b/lib/librte_pmd_e1000/igb_ethdev.c index 14bdc2b..89709f6 100644 --- a/lib/librte_pmd_e1000/igb_ethdev.c +++ b/lib/librte_pmd_e1000/igb_ethdev.c @@ -522,9 +522,7 @@ static struct eth_driver rte_igb_pmd = { { .name = "rte_igb_pmd", .id_table = pci_id_igb_map, -#ifdef RTE_EAL_UNBIND_PORTS .drv_flags = RTE_PCI_DRV_NEED_IGB_UIO, -#endif }, .eth_dev_init = eth_igb_dev_init, .dev_private_size = sizeof(struct e1000_adapter), @@ -537,9 +535,7 @@ static struct eth_driver rte_igbvf_pmd = { { .name = "rte_igbvf_pmd", .id_table = pci_id_igbvf_map, -#ifdef RTE_EAL_UNBIND_PORTS .drv_flags = RTE_PCI_DRV_NEED_IGB_UIO, -#endif }, .eth_dev_init = eth_igbvf_dev_init, .dev_private_size = sizeof(struct e1000_adapter), diff --git a/lib/librte_pmd_ixgbe/ixgbe_ethdev.c b/lib/librte_pmd_ixgbe/ixgbe_ethdev.c index e26d5b9..d90cd92 100644 --- a/lib/librte_pmd_ixgbe/ixgbe_ethdev.c +++ b/lib/librte_pmd_ixgbe/ixgbe_ethdev.c @@ -807,9 +807,7 @@ static struct eth_driver rte_ixgbe_pmd = { { .name = "rte_ixgbe_pmd", .id_table = pci_id_ixgbe_map, -#ifdef RTE_EAL_UNBIND_PORTS .drv_flags = RTE_PCI_DRV_NEED_IGB_UIO, -#endif }, .eth_dev_init = eth_ixgbe_dev_init, .dev_private_size = sizeof(struct ixgbe_adapter), @@ -822,9 +820,7 @@ static struct eth_driver rte_ixgbevf_pmd = { { .name = "rte_ixgbevf_pmd", .id_table = pci_id_ixgbevf_map, -#ifdef RTE_EAL_UNBIND_PORTS .drv_flags = RTE_PCI_DRV_NEED_IGB_UIO, -#endif }, .eth_dev_init = eth_ixgbevf_dev_init, .dev_private_size = sizeof(struct ixgbe_adapter), -- 1.7.10.4