[dpdk-dev] [PATCH v9 0/3] User-space ethtool sample application

Liu, Yong yong.liu at intel.com
Tue Nov 24 04:05:22 CET 2015


Tested-by: Yong Liu <yong.liu at intel.com>

- Tested Commit: 4522eca1352d8ed7c0823e328e2a68c2ba6459ab
- OS: Fedora20 3.11.10-301.fc20.x86_64
- GCC: gcc version 4.8.3 20140911
- CPU: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
- NIC: Intel Corporation Device 82599ES [8086:10fb]
- Default x86_64-native-linuxapp-gcc configuration
- Prerequisites:
- Total 9 cases, 9 passed, 0 failed

- Prerequisites command / instruction:
  Build userspace ethtool sample
    make -C examples/ethtool
    
- Case: ethtool_dump_driver_info
  Description: check userspace sample can dump driver information and port
               statistics
  Command / instruction:
    Start userspace ethtool sample with two ports bound
      ethtool -c f -n 4
    Wait for the sample start up and shown prompt
      EthApp>
    Use "drvinfo" command to dump driver information and check it's correct.
      EthApp> drvinfo
        Port 0 driver: rte_ixgbe_pmd (ver: RTE 2.2.0-rc1)
        Port 1 driver: rte_ixgbe_pmd (ver: RTE 2.2.0-rc1)
    Change tester port link down and check link status can be detected.
      EthApp> link
        Port 0: Down
        Port 1: Down
    Send packets to port0 and port1 and check port statistic correct.
      EthApp> Port 0 stats
        In: 1 (64 bytes)
        Out: 1 (64 bytes)
        Err: 0
        
- Case: ethtool_vlan
  Description: check userspace sample can configure port vlan setting
  Command / instruction:
    Enable port vlan filer in main file
      cfg_port.rxmode.hw_vlan_filter=1
    Rebuild sample and start userspace ethtool sample with two ports bound
      ethtool -c f -n 4
    Add random vlan on port and send packet with same vlan
      EthApp> vlan 0 add 2997
    Check packet normally forwarded and port statistic correct
      EthApp> Port 0 stats
        In: 1 (64 bytes)
        Out: 1 (64 bytes)
        Err: 0
    Send packet with wrong vlan and check packet not forwarded
      EthApp> Port 0 stats
        In: 1 (64 bytes)
        Out: 1 (64 bytes)
        Err: 0
    Remove the random vlan on port and send packet with same vlan
       EthApp> vlan 0 remove 2997
    Check packet not forwarded
      EthApp> Port 0 stats
        In: 1 (64 bytes)
        Out: 1 (64 bytes)
        Err: 0
        
- Case: ethtool_mac_address
  Description: check userspace sample can configure port mac address
  Command / instruction:
    Start userspace ethtool sample with two ports bound
      ethtool -c f -n 4
    Add random vlan on port and send packet with same vlan
      EthApp> vlan 0 add 2997
    Changed port mac address and "macaddr" command can dump new mac
      EthApp> macaddr 0 00:10:00:00:00:00
      EthApp> macaddr 0
        Port 0 MAC Address: 00:10:00:00:00:00
    Send packet and check forwarded packet source mac changed

- Case: ethtool_port_config
  Description: check userspace sample can start/stop port
  Command / instruction:
    Start userspace ethtool sample with two ports bound
      ethtool -c f -n 4
    Stop port and check forwarding cannot work
      EthApp> stop 0
    Restart port and check packet can be normally forwarded
    
- Case: ethtool_retrieve_eeprom
  Description: check userspace sample can retrieve port eerprom file
  Command / instruction:
    Start userspace ethtool sample with two ports bound
      ethtool -c f -n 4
    Retrieve port eeprom file and saved for later compare
      EthApp> eeprom 0 eeprom_0.bin
    Bound port back to default kernel driver and dump eeprom by ethtool
      ethtool --eeprom-dump p1p3 raw on > ethtool_eeprom_0.bin
    Check userspace ethool and linux ethtool dumped file md5 are the same
      md5sum eeprom_0.bin
      md5sum ethtool_eeprom_0.bin

- Case: ethtool_retrieve_register
  Description: check userspace sample can retrieve port register file
  Command / instruction:
    Start userspace ethtool sample with two ports bound
      ethtool -c f -n 4
    Retrieve port register file
      EthApp> regs 0 regs_0.bin
    User linux ethtool dump this file and check information correct
      ethtool -d p1p3 raw off file regs_0.bin
      
- Case: ethtool_ring_parameter
  Description: check userspace sample can configure pending entries of Rx/Tx
               ring
  Command / instruction:
    Start userspace ethtool sample with two ports bound
      ethtool -c f -n 4
    Use command "ringparam" dump port pending entries
      EthApp> ringparam 0
        Port 0 ring parameters
        Rx Pending: 128 (4096 max)
        Tx Pending: 256 (4096 max)
    Changed pending entries of Rx/Tx ring to max value
      EthApp> ringparam 0 4096 4096
    Check that packet can be normally forwarded
      EthApp> portstats 0
        Port 0 stats
        In: 1 (64 bytes)
        Out: 1 (64 bytes)
        Err: 0

- Case: ethtool_rx_pause
  Description: check userspace sample can configure port rx pause setting
  Command / instruction:
    Start userspace ethtool sample with two ports bound
      ethtool -c f -n 4
    Enable port 0 handle rx pause frame 
      EthApp> pause 0 rx
    Based on 50% line rate, calculate how many packets hanged per pause frame
    Configure transmit number of packets and then one pause frame from test
    port
    Check forwarded rate just 50% and difference smaller than 0.1%

- Case: ethtool_tx_pause
  Description: check userspace sample can configure port tx pause setting
  Command / instruction:
    After receive burst of packets, sleep a while for slow down
      usleep(10);
    Rebuild sample and start userspace ethtool sample with two ports bound
      ethtool -c f -n 4
    Enable port 0 wiht transmit pause frame 
      EthApp> pause 0 tx
    Send packets with line rate from tester port
    Enable tester port link control, transmit speed will also dropped
    After few seconds stop transmit, check tester port received packets more
    than transmitted.


> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Remy Horton
> Sent: Friday, November 20, 2015 11:35 PM
> To: dev at dpdk.org
> Subject: [dpdk-dev] [PATCH v9 0/3] User-space ethtool sample application
> 
> Further enhancements to the userspace ethtool implementation that was
> submitted in 2.1 and packaged as a self-contained sample application.
> Implements an rte_ethtool shim layer based on rte_ethdev API, along
> with a command prompt driven demonstration application.
> 
> This patchset depends on:
> * http://dpdk.org/dev/patchwork/patch/8070/
> 
> v9:
> * Merged in upstream external lib dependency
> * Added sanity check to shim MTU set function
> * Added example to example/Makefile
> * Rebased to latest master
> 
> v8:
> * Rebased to latest origin/master
> 
> v7:
> * Ringparam printouts wrong way round
> * Ringparam help message corrections
> * Use __rte_unused instead of __attribute__((unused))
> * Allow Jumbo-sized MTUs
> * Documentation style and spelling changes
> 
> v6:
> * Fixed hang when run with zero available ports
> * Fixed incorrect sanity check preventing EEPROM dumps
> * Documentation additions
> * Fixed RxMode accepting untagged packets
> * Fixed ringparam allocation being too small
> 
> v5:
> * Documentation changes
> 
> v4:
> * Fixed assumption that master core always has id zero
> * Changed 1:1 core-to-port to 2 core (ethtool & ports) design
> * Included the correct documentation..
> 
> v3:
> * Made use of enums for core state.
> * Fixed Makefile issue.
> * Fixed incorrect assumption with core ids.
> * Changed handling of more ports than cores.
> 
> v2:
> * Replaced l2fwd base with simpler application.
> * Added ringparam functions.
> * Added documentation.
> 
> Remy Horton (3):
>   Remove ABI requirement for external library builds.
>   example: add user-space ethtool sample application
>   doc: add user-space ethtool sample app guide & release notes
> 
>  MAINTAINERS                           |   4 +
>  doc/guides/rel_notes/release_2_2.rst  |   1 +
>  doc/guides/sample_app_ug/ethtool.rst  | 160 +++++++
>  doc/guides/sample_app_ug/index.rst    |   1 +
>  examples/Makefile                     |   1 +
>  examples/ethtool/Makefile             |  48 ++
>  examples/ethtool/ethtool-app/Makefile |  54 +++
>  examples/ethtool/ethtool-app/ethapp.c | 873
> ++++++++++++++++++++++++++++++++++
>  examples/ethtool/ethtool-app/ethapp.h |  41 ++
>  examples/ethtool/ethtool-app/main.c   | 305 ++++++++++++
>  examples/ethtool/lib/Makefile         |  57 +++
>  examples/ethtool/lib/rte_ethtool.c    | 423 ++++++++++++++++
>  examples/ethtool/lib/rte_ethtool.h    | 410 ++++++++++++++++
>  mk/rte.extlib.mk                      |   2 +
>  mk/rte.lib.mk                         |   6 +
>  15 files changed, 2386 insertions(+)
>  create mode 100644 doc/guides/sample_app_ug/ethtool.rst
>  create mode 100644 examples/ethtool/Makefile
>  create mode 100644 examples/ethtool/ethtool-app/Makefile
>  create mode 100644 examples/ethtool/ethtool-app/ethapp.c
>  create mode 100644 examples/ethtool/ethtool-app/ethapp.h
>  create mode 100644 examples/ethtool/ethtool-app/main.c
>  create mode 100644 examples/ethtool/lib/Makefile
>  create mode 100644 examples/ethtool/lib/rte_ethtool.c
>  create mode 100644 examples/ethtool/lib/rte_ethtool.h
> 
> --
> 1.9.3



More information about the dev mailing list