CDC 以太网网络功能描述符
2025-07-10
0
0
Ethernet Networking Functional Descriptor(以太网网络功能描述符)以太网网络功能描述符用于描述USB以太网设备的MAC地址、统计能力、最大帧长、多播和电源管理过滤能力等关键信息,是USB以太网设备描述符链中的核心部分。
该描述符用于描述通信类接口(SubClass为以太网网络控制,Ethernet Networking Control)所支持的以太网操作模式。它只能出现在接口描述符的类特定部分。
描述符结构(Table 41)
偏移 | 字段名 | 大小 | 值/类型 | 描述 |
---|---|---|---|---|
0 | bFunctionLength | 1 | 数值 | 此功能描述符的字节数 |
1 | bDescriptorType | 1 | 常量 | CS_INTERFACE 描述符类型 |
2 | bDescriptorSubtype | 1 | 常量 | 以太网网络功能描述符子类型 |
3 | iMACAddress | 1 | 索引 | 字符串描述符索引,包含48位以太网MAC地址。Unicode字符串表示,12个字符(0-9, A-F),不能为0。例如:0123456789ABh 表示为 “0123456789AB”。 |
4 | bmEthernetStatistics | 4 | 位图 | 指示设备收集哪些以太网统计信息。某位为0时,主机应统计对应项。详见下表。 |
8 | wMaxSegmentSize | 2 | 数值 | 以太网设备支持的最大段大小,通常为1514字节,可扩展(如VLAN) |
10 | wNumberMCFilters | 2 | 位图 | 可由主机配置的多播过滤器数量。<br>D15: 0=完美多播过滤,1=不完美(哈希)<br>D14..0: 支持的多播地址过滤器数量(0~32767)。为0表示不支持SetEthernetMulticastFilters请求。 |
12 | bNumberPowerFilters | 1 | 数值 | 可用于唤醒主机的模式过滤器数量 |
以太网统计能力位(Table 42)
位 | 字段名 | 描述 |
---|---|---|
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-31 | RESERVED | 保留,必须为零 |
示例(C结构体及二进制示例)
C结构体定义
typedef struct _USB_CDC_ETHERNET_NETWORKING_DESCRIPTOR {
uint8_t bFunctionLength; // 描述符长度
uint8_t bDescriptorType; // CS_INTERFACE (0x24)
uint8_t bDescriptorSubtype; // Ethernet Networking subtype (0x0F)
uint8_t iMACAddress; // MAC地址字符串描述符索引
uint32_t bmEthernetStatistics; // 以太网统计能力位图
uint16_t wMaxSegmentSize; // 最大段大小
uint16_t wNumberMCFilters; // 多播过滤器数量及类型
uint8_t bNumberPowerFilters; // 唤醒模式过滤器数量
} USB_CDC_ETHERNET_NETWORKING_DESCRIPTOR;
示例数据(假设MAC地址字符串索引为2,统计能力全支持,最大段1514,支持8个多播过滤器,1个唤醒过滤器)
字节序号 | 值(十六进制) | 含义 |
---|---|---|
0 | 0x0D | bFunctionLength = 13 |
1 | 0x24 | bDescriptorType = CS_INTERFACE |
2 | 0x0F | bDescriptorSubtype = Ethernet Networking |
3 | 0x02 | iMACAddress = 2 |
4-7 | 0xFFFFFFFF | bmEthernetStatistics = 全支持 |
8-9 | 0xEA 0x05 | wMaxSegmentSize = 1514 |
10-11 | 0x08 0x00 | wNumberMCFilters = 8, 完美过滤 |
12 | 0x01 | bNumberPowerFilters = 1 |
二进制示例:
0D 24 0F 02 FF FF FF FF EA 05 08 00 01
说明
- bFunctionLength:描述符总长度,通常为13字节
- bDescriptorType:固定为0x24(CS_INTERFACE)
- bDescriptorSubtype:以太网网络功能描述符为0x0F
- iMACAddress:MAC地址字符串描述符索引
- bmEthernetStatistics:以太网统计能力位图
- wMaxSegmentSize:最大段大小
- wNumberMCFilters:多播过滤器数量及类型
- bNumberPowerFilters:唤醒模式过滤器数量