顯示或修改以太網卡的配置信息。html
ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX網絡
ethtool [-A] ethX [autoneg on|off] [rx on|off] [tx on|off]ide
ethtool [-C] ethX [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-lowN] [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] ethX [rx N] [rx-mini N] [rx-jumbo N] [tx N]oop
ethtool [-e] ethX [raw on|off] [offset N] [length N]測試
ethtool [-E] ethX [magic N] [offset N] [value N]ui
ethtool [-K] ethX [rx on|off] [tx on|off] [sg on|off] [tso on|off]spa
ethtool [-p] ethX [N]指針
ethtool [-t] ethX [offline|online]rest
ethtool [-s] ethX [speed 10|100|1000] [duplex half|full] [autoneg on|off] [port tp|aui|bnc|mii] [phyad N] [xcvr internal|external]
[wol p|u|m|b|a|g|s|d...] [sopass xx:yy:zz:aa:bb:cc] [msglvl N]
Ethtool命令用於獲取以太網卡的配置信息,或者修改這些配置。
ethX是以太網卡的名稱,Linux系統將檢測到的第一塊以太網卡命名爲eth0, 第二塊爲eth1,…….。
-a | 查看網卡中 接收模塊RX、發送模塊TX和Autonegotiate模塊的狀態:啓動on 或 停用off |
-A | 修改網卡中 接收模塊RX、發送模塊TX和Autonegotiate模塊的狀態:啓動on 或 停用off |
-c | display the Coalesce information of the specified ethernet card |
-C | Change the Coalesce setting of the specified ethernet card |
-g | Display the rx/tx ring parameter information of the specified ethernet card |
-G | change the rx/tx ring setting of the specified ethernet card |
-i | 顯示網卡驅動的信息,如驅動的名稱、版本等 |
-d | 顯示register dump信息, 部分網卡驅動不支持該選項 |
-e | 顯示EEPROM dump信息,部分網卡驅動不支持該選項 |
-E | 修改網卡EEPROM byte |
-k | 顯示網卡Offload參數的狀態:on 或 off,包括rx-checksumming、tx-checksumming等。 |
-K | 修改網卡Offload參數的狀態 |
-p | 用於區別不一樣ethX對應網卡的物理位置,經常使用的方法是使網卡port上的led不斷的閃;N指示了網卡閃的持續時間,以秒爲單位。 |
-r | 若是auto-negotiation模塊的狀態爲on,則restarts auto-negotiation |
-S | 顯示NIC- and driver-specific 的統計參數,如網卡接收/發送的字節數、接收/發送的廣播包個數等。 |
-t | 讓網卡執行自我檢測,有兩種模式:offline or online |
-s | 修改網卡的部分配置,包括網卡速度、單工/全雙工模式、mac地址等 |
查看機器上網卡的速度:百兆仍是千兆,請輸入:
ethool eth0
操做完畢後,輸出信息中‘Speed:’ 這一項就指示了網卡的速度。
中止網卡的發送模塊TX,請輸入:
ethtool -A tx off eth0
操做完畢後,可輸入:ethtool -a eth0,查看tx模塊是否已被中止。
查看網卡eth0採用了何種驅動,請輸入:
ethtool -i eth0
操做完畢後,顯示 driver: bnx2;version: 1.4.30 等信息。
關閉網卡對收到的數據包的校驗功能,請輸入:
ethtool -K eth0 rx off
操做完畢後,可輸入:ethtool –k eth0,查看校驗功能是否已被中止。
若是機器上安裝了兩塊網卡,那麼eth0對應着哪塊網卡呢?輸入:
ethtool -p eth0 10
操做完畢後,看哪塊網卡的led燈在閃,eth0就對應着哪塊網卡。
查看網卡,在接收/發送數據時,有沒有出錯?請輸入:
ethtool –S eth0
將千兆網卡的速度降爲百兆,請輸入:
ethtool -s eth0 speed 100
Ethtool命令顯示的信息來源於網卡驅動層,即TCP/IP協議的鏈路層。
該命令在Linux內核中實現的邏輯層次爲:
最重要的結構體struct ethtool_ops,該結構體成員爲用於顯示或修改以太網卡配置的一系列函數指針,見下表中的第二列。
網卡驅動負責實現(部分)這些函數,並將其封裝入ethtool_ops結構體,爲網絡核心層提供統一的調用接口。所以,不一樣的網卡驅動會給應用層返回不一樣的信息。
Ethtool命令選項、struct ethtool_ops成員函數、Ethtool命令顯示參數的來源,三者間的對應關係以下表所示。
命令選項 | struct ethtool_ops成員函數 | Ethtool命令顯示參數的來源(以網卡驅動BNX2爲例) |
無 -s |
get_settingsget_wol get_msglevel get_link set_settings set_wol set_msglevel |
從網卡寄存器中得到網卡速度等信息,可配置 |
-a-A | get_pauseparam set_pauseparam | 從網卡寄存器中得到 Autonegotiate/RX/TX模塊的狀態:on oroff,可配置 |
-c-C | get_coalesceset_coalesce | 從網卡寄存器中得到coalescing參數:TX/RX一個數據包後,推遲發生TX/RX中斷的時間(us)/數據包個數。—減少該值能夠提升網卡的響應時間。 當rx-usecs&rx-frames同時被設爲0時,RX中斷中止。 當tx-usecs&tx-frames同時被設爲0時,TX中斷中止。 |
-g-G | get_ringparam set_ringparam | 除當前TX/RX ring的值(從網卡寄存器中讀取獲得,可配置)外,其它爲網卡bnx2本身固定的信息。 |
-k -K |
get_rx_csumget_tx_csum get_sg get_tso set_rx_csum set_tx_csum set_sg set_tso |
顯示信息從保存該狀態的變量中讀取獲得,沒有對應的寄存器。所以,TX/RX校驗等模塊一直處於on狀態,其實是沒法修改的。 |
-i | get_drvinfo[self_test_count, get_stats_coun,t get_regs_len, get_eeprom_len] |
網卡bnx2本身固定的信息,如——————————————————– driver: bnx2 version: 1.4.30 firmware-version: 1.8.0.5 bus-info: 0000:09:00.0 ——————————————————– |
-d | get_drvinfoget_regs | 不支持,即bnx2中沒有實現函數get_regs |
-e-E | get_eepromset_eeprom | 不支持,即bnx2中沒有實現函數get_eeprom |
-r | nway_reset | 配置網卡MII_BMCR寄存器,重啓Auto negotiation模塊 |
-p | phys_id | 配置網卡BNX2_EMAC_LED寄存器,實現LED閃功能 |
-t | self_test | 經過配置網卡寄存器,逐一測試網卡的硬件模塊:registers,memory,loopback,Link stat,interrupt |
-S | get_ethtool_stats | 顯 示信息來源於網卡驅動中的結構體變量stats_blk。(網卡經過DMA方式,將寄存器BNX2_HC_STATISTICS _ADDR_L和BNX2_HC_STATISTICS_ADDR_H中的數據實時地讀取到結構體變量struct statistics_block *stats_blk中。) —顯示的數據都是從網卡寄存器中統計獲得的,各項的含義需查詢網卡(芯片)手冊。 |
由上可見,ethtool命令用於顯示/配置網卡硬件(寄存器)。
轉自:http://blog.sina.com.cn/s/blog_71f38909010128yf.html