编写设备驱动程序

Solaris 以太网驱动程序的内核统计信息

下表中介绍的 kstat 接口是从驱动程序中获取以太网物理层统计信息的有效方法。以太网驱动程序应导出这些统计信息,以指导用户更好地诊断和修复以太网物理层问题。除 link_up 之外,所有统计信息在未提供时的缺省值均为 0。应将 link_up 统计信息的值假定为 1。

以下示例给出了所有共享的链路设置。在这种情况下,可使用 mii 来过滤统计信息。

kstat ce:0:mii:link_*
表 22–2 以太网 MII/GMII 物理层接口内核统计信息

Kstat 变量 

类型 

说明 

xcvr_addr

KSTAT_DATA_UINT32

提供当前正在使用的收发器的 MII 地址。 

  • (0) - (31) 用于给定以太网设备的物理层设备的 MII 地址。

  • 在没有可从外部访问的 MII 接口,因此 MII 地址不明确或不相关的情况下,使用 (-1)。

xcvr_id

KSTAT_DATA_UINT32

提供当前正在使用的收发器的特定供应商 ID 或设备 ID。 

xcvr_inuse

KSTAT_DATA_UINT32

指示当前正在使用的收发器的类型。IEEE aPhytType 枚举以下集合:

  • (0) 其他未定义

  • (1) 不存在 MII 接口,但未连接任何收发器

  • (2) 10 Mb/s Clause 7 10 Mb/s Manchester

  • (3) 100BASE-T4 Clause 23 100 Mb/s 8B/6T

  • (4) 100BASE-X Clause 24 100 Mb/s 4B/5B

  • (5) 100BASE-T2 Clause 32 100 Mb/s PAM5X5

  • (6) 1000BASE-X Clause 36 1000 Mb/s 8B/10B

  • (7) 1000BASE-T Clause 40 1000 Mb/s 4D-PAM5

此集合比 ifMauType 指定的集合小,后者定义为包括上述所有类型及其半双工/全双工选件。由于 cap_* 统计信息可提供此信息,因此可从 xcvr_inusecap_* 的组合中派生缺少的定义,以提供 ifMayType 的所有组合。

cap_1000fdx

KSTAT_DATA_CHAR

指示设备支持 1 Gb/s 的全双工传输。 

cap_1000hdx

KSTAT_DATA_CHAR

指示设备支持 1 Gb/s 的半双工传输。 

cap_100fdx

KSTAT_DATA_CHAR

指示设备支持 100 Mb/s 的全双工传输。 

cap_100hdx

KSTAT_DATA_CHAR

指示设备支持 100 Mb/s 的半双工传输。 

cap_10fdx

KSTAT_DATA_CHAR

指示设备支持 10 Mb/s 的全双工传输。 

cap_10hdx

KSTAT_DATA_CHAR

指示设备支持 10 Mb/s 的半双工传输。 

cap_asmpause

KSTAT_DATA_CHAR

指示设备支持非对称暂停以太网流量控制。 

cap_pause

KSTAT_DATA_CHAR

指示当 cap_pause 设置为 1,cap_asmpause 设置为 0 时,设备支持对称暂停以太网流量控制。当 cap_asmpause 设置为 1 时,cap_pause 具有以下含义:

  • cap_pause = 0 基于接收拥塞传送暂停。

  • cap_pause = 1 接收暂停并减慢传送,以避免拥塞。

cap_rem_fault

KSTAT_DATA_CHAR

指示设备支持远程故障指示。 

cap_autoneg

KSTAT_DATA_CHAR

指示设备支持自动协商。 

adv_cap_1000fdx

KSTAT_DATA_CHAR

指示设备正在通告支持 1 Gb/s 的全双工传输。 

adv_cap_1000hdx

KSTAT_DATA_CHAR

指示设备正在通告支持 1 Gb/s 的半双工传输。 

adv_cap_100fdx

KSTAT_DATA_CHAR

指示设备正在通告支持 100 Mb/s 的全双工传输。 

adv_cap_100hdx

KSTAT_DATA_CHAR

指示设备正在通告支持 100 Mb/s 的半双工传输。 

adv_cap_10fdx

KSTAT_DATA_CHAR

指示设备正在通告支持 10 Mb/s 的全双工传输。 

adv_cap_10hdx

KSTAT_DATA_CHAR

指示设备正在通告支持 10 Mb/s 的半双工传输。 

adv_cap_asmpause

KSTAT_DATA_CHAR

指示设备正在通告支持非对称暂停以太网流量控制。 

adv_cap_pause

KSTAT_DATA_CHAR

指示当 adv_cap_pause 设置为 1,adv_cap_asmpause 设置为 0 时,设备正在通告支持对称暂停以太网流量控制。当 adv_cap_asmpause 设置为 1 时,adv_cap_pause 具有以下含义:

  • adv_cap_pause = 0 基于接收拥塞传送暂停。

  • adv_cap_pause = 1 接收暂停并减慢传送,以避免拥塞。

adv_rem_fault

KSTAT_DATA_CHAR

指示设备遇到故障,设备将把该故障转发给链路合作伙伴。 

adv_cap_autoneg

KSTAT_DATA_CHAR

指示设备正在通告支持自动协商。 

lp_cap_1000fdx

KSTAT_DATA_CHAR

指示链路合作伙伴设备支持 1 Gb/s 的全双工传输。 

lp_cap_1000hdx

KSTAT_DATA_CHAR

指示链路合作伙伴设备支持 1 Gb/s 的半双工传输。 

lp_cap_100fdx

KSTAT_DATA_CHAR

指示链路合作伙伴设备支持 100 Mb/s 的全双工传输。 

lp_cap_100hdx

KSTAT_DATA_CHAR

指示链路合作伙伴设备支持 100 Mb/s 的半双工传输。 

lp_cap_10fdx

KSTAT_DATA_CHAR

指示链路合作伙伴设备支持 10 Mb/s 的全双工传输。 

lp_cap_10hdx

KSTAT_DATA_CHAR

指示链路合作伙伴设备支持 10 Mb/s 的半双工传输。 

lp_cap_asmpause

KSTAT_DATA_CHAR

指示链路合作伙伴设备支持非对称暂停以太网流量控制。 

lp_cap_pause

KSTAT_DATA_CHAR

指示当 lp_cap_pause 设置为 1,lp_cap_asmpause 设置为 0 时,链路合作伙伴设备支持对称暂停以太网流量控制。当 lp_cap_asmpause 设置为 1 时,lp_cap_pause 具有以下含义:

  • lp_cap_pause = 0 链路合作伙伴将基于接收拥塞传送暂停。

  • lp_cap_pause = 1 链路合作伙伴将接收暂停并减慢传送,以避免拥塞。

lp_rem_fault

KSTAT_DATA_CHAR

指示链路合作伙伴遇到链路故障。 

lp_cap_autoneg

KSTAT_DATA_CHAR

指示链路合作伙伴设备支持自动协商。 

link_asmpause

KSTAT_DATA_CHAR

指示链路正采用非对称暂停以太网流量控制来运行。 

link_pause

KSTAT_DATA_CHAR

指示暂停功能的精度。指示当 link_pause 设置为 1,link_asmpause 设置为 0 时,链路正采用对称暂停以太网流量控制来运行。当 link_asmpause 设置为 1 且相对于链路的本地视图时,link_pause 具有以下含义:

  • link_pause = 0 此站将基于接收拥塞来传送暂停。

  • link_pause = 1 此站将接收暂停并减慢传送,以避免拥塞。

link_duplex

KSTAT_DATA_CHAR

指示链路双工模式。 

  • link_duplex = 0 链路关闭,且双工模式未知。

  • link_duplex = 1 链路打开,且处于半双工模式。

  • link_duplex = 2 链路打开,且处于全双工模式。

link_up

KSTAT_DATA_CHAR

指示链路是打开还是关闭。 

  • link_up = 0 链路关闭。

  • link_up = 1 链路打开。