usertools: add device index for dpdk-devbind script

Message ID 20190603125736.48511-1-locnguyen@niometrics.com (mailing list archive)
State Rejected, archived
Delegated to: Thomas Monjalon
Headers
Series usertools: add device index for dpdk-devbind script |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS

Commit Message

Loc Nguyen June 3, 2019, 12:57 p.m. UTC
  Add a device index in front of the PCI ID for easy counting

Network devices using DPDK-compatible driver
  

Comments

Bruce Richardson June 4, 2019, 10:01 a.m. UTC | #1
On Mon, Jun 03, 2019 at 08:57:36PM +0800, Loc Nguyen wrote:
> Add a device index in front of the PCI ID for easy counting
> 
> Network devices using DPDK-compatible driver
> ============================================
>  0: 0000:07:00.0 ...
>  1: 0000:07:00.1 ...
> 
> Signed-off-by: Loc Nguyen <locnguyen@niometrics.com>
> ---
>  usertools/dpdk-devbind.py | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
While I don't see anything wrong with this change, can you elaborate on why
you think this is of use? The rest of the script doesn't do anything with
these indexes so why is it worth using columns of screen space to display
them?

Thanks,
/Bruce
  
Loc Nguyen June 4, 2019, 1:35 p.m. UTC | #2
Hi Bruce,

Thanks for the feedback. In my application, we map the NIC interfaces into port numbers,
which are these indexes. For example, we have an config file saying we would like to use
port 2, 3 and 5 for RX. Having the indexes printed together with the NIC interfaces via this
script helps us to easily select the correct interfaces to use. Especially when we usually
bind or unbind the interfaces to kernel driver or DPDK driver depending on the situation,
which will cause a shift in the interface to port number mapping. On machines with more
than 10 interfaces, it’s much slower if we need to count the indexes manually.

Thanks,
Loc

> On 4 Jun 2019, at 6:01 PM, Bruce Richardson <bruce.richardson@intel.com> wrote:
> 
> On Mon, Jun 03, 2019 at 08:57:36PM +0800, Loc Nguyen wrote:
>> Add a device index in front of the PCI ID for easy counting
>> 
>> Network devices using DPDK-compatible driver
>> ============================================
>> 0: 0000:07:00.0 ...
>> 1: 0000:07:00.1 ...
>> 
>> Signed-off-by: Loc Nguyen <locnguyen@niometrics.com>
>> ---
>> usertools/dpdk-devbind.py | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>> 
> While I don't see anything wrong with this change, can you elaborate on why
> you think this is of use? The rest of the script doesn't do anything with
> these indexes so why is it worth using columns of screen space to display
> them?
> 
> Thanks,
> /Bruce
  
Stephen Hemminger June 4, 2019, 3:50 p.m. UTC | #3
On Mon,  3 Jun 2019 20:57:36 +0800
Loc Nguyen <locnguyen@niometrics.com> wrote:

> Add a device index in front of the PCI ID for easy counting
> 
> Network devices using DPDK-compatible driver
> ============================================
>  0: 0000:07:00.0 ...
>  1: 0000:07:00.1 ...
> 
> Signed-off-by: Loc Nguyen <locnguyen@niometrics.com>
> ---
>  usertools/dpdk-devbind.py | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py
> index 9e79f0d28..21da3deca 100755
> --- a/usertools/dpdk-devbind.py
> +++ b/usertools/dpdk-devbind.py
> @@ -534,7 +534,9 @@ def display_devices(title, dev_list, extra_params=None):
>                  strings.append("%s '%s'" % (dev["Slot"], dev["Device_str"]))
>      # sort before printing, so that the entries appear in PCI order
>      strings.sort()
> -    print("\n".join(strings))  # print one per line
> +    # add device index in front of each device
> +    enum_dev_list = ['%2d' % index + ": " + device for index, device in enumerate(strings)]
> +    print("\n".join(enum_dev_list))  # print one per line
>  
>  def show_device_status(devices_type, device_name):
>      global dpdk_drivers

This is a bad idea. it is making assumption about how ports are ordered which
can change if their are other busses, whitelist/blackst or the device may be owned.

Longer term, I want DPDK to get away from using and exposing portid's as the
preferred API to applications.
  

Patch

============================================
 0: 0000:07:00.0 ...
 1: 0000:07:00.1 ...

Signed-off-by: Loc Nguyen <locnguyen@niometrics.com>
---
 usertools/dpdk-devbind.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py
index 9e79f0d28..21da3deca 100755
--- a/usertools/dpdk-devbind.py
+++ b/usertools/dpdk-devbind.py
@@ -534,7 +534,9 @@  def display_devices(title, dev_list, extra_params=None):
                 strings.append("%s '%s'" % (dev["Slot"], dev["Device_str"]))
     # sort before printing, so that the entries appear in PCI order
     strings.sort()
-    print("\n".join(strings))  # print one per line
+    # add device index in front of each device
+    enum_dev_list = ['%2d' % index + ": " + device for index, device in enumerate(strings)]
+    print("\n".join(enum_dev_list))  # print one per line
 
 def show_device_status(devices_type, device_name):
     global dpdk_drivers