【get_settings】
【set_settings】
supported: SUPPORTED_10baseT_Half系列
advertising: ADVERTISED_10baseT_Half系列
speed: SPEED_10系列低16位
duplex: DUPLEX_HALF系列
port: PORT_TP系列
phy_address: PHY芯片的物理地址(0-31)
transceiver: XCVR_INTERNAL系列
autoneg: AUTONEG_DISABLE系列
mdio_support:ETH_MDIO_SUPPORTS_C22或者ETH_MDIO_SUPPORTS_C45
maxtxpkt:
maxrxpkt:
speed_hi:SPEED_10系列高16位,由于该值不是用位图来表示,所以可能超过16位
eth_tp_mdix: ETH_TP_MDI_INVALID系列
eth_tp_mdix_ctrl: ETH_TP_MDI_INVALID系列
lp_advertising:ADVERTISED_10baseT_Half系列,对端PHY芯片的能力
【get_drvinfo】
driver: 驱动的名字
version: 驱动的版本号
fw_version:有些复杂的EMAC有固件,此处提供其固件版本
bus_info: EMAC所挂载的总线信息,比如PCI,则提供pci_name(pci_dev)
其他成员现在已废弃
【get_regs_len】
返回寄存器空间的大小
【get_regs】
struct ethtool_regs中的version填写硬件的版本信息,dump的寄存器内容放在最后一个指针指向的内存空间
【get_wol】
【set_wol】
wolinfo->supported:WAKE_PHY系列,设备的wol能力
wolinfo->wolopts: WAKE_PHY系列,当前的wol设置
wolinfo->sopass: 唤醒密码,某些网卡提供此功能
【get_msglevel】
【set_msglevel】
获取和设置消息打印级别
【nway_reset】
重新进行PHY的自协商操作
【get_link】
获取PHY链路状态,一般直接调用ethtool_op_get_link()
【get_eeprom_len】
获取网卡固件大小
【get_eeprom】
根据struct ethtool_eeprom提供的参数从EEPROM中提取固件信息(包括读取位置offset以及读取长度len),同时返回EEPROM固件的幻术eeprom->magic;
【set_eeprom】
最后一个参数指针提供eeprom数据位置,struct ethtool_eeprom提供保存位置offset以及保存长度len,同时需要验证提供的eeprom->magic是否正确;
【get_coalesce】
【set_coalesce】
rx_coalesce_usecs: 一个包抵达后多久产生接收中断(以us为单位)
rx_max_coalesced_frames:产生接收中断前能接收到包的最大数量
rx_coalesce_usecs_irq:一个包抵达到接收中断服务程序处理完成之间的时间延时(以us为单位)?
rx_max_coalesced_frames_irq:中断服务程序处理过程中接收到包的最大数量?
tx_coalesce_usecs:包发送之后多久产生传输中断
tx_max_coalesced_frames:产生传输中断前所发送的数据包的最大数量
tx_coalesce_usecs_irq:
tx_max_coalesced_frames_irq:
stats_block_coalesce_usecs:内存中数据包统计区块刷新时间间隔
use_adaptive_rx_coalesce:允许自适应接收聚合
use_adaptive_tx_coalesce:允许自适应发送聚合
pkt_rate_low:数据包处理的低速门限(包数/秒)
rx_coalesce_usecs_low:当数据包处理速率低于低速门限时,一个数据包达到后多久才能产生接收中断
rx_max_coalesced_frames_low:当数据包处理速率低于低速门限时,产生接收中断前能接收到包的最大数量
tx_coalesce_usecs_low:当数据包处理速率低于低速门限时,包发送之后多久产生传输中断
tx_max_coalesced_frames_low:当数据包处理速率低于低速门限时,产生传输中断前所发送的数据包的最大数量
pkt_rate_high:数据包处理的高速门限(包数/秒)
rx_coalesce_usecs_high:当数据包处理速率高于高速门限时,一个数据包达到后多久才能产生接收中断
rx_max_coalesced_frames_high:当数据包处理速率高于高速门限时,产生接收中断前能接收到包的最大数量
tx_coalesce_usecs_high:当数据包处理速率高于高速门限时,包发送之后多久产生传输中断
tx_max_coalesced_frames_high:当数据包处理速率高于高速门限时,产生传输中断前所发送的数据包的最大数量
rate_sample_interval:聚合包速率采样间隔(以秒为单位)
【get_ringparam】
rx_max_pending:允许用户设置的接收缓存环实体的最大数量
rx_mini_max_pending:允许用户设置的接收缓存环实体的最小数量
rx_jumbo_max_pending:允许用户设置的用于jumbo帧接收的缓存环最大数量
tx_max_pending:允许用户设置的传输缓存环实体的最大数量
【set_ringparam】
rx_pending:实际用户设定值
rx_mini_pending:实际用户设定值
rx_jumbo_pending:实际用户设定值
tx_pending:实际用户设定值
注意当缓存环改变后,需要重新初始化网卡硬件和软件数据结构
【get_pauseparam】
epause->autoneg:当前网卡是否允许自协商
如果epause->autoneg非0,则epause->rx_pause和epause->tx_pause作为自协商的参数传递给对端;
如果epause->autoneg为0,则epause->rx_pause和epause->tx_pause强制硬件是否使用pause功能;
【set_pauseparam】
根据ethtool_pauseparam参数重新初始化网卡能力
【self_test】
根据ethtool_test->flag要求进行在线和或者离线自测试,包括读写内存、固件存储器、寄存去、PHY测试、回环测试等,测试结果标记到ethtool_test->flag中,返回的测试内容放到最后一个指针指向的内存空间;
参考enum ethtool_test_flags定义
【get_strings】
根据enum ethtool_stringset的要求返回描述符,只需关注ETH_SS_TEST和ETH_SS_STATS
【get_sset_count】
根据enum ethtool_stringset 的要求返回单元数量,对应于【get_strings】
【set_phys_id】
设置PHY芯片的指示方式
ETHTOOL_ID_ACTIVE:硬件需要自动指示链路状态LED
ETHTOOL_ID_ON:明确要求PHY点亮指示链路状态LED
ETHTOOL_ID_OFF:明确要求PHY熄灭指示链路状态LED
ETHTOOL_ID_INACTIVE:取消硬件自动指示链路状态LED功能
【get_ethtool_stats】
返回网卡的统计计数
【begin】
在所有其他ethtool操作之前先调用的函数
【complete】
在所有其他ethtool操作之后调用的函数
【get_priv_flags】
报告驱动特定的特征,是指dev_hw_feather?还没有驱动用到它
【set_priv_flags】
设置驱动特定的特征,还没有驱动用到它
【get_rxnfc】
【set_rxnfc】
struct ethtool_rxnfc成员说明:
cmd:ETHTOOL_GRXFH、ETHTOOL_SRXFH、ETHTOOL_GRXRINGS、ETHTOOL_GRXCLSRLCNT、ETHTOOL_GRXCLSRULE、ETHTOOL_GRXCLSRLALL、ETHTOOL_SRXCLSRLDEL、ETHTOOL_SRXCLSRLINS
flow_type:TCP_V4_FLOW系列
fs:网络流分类规则
rule_cnt:受影响的规则数量
rule_locs:用过的规则位置数组
data:命令相关的数据
ETHTOOL_GRXFH(得到接收流HASH配置信息)和ETHTOOL_SRXFH(设置接收流HASH配置信息)
设置阶段:data表示流hash字段掩码
ETHTOOL_GRXRINGS(得到可用的接收环或者队列数量)
返回阶段:data返回接收环或者接收队列的数量
ETHTOOL_GRXCLSRLCNT(得到接收分类规则数量)
返回阶段:rule_cnt返回定义规则的数量,data不为0时返回规则表的大小+RX_CLS_LOC_SPECIAL?
ETHTOOL_GRXCLSRULE(得到接收分类规则)
设置阶段:fs字段的location成员指示已存在规则的位置;
返回阶段:fs在返回时包含规则
ETHTOOL_GRXCLSRLALL(得到所有的接收分类规则)
设置阶段:rule_cnt为登记薄上的rule_locs指定用户缓冲区的阵列大小;
返回阶段:data返回规则表的大小,rule_cnt返回定义规则的数量,rule_locs返回定义规则的位置,驱动必须使用第二个传递参数来get_rxnfc() ,而不能用rule_locs
ETHTOOL_SRXCLSRLINS(插入接收分类规则)
设置阶段:fs指定要增加或者更新的规则,fs.location指定使用的位置或者一个特殊位置(RX_CLS_LOC_SPECIAL标记设置时);
返回阶段:fs.location返回实际规则的位置
RX_CLS_LOC_ANY:选择任何位置
RX_CLS_LOC_FIRST:选择第一个合适的位置(最大优先级)
RX_CLS_LOC_LAST:选择最后一个合适的位置(最小优先级)
其他标记暂未定义,驱动应返回-EINVAL
ETHTOOL_SRXCLSRLDEL(删除接收分类规则)
fs.location指定登记薄上已存在规则的位置
【flash_device】
写Flash映像到网卡设备的flash中,配合request_firmware函数拷贝映像数据到内核空间,再写到Flash中
【reset】
复位设备的部分功能
【get_rxfh_indir_size】
获取接收流HASH间接表的大小
【get_rxfh_indir】
获取接收流HASH间接表的内容
【set_rxfh_indir】
设置接收流HASH间接表的内容
关于rxfh_indir的功能,请参考《Introduction to Receive Side Scaling》
【get_channels】
【set_channels】
channel->max_rx:支持的最大接收队列数量
channel->max_tx:支持的最大发送队列数量
channel->rx_count:实际使用的接收队列数量
channel->tx_count:实际使用的发送队列数量
channel->max_other:支持的最大其他队列数量
channel->max_combined:支持的最大组合队列数量
channel->other_count:实际使用的其他队列数量
channel->combined_count:实际使用的组合队列数量
【get_dump_flag】
获取固件版本dump->version,dump标记dump->flag,dump长度dump->len
【get_dump_data】
获取dump数据
【set_dump】
设置dump私有标志
【get_ts_info】
获取时间戳、PTP硬件时钟能力
驱动不支持硬件传输时间戳功能时应调用ethtool_op_get_ts_info
info->so_timestamping设置为SOF_TIMESTAMPING_TX_HARDWARE系列
info->tx_types设置为enum hwtstamp_tx_types
info->rx_filters设置为enum hwtstamp_rx_filters
info->phc_index设置为ptp设备的索引号
【get_module_info】
返回被包含在插入光模块中的EEPROM的大小和类型
modinfo->type设置ETH_MODULE_SFF_8079系列
modinfo->eeprom_len设置为ETH_MODULE_SFF_8079_LEN系列
【get_module_eeprom】
获取插入光模块所带EEPROM内容,struct ethtool_eeprom指定检查的幻术、读取偏移、读取长度
【get_eee】
【set_eee】
eee:Energy-Efficient Ethernet
struct ethtool_eee字段分析:
supported:SUPPORTED_10baseT_Half系列
advertised:ADVERTISED_10baseT_Half系列
lp_advertised:ADVERTISED_10baseT_Half系列,对端的能力
eee_active:eee自协商结果
eee_enabled:是否启用eee模式
tx_lpi_enabled:是否允许向网卡设备周期性发送LPI信号以使其进入sleep模式
tx_lpi_timer:在发送LPI信号前的延时时间
————————————————
版权声明:本文为CSDN博主「43259260」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011955950/article/details/19030267