[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