From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by dpdk.org (Postfix) with ESMTP id 8D8C91094 for ; Tue, 4 Jul 2017 13:57:49 +0200 (CEST) Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v64BsTAx018766 for ; Tue, 4 Jul 2017 07:57:48 -0400 Received: from e23smtp03.au.ibm.com (e23smtp03.au.ibm.com [202.81.31.145]) by mx0b-001b2d01.pphosted.com with ESMTP id 2bg6gda7mc-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 04 Jul 2017 07:57:48 -0400 Received: from localhost by e23smtp03.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 4 Jul 2017 21:57:45 +1000 Received: from d23relay07.au.ibm.com (202.81.31.226) by e23smtp03.au.ibm.com (202.81.31.209) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 4 Jul 2017 21:57:43 +1000 Received: from d23av06.au.ibm.com (d23av06.au.ibm.com [9.190.235.151]) by d23relay07.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v64Bvhmk5308680 for ; Tue, 4 Jul 2017 21:57:43 +1000 Received: from d23av06.au.ibm.com (localhost [127.0.0.1]) by d23av06.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id v64BvgNh006877 for ; Tue, 4 Jul 2017 21:57:42 +1000 Received: from chozha.in.ibm.com ([9.109.223.159]) by d23av06.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id v64BveHA006818; Tue, 4 Jul 2017 21:57:41 +1000 From: Gowrishankar To: Declan Doherty Cc: dev@dpdk.org, Thomas Monjalon , Gowrishankar Muthukrishnan Date: Tue, 4 Jul 2017 17:27:40 +0530 X-Mailer: git-send-email 1.9.1 In-Reply-To: References: X-TM-AS-MML: disable x-cbid: 17070411-0008-0000-0000-0000014C54C2 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17070411-0009-0000-0000-0000097C81FA Message-Id: <266cd54d289bfd6e9535a173c9607f0234f8b1b7.1499167396.git.gowrishankar.m@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-07-04_07:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1707040206 Subject: [dpdk-dev] [PATCH v2] net/bonding: support bifurcated driver in eal cli using --vdev 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: , X-List-Received-Date: Tue, 04 Jul 2017 11:57:49 -0000 From: Gowrishankar Muthukrishnan At present, creating bonding devices using --vdev is broken for PMD like mlx5 as it is neither UIO nor VFIO based and hence PMD driver is unknown to find_port_id_by_pci_addr(), as below. testpmd --vdev 'net_bonding0,mode=1,slave=,socket_id=0' PMD: bond_ethdev_parse_slave_port_kvarg(150) - Invalid slave port value () specified EAL: Failed to parse slave ports for bonded device net_bonding0 This patch fixes parsing PCI ID from bonding device params by verifying it in RTE PCI bus, rather than checking dev->kdrv. Changes: v2 - revisit fix by iterating rte_pci_bus Signed-off-by: Gowrishankar Muthukrishnan --- drivers/net/bonding/rte_eth_bond_args.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_args.c b/drivers/net/bonding/rte_eth_bond_args.c index c718e61..180586c 100644 --- a/drivers/net/bonding/rte_eth_bond_args.c +++ b/drivers/net/bonding/rte_eth_bond_args.c @@ -40,6 +40,8 @@ #include "rte_eth_bond.h" #include "rte_eth_bond_private.h" +extern struct rte_pci_bus rte_pci_bus; + const char *pmd_bond_init_valid_arguments[] = { PMD_BOND_SLAVE_PORT_KVARG, PMD_BOND_PRIMARY_SLAVE_KVARG, @@ -59,16 +61,6 @@ unsigned i; for (i = 0; i < rte_eth_dev_count(); i++) { - - /* Currently populated by rte_eth_copy_pci_info(). - * - * TODO: Once the PCI bus has arrived we should have a better - * way to test for being a PCI device or not. - */ - if (rte_eth_devices[i].data->kdrv == RTE_KDRV_UNKNOWN || - rte_eth_devices[i].data->kdrv == RTE_KDRV_NONE) - continue; - pci_dev = RTE_ETH_DEV_TO_PCI(&rte_eth_devices[i]); eth_pci_addr = &pci_dev->addr; @@ -103,12 +95,18 @@ static inline int parse_port_id(const char *port_str) { + struct rte_pci_device *dev; struct rte_pci_addr dev_addr; - int port_id; + int port_id = -1; /* try parsing as pci address, physical devices */ if (eal_parse_pci_DomBDF(port_str, &dev_addr) == 0) { - port_id = find_port_id_by_pci_addr(&dev_addr); + FOREACH_DEVICE_ON_PCIBUS(dev) { + if (rte_eal_compare_pci_addr(&dev->addr, &dev_addr)) + continue; + + port_id = find_port_id_by_pci_addr(&dev_addr); + } if (port_id < 0) return -1; } else { -- 1.9.1