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