Ethtool源码分析(一):认识和使用Ethtool

认识和使用Ethtool

一、介绍

ethtool是用于控制网络驱动程序和硬件的标准Linux实用程序,尤其适用于有线以太网设备。 它可以用于:

 获取识别和诊断信息
 获取扩展设备统计信息
 控制以太网设备的速度,双工,自动协商和流量控制
 控制校验和卸载和其他硬件卸载功能
 控制DMA环大小和中断调节
 控制多队列设备的接收队列选择
 升级闪存中的固件

大多数功能都依赖于特定驱动程序中的支持。 有关完整信息,请参见手册页。

二、下载,编译

Ethtool源码下载链接https://mirrors.edge.kernel.org/pub/software/network/ethtool/

选择适合自己的版本下载。这里我们使用最新的版本4.19

  1. 解压压缩包
    tar zxvf ethtool-4.19.tar.gz
  2. 配置并编译工程

Ethtool在Linux中的编译比较简单,首先执行configure,配置编译信息,生成Makefile文件。
然后执行make命令,执行编译即可:

1./configure

2.make

编译完成后,就可以在当前目录下看到生成的ethtool可执行文件了。

三、使用Ethtool 工具查看网口信息,

1.查询工具的使用介绍
执行./ethtool -h 显示Ethtool帮助信息

ethtool version 4.19
Usage:
        ethtool DEVNAME	Display standard information about device
        ethtool -s|--change DEVNAME	Change generic options
		[ speed %d ]
		[ duplex half|full ]
		[ port tp|aui|bnc|mii|fibre ]
		[ mdix auto|on|off ]
		[ autoneg on|off ]
		[ advertise %x ]
		[ phyad %d ]
		[ xcvr internal|external ]
		[ wol p|u|m|b|a|g|s|f|d... ]
		[ sopass %x:%x:%x:%x:%x:%x ]
		[ msglvl %d | msglvl type on|off ... ]
        ethtool -a|--show-pause DEVNAME	Show pause options
        ethtool -A|--pause DEVNAME	Set pause options
		[ autoneg on|off ]
		[ rx on|off ]
		[ tx on|off ]
        ethtool -c|--show-coalesce DEVNAME	Show coalesce options
        ethtool -C|--coalesce DEVNAME	Set coalesce options
		[adaptive-rx on|off]
		[adaptive-tx on|off]
		[rx-usecs N]
		[rx-frames N]
		[rx-usecs-irq N]
		[rx-frames-irq N]
		[tx-usecs N]
		[tx-frames N]
		[tx-usecs-irq N]
		[tx-frames-irq N]
		[stats-block-usecs N]
		[pkt-rate-low N]
		[rx-usecs-low N]
		[rx-frames-low N]
		[tx-usecs-low N]
		[tx-frames-low N]
		[pkt-rate-high N]
		[rx-usecs-high N]
		[rx-frames-high N]
		[tx-usecs-high N]
		[tx-frames-high N]
		[sample-interval N]
        ethtool -g|--show-ring DEVNAME	Query RX/TX ring parameters
        ethtool -G|--set-ring DEVNAME	Set RX/TX ring parameters
		[ rx N ]
		[ rx-mini N ]
		[ rx-jumbo N ]
		[ tx N ]
        ethtool -k|--show-features|--show-offload DEVNAME	Get state of protocol offload and other features
        ethtool -K|--features|--offload DEVNAME	Set protocol offload and other features
		FEATURE on|off ...
        ethtool -i|--driver DEVNAME	Show driver information
        ethtool -d|--register-dump DEVNAME	Do a register dump
		[ raw on|off ]
		[ file FILENAME ]
        ethtool -e|--eeprom-dump DEVNAME	Do a EEPROM dump
		[ raw on|off ]
		[ offset N ]
		[ length N ]
        ethtool -E|--change-eeprom DEVNAME	Change bytes in device EEPROM
		[ magic N ]
		[ offset N ]
		[ length N ]
		[ value N ]
        ethtool -r|--negotiate DEVNAME	Restart N-WAY negotiation
        ethtool -p|--identify DEVNAME	Show visible port identification (e.g. blinking)
               [ TIME-IN-SECONDS ]
        ethtool -t|--test DEVNAME	Execute adapter self test
               [ online | offline | external_lb ]
        ethtool -S|--statistics DEVNAME	Show adapter statistics
        ethtool --phy-statistics DEVNAME	Show phy statistics
        ethtool -n|-u|--show-nfc|--show-ntuple DEVNAME	Show Rx network flow classification options or rules
		[ rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6 [context %d] |
		  rule %d ]
        ethtool -N|-U|--config-nfc|--config-ntuple DEVNAME	Configure Rx network flow classification options or rules
		rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|r... [context %d] |
		flow-type ether|ip4|tcp4|udp4|sctp4|ah4|esp4|ip6|tcp6|udp6|ah6|esp6|sctp6
			[ src %x:%x:%x:%x:%x:%x [m %x:%x:%x:%x:%x:%x] ]
			[ dst %x:%x:%x:%x:%x:%x [m %x:%x:%x:%x:%x:%x] ]
			[ proto %d [m %x] ]
			[ src-ip IP-ADDRESS [m IP-ADDRESS] ]
			[ dst-ip IP-ADDRESS [m IP-ADDRESS] ]
			[ tos %d [m %x] ]
			[ tclass %d [m %x] ]
			[ l4proto %d [m %x] ]
			[ src-port %d [m %x] ]
			[ dst-port %d [m %x] ]
			[ spi %d [m %x] ]
			[ vlan-etype %x [m %x] ]
			[ vlan %x [m %x] ]
			[ user-def %x [m %x] ]
			[ dst-mac %x:%x:%x:%x:%x:%x [m %x:%x:%x:%x:%x:%x] ]
			[ action %d ] | [ vf %d queue %d ]
			[ context %d ]
			[ loc %d]] |
		delete %d
        ethtool -T|--show-time-stamping DEVNAME	Show time stamping capabilities
        ethtool -x|--show-rxfh-indir|--show-rxfh DEVNAME	Show Rx flow hash indirection table and/or RSS hash key
		[ context %d ]
        ethtool -X|--set-rxfh-indir|--rxfh DEVNAME	Set Rx flow hash indirection table and/or RSS hash key
		[ context %d|new ]
		[ equal N | weight W0 W1 ... | default ]
		[ hkey %x:%x:%x:%x:%x:.... ]
		[ hfunc FUNC ]
		[ delete ]
        ethtool -f|--flash DEVNAME	Flash firmware image from the specified file to a region on the device
               FILENAME [ REGION-NUMBER-TO-FLASH ]
        ethtool -P|--show-permaddr DEVNAME	Show permanent hardware address
        ethtool -w|--get-dump DEVNAME	Get dump flag, data
		[ data FILENAME ]
        ethtool -W|--set-dump DEVNAME	Set dump flag of the device
		N
        ethtool -l|--show-channels DEVNAME	Query Channels
        ethtool -L|--set-channels DEVNAME	Set Channels
               [ rx N ]
               [ tx N ]
               [ other N ]
               [ combined N ]
        ethtool --show-priv-flags DEVNAME	Query private flags
        ethtool --set-priv-flags DEVNAME	Set private flags
		FLAG on|off ...
        ethtool -m|--dump-module-eeprom|--module-info DEVNAME	Query/Decode Module EEPROM information and optical diagnostics if available
		[ raw on|off ]
		[ hex on|off ]
		[ offset N ]
		[ length N ]
        ethtool --show-eee DEVNAME	Show EEE settings
        ethtool --set-eee DEVNAME	Set EEE settings
		[ eee on|off ]
		[ advertise %x ]
		[ tx-lpi on|off ]
		[ tx-timer %d ]
        ethtool --set-phy-tunable DEVNAME	Set PHY tunable
		[ downshift on|off [count N] ]
        ethtool --get-phy-tunable DEVNAME	Get PHY tunable
		[ downshift ]
        ethtool --reset DEVNAME	Reset components
		[ flags %x ]
		[ mgmt ]
		[ mgmt-shared ]
		[ irq ]
		[ irq-shared ]
		[ dma ]
		[ dma-shared ]
		[ filter ]
		[ filter-shared ]
		[ offload ]
		[ offload-shared ]
		[ mac ]
		[ mac-shared ]
		[ phy ]
		[ phy-shared ]
		[ ram ]
		[ ram-shared ]
		[ ap ]
		[ ap-shared ]
		[ dedicated ]
		[ all ]
        ethtool --show-fec DEVNAME	Show FEC settings
        ethtool --set-fec DEVNAME	Set FEC settings
		[ encoding auto|off|rs|baser [...]]
        ethtool -h|--help 		Show this help
        ethtool --version 		Show version number

2.使用Ethtool工具查询网卡信息
执行./ethtool ens33

ens33是我电脑上的网卡名

Settings for ens33:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

猜你喜欢

转载自blog.csdn.net/lx121451/article/details/86749185
今日推荐