From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <prvs=2050b901fc=gmussar@ciena.com>
Received: from mx0a-00103a01.pphosted.com (mx0b-00103a01.pphosted.com
 [67.231.152.227]) by dpdk.org (Postfix) with ESMTP id 0EF9D2956
 for <dev@dpdk.org>; Tue, 30 Aug 2016 15:12:54 +0200 (CEST)
Received: from pps.filterd (m0002317.ppops.net [127.0.0.1])
 by mx0b-00103a01.pphosted.com (8.16.0.17/8.16.0.17) with SMTP id
 u7UDBUjq022640; Tue, 30 Aug 2016 09:12:54 -0400
Received: from vawvcgsie2k1301.ciena.com (lin1-118-36-35.ciena.com
 [63.118.36.35])
 by mx0b-00103a01.pphosted.com with ESMTP id 25373eree5-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);
 Tue, 30 Aug 2016 09:12:53 -0400
Received: from VAWVE2K13MBX01.ciena.com (10.4.156.87) by
 VAWVCGSIE2K1301.ciena.com (10.4.62.15) with Microsoft SMTP Server (TLS) id
 15.0.1104.5; Tue, 30 Aug 2016 09:12:53 -0400
Received: from ONWVEXCHHT02.ciena.com (10.128.6.17) by
 VAWVE2K13MBX01.ciena.com (10.4.156.87) with Microsoft SMTP Server (TLS) id
 15.0.1104.5; Tue, 30 Aug 2016 09:12:46 -0400
Received: from ONWVEXCHMB04.ciena.com ([::1]) by ONWVEXCHHT02.ciena.com
 ([::1]) with mapi; Tue, 30 Aug 2016 09:12:46 -0400
From: "Mussar, Gary" <gmussar@ciena.com>
To: "Dey, Souvik" <sodey@sonusnet.com>, Stephen Hemminger
 <stephen@networkplumber.org>
CC: "nhorman@tuxdriver.com" <nhorman@tuxdriver.com>, "dev@dpdk.org"
 <dev@dpdk.org>
Date: Tue, 30 Aug 2016 09:12:44 -0400
Thread-Topic: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.
Thread-Index: AQHR/ngJrYBSlPHhJUWN6RhK2Yt0WKBbZ3YAgACM9VCABBxAUIAAiEwAgADnIXA=
Message-ID: <C281A17C31CFD745B242416D0E96EC63AB81F629@ONWVEXCHMB04.ciena.com>
References: <20160825022546.96468-1-sodey@sonusnet.com>
 <20160826085500.5691e07d@xeon-e3>
 <BN6PR03MB2740E7E9FFD9EC7D093A3442DAEF0@BN6PR03MB2740.namprd03.prod.outlook.com>
 <C281A17C31CFD745B242416D0E96EC63AB81F535@ONWVEXCHMB04.ciena.com>
 <BN6PR03MB27402670D815D01FE58D3E38DAE10@BN6PR03MB2740.namprd03.prod.outlook.com>
In-Reply-To: <BN6PR03MB27402670D815D01FE58D3E38DAE10@BN6PR03MB2740.namprd03.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, ,
 definitions=2016-08-30_06:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0
 priorityscore=1501 suspectscore=0
 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015
 impostorscore=0 lowpriorityscore=0 adultscore=0 classifier=spam adjust=0
 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1608300129
Subject: Re: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Tue, 30 Aug 2016 13:12:55 -0000

-----Original Message-----
From: Dey, Souvik [mailto:sodey@sonusnet.com]=20
Sent: Monday, August 29, 2016 7:17 PM
To: Mussar, Gary; Stephen Hemminger
Cc: nhorman@tuxdriver.com; dev@dpdk.org
Subject: RE: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.

Hi,

I already followed the 100% python way and submitted the v3 of this patch. =
http://dpdk.org/dev/patchwork/patch/15378/
How will your patch be different in solving the issue. There will always be=
 multiple ways to solving things right.

GM> When I first tackled this problem I used Popen() and got the exact same=
 feedback about using 100% python. The version I posted yesterday satisfied=
 the internal reviewers.=20


V3 of my submitted patch:

diff --git a/tools/dpdk-devbind.py b/tools/dpdk-devbind.py index b69ca2a..c=
0b46ee 100755
--- a/tools/dpdk-devbind.py
+++ b/tools/dpdk-devbind.py
@@ -36,6 +36,7 @@  import sys
 import os
 import getopt
 import subprocess
+
 from os.path import exists, abspath, dirname, basename
=20
 # The PCI base class for NETWORK devices @@ -222,8 +223,19 @@  def get_pci=
_device_details(dev_id):
         device[name] =3D value
     # check for a unix interface name
     sys_path =3D "/sys/bus/pci/devices/%s/net/" % dev_id
+    # the path for virtio devices are different, so get the correct path
+    virtio =3D "/sys/bus/pci/devices/%s/" % dev_id
+    ls =3D subprocess.Popen(['ls', virtio], stdout=3Dsubprocess.PIPE)
+    grep =3D subprocess.Popen('grep virt'.split(), stdin=3Dls.stdout,
+                            stdout=3Dsubprocess.PIPE)
+    ls.stdout.close()
+    virtio =3D grep.communicate()[0].rstrip()
+    ls.wait()
+    virtio_sys_path =3D "/sys/bus/pci/devices/%s/%s/net/" % (dev_id,=20
+ virtio)
     if exists(sys_path):
         device["Interface"] =3D ",".join(os.listdir(sys_path))
+    elif exists(virtio_sys_path):
+        device["Interface"] =3D ",".join(os.listdir(virtio_sys_path))
     else:
         device["Interface"] =3D ""
     # check if a port is used for ssh connection


-----Original Message-----
From: Mussar, Gary [mailto:gmussar@ciena.com]
Sent: Monday, August 29, 2016 11:10 AM
To: Dey, Souvik <sodey@sonusnet.com>; Stephen Hemminger <stephen@networkplu=
mber.org>
Cc: nhorman@tuxdriver.com; dev@dpdk.org
Subject: RE: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.

We did this slightly differently. This is 100% python and is a bit more gen=
eral. We search for the first "net" directory under the specific device dir=
ectory.

-------------------------------------------
--- tools/dpdk-devbind.py       2016-08-29 11:02:35.594202888 -0400
+++ ../dpdk/tools/dpdk-devbind.py 2016-08-29 11:00:34.897677233 -0400
@@ -221,11 +221,11 @@
         name =3D name.strip(":") + "_str"
         device[name] =3D value
     # check for a unix interface name
-    sys_path =3D "/sys/bus/pci/devices/%s/net/" % dev_id
-    if exists(sys_path):
-        device["Interface"] =3D ",".join(os.listdir(sys_path))
-    else:
-        device["Interface"] =3D ""
+    device["Interface"] =3D ""
+    for base, dirs, files in os.walk("/sys/bus/pci/devices/%s/" % dev_id):
+        if "net" in dirs:
+            device["Interface"] =3D ",".join(os.listdir(os.path.join(base,=
"net")))
+            break
     # check if a port is used for ssh connection
     device["Ssh_if"] =3D False
     device["Active"] =3D ""
-------------------------------------------

Gary

-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Dey, Souvik
Sent: Friday, August 26, 2016 8:21 PM
To: Stephen Hemminger
Cc: nhorman@tuxdriver.com; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.

Hi ,
	I have already updated it and have re submitted the patch v3. Can you plea=
se check that http://dpdk.org/dev/patchwork/patch/15378/
--
Regards,
Souvik

-----Original Message-----
From: Stephen Hemminger [mailto:stephen@networkplumber.org]
Sent: Friday, August 26, 2016 11:55 AM
To: Dey, Souvik <sodey@sonusnet.com>
Cc: nhorman@tuxdriver.com; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.

On Wed, 24 Aug 2016 22:25:46 -0400
souvikdey33 <sodey@sonusnet.com> wrote:

> +    #The path for virtio devices are different. Get the correct path.
> +	virtio =3D "/sys/bus/pci/devices/%s/" % dev_id
> +    cmd =3D " ls %s | grep 'virt' " %virtio
> +    virtio =3D commands.getoutput(cmd)
> +    virtio_sys_path =3D "/sys/bus/pci/devices/%s/%s/net/" %
> +(dev_id,virtio)
>      if exists(sys_path):
>          device["Interface"] =3D ",".join(os.listdir(sys_path))

There should be a way to do this in python without going out to shell.
This would be safer and more secure.

The code already uses os.listdir() (which is the python library version of =
ls) in later section. Why not use that here to check for virtio bus.