【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

struct ethtool_ops详解相关推荐

  1. python标准类型内建模块_Python内建模块struct实例详解

    本文研究的主要是Python内建模块struct的相关内容,具体如下. Python中变量的类型只有列表.元祖.字典.集合等高级抽象类型,并没有像c中定义了位.字节.整型等底层初级类型.因为Pytho ...

  2. struct sock详解

    struct sock详解 结构体sock是套接口在网络层的表示,在代码include/net/sock.h 174行定义,下面是其内容:     struct sock {         stru ...

  3. 【C语言】结构体定义 typedef struct 用法详解和用法小结

    结构体定义 typedef struct 用法详解和用法小结 文章目录 结构体定义 typedef struct 用法详解和用法小结 0. 前言 1. 首先:在C中定义一个结构体类型要用typedef ...

  4. c语言struct的作用和用法,c语言struct用法详解

    c语言struct用法详解 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.结构体的定义形式为:struct 结构体名{ 结构体所包含的变量或数组 }; 结构体是一种集合,它里面包 ...

  5. python struct.unpack和struct.pack详解

    Python相关文档链接: https://docs.python.org/3/library/struct.html#format-characters 简介 struct模块用于将外部压缩的格式字 ...

  6. C语言struct关键字详解—结构体

    struct 是个神奇的关键字,它将一些相关联的数据打包成一个整体,方便使用. 在网络协议.通信控制.嵌入式系统.驱动开发等地方,我们经常要传送的不是简单的字节流(char 型数组),而是多种数据组合 ...

  7. C/C++语法知识:typedef struct 用法详解

    第一篇:typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定 ...

  8. gethostbyname和struct hostent详解

    struct hostent *gethostbyname(const char *name); gethostbyname函数根据域名解析出服务器的ip地址,它返回一个结构体struct hoste ...

  9. C语言struct用法详解

    数组(Array),它是一组具有相同类型的数据的集合.但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄为整数,所在的学习小组为字符,成绩为 ...

最新文章

  1. gc java root_一个两年Java程序员的面试总结
  2. Stream 与 byte[] 互转
  3. Javascript模板引擎handlebars使用实例及技巧
  4. Java应用程序的简单令牌认证
  5. 聆听无声的话语:手把手教你用ModelArts实现手语识别
  6. matlb:图像的几何矩,中心矩,Hu不变矩(含代码)
  7. quartz mysql 驱动_quartz mysql 集成
  8. android 开源 视频播放器,安卓视频播放器——ijkPlayer(Bilibili开源)
  9. c语言用二维数组学生姓名,C语言实验报告合集-_人人文库网
  10. Java实习日记(3)
  11. Unity内截屏实现
  12. C/C++编程学习 - 第22周 ② 非负数的和
  13. 主流移动开发平台介绍
  14. 方程组在原点附近解matlab,Matlab计算题:求解下列非线性方程组在原点附近的根: 9x^2 + 36y^2 + 4z^2 =36 X^2 -2y^2- 20z =0 16x –...
  15. web检查器要不要打开_简单粗暴,详细得不要不要的 JavaWeb快速入门
  16. 追加贷显示服务器出错,小蜜蜂财务软件常见问题汇总
  17. 计算机系统中软件的分类及各自的定义,计算机软件的定义和分类
  18. Python 爬取网页
  19. ZYNQ - 无DDR固化程序(代码运行在OCM上)
  20. 解析数字孪生城市的四大特点

热门文章

  1. 分析与设计:图书管理系统
  2. 【2019工研/模拟】九键输入法(巧用数组)
  3. [附源码]计算机毕业设计Python+uniapp基于Android的校园考勤APPo0400(程序+源码+LW+远程部署)
  4. 如何用matlab画烧杯,matlab 微分方程求解作图这个方程怎么解,还有图象怎么出来~dN1/dt=[r1*(1-N1/K1)-m*N2]*N...
  5. 登录页-登录成功后的路由守卫
  6. 瞬渺光电代理THZ光谱仪成功客户
  7. 简单又复杂的三层网络转发技术
  8. 利率风险结构和期限结构
  9. MySQL事务与锁详解,并发读异常与隔离策略
  10. 全球与中国冷气喷涂市场深度研究分析报告