ECM 以太网网络功能描述符
2025-07-10
0
0
以太网网络功能描述符(Ethernet Networking Functional Descriptor)用于描述通信类接口支持的以太网操作模式(SubClass code为以太网网络控制)。该描述符只能出现在接口描述符的类特定部分。
描述符结构
偏移 | 字段名 | 大小 | 类型/值 | 描述 |
---|---|---|---|---|
0 | bFunctionLength | 1 | Number | 此功能描述符的字节数 |
1 | bDescriptorType | 1 | 常量 | CS_INTERFACE |
2 | bDescriptorSubtype | 1 | 常量 | 以太网网络功能描述符子类型(见[USBCDC1.2]) |
3 | iMACAddress | 1 | 索引 | 字符串描述符索引,包含48位以太网MAC地址。Unicode字符串表示,12个字符(0-9, A-F),不能为0。例如:0123456789ABh 表示为 “0123456789AB”。 |
4 | bmEthernetStatistics | 4 | 位图 | 指示设备收集哪些以太网统计信息。某位为0时,主机网络驱动应统计对应项(如有能力)。详见Table 4。支持这些统计项为可选。如果全为0,设备不支持GetEthernetStatistic请求。 |
8 | wMaxSegmentSize | 2 | Number | 以太网设备支持的最大段大小。通常为1514字节,但可扩展(如802.1d VLAN)。 |
10 | wNumberMCFilters | 2 | 位图/数值 | 可由主机配置的多播过滤器数量。<br>D15: 0=完美多播过滤(无哈希),1=不完美多播过滤(哈希,主机需进一步过滤)<br>D14..0: 支持的多播地址过滤器数量(0~32767)。为0表示不支持SetEthernetMulticastFilters请求。 |
12 | bNumberPowerFilters | 1 | Number | 可用于唤醒主机的模式过滤器数量。 |
bmEthernetStatistics 位定义表
位 (Dn) | 字段名 | 描述 |
---|---|---|
D0 | XMIT_OK | 无错误发送的帧数 |
D1 | RCV_OK | 无错误接收的帧数 |
D2 | XMIT_ERROR | 未发送或发送出错的帧数 |
D3 | RCV_ERROR | 接收出错且未传递给USB主机的帧数 |
D4 | RCV_NO_BUFFER | 因无缓冲区丢失的帧数 |
D5 | DIRECTED_BYTES_XMIT | 无错误发送的定向字节数 |
D6 | DIRECTED_FRAMES_XMIT | 无错误发送的定向帧数 |
D7 | MULTICAST_BYTES_XMIT | 无错误发送的多播字节数 |
D8 | MULTICAST_FRAMES_XMIT | 无错误发送的多播帧数 |
D9 | BROADCAST_BYTES_XMIT | 无错误发送的广播字节数 |
D10 | BROADCAST_FRAMES_XMIT | 无错误发送的广播帧数 |
D11 | DIRECTED_BYTES_RCV | 无错误接收的定向字节数 |
D12 | DIRECTED_FRAMES_RCV | 无错误接收的定向帧数 |
D13 | MULTICAST_BYTES_RCV | 无错误接收的多播字节数 |
D14 | MULTICAST_FRAMES_RCV | 无错误接收的多播帧数 |
D15 | BROADCAST_BYTES_RCV | 无错误接收的广播字节数 |
D16 | BROADCAST_FRAMES_RCV | 无错误接收的广播帧数 |
D17 | RCV_CRC_ERROR | 接收时出现CRC或FCS错误的帧数 |
D18 | TRANSMIT_QUEUE_LENGTH | 发送队列长度 |
D19 | RCV_ERROR_ALIGNMENT | 接收时出现对齐错误的帧数 |
D20 | XMIT_ONE_COLLISION | 发生一次冲突后发送的帧数 |
D21 | XMIT_MORE_COLLISIONS | 发生多次冲突后发送的帧数 |
D22 | XMIT_DEFERRED | 延迟后发送的帧数 |
D23 | XMIT_MAX_COLLISIONS | 因冲突未发送的帧数 |
D24 | RCV_OVERRUN | 因溢出未接收的帧数 |
D25 | XMIT_UNDERRUN | 因欠载未发送的帧数 |
D26 | XMIT_HEARTBEAT_FAILURE | 发送时发生心跳失败的帧数 |
D27 | XMIT_TIMES_CRS_LOST | 发送期间载波检测信号丢失的次数 |
D28 | XMIT_LATE_COLLISIONS | 检测到的晚期冲突次数 |
D29-D31 | RESERVED | 保留,必须为零 |
说明
- bFunctionLength:描述符长度(字节)
- bDescriptorType:固定为CS_INTERFACE
- bDescriptorSubtype:以太网网络功能描述符子类型
- iMACAddress:指向MAC地址的字符串描述符索引,12位十六进制字符,网络字节序
- bmEthernetStatistics:以太网统计功能位图,详见后续表格
- wMaxSegmentSize:最大以太网帧长度(不含CRC)
- wNumberMCFilters:多播过滤器数量及类型
- bNumberPowerFilters:支持的电源管理模式过滤器数量
示例(结构体定义)
typedef struct _ETHERNET_NETWORKING_FUNCTIONAL_DESCRIPTOR {
uint8_t bFunctionLength;
uint8_t bDescriptorType;
uint8_t bDescriptorSubtype;
uint8_t iMACAddress;
uint32_t bmEthernetStatistics;
uint16_t wMaxSegmentSize;
uint16_t wNumberMCFilters;
uint8_t bNumberPowerFilters;
} ETHERNET_NETWORKING_FUNCTIONAL_DESCRIPTOR;
总结
以太网网络功能描述符为主机提供了设备的MAC地址、统计能力、最大帧长、多播和电源管理过滤能力等关键信息,是USB以太网设备描述符链中的核心部分。