USB CDC
+ -

CDC SetEthernetMulticastFilters

2025-07-11 0 0

1. SetEthernetMulticastFilters 请求用途

SetEthernetMulticastFilters 用于设置以太网设备的多播过滤器,通过48位以太网多播地址的顺序列表指定。
主机通过此请求配置设备的多播地址过滤列表,用于网络数据包的过滤和接收控制。


2. USB 控制传输格式

字段 值/说明
bmRequestType 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口
bRequest 0x40 (SET_ETHERNET_MULTICAST_FILTER)
wValue 过滤器数量(N)
wIndex 接口号
wLength N * 6
Data N个48位多播地址列表(网络字节序)

3. 典型主机端请求示例

C 结构体示例:

uint8_t multicast_addresses[3][6] = {
    {0x01, 0x00, 0x5E, 0x00, 0x00, 0x01},  // 多播地址1
    {0x01, 0x00, 0x5E, 0x00, 0x00, 0x02},  // 多播地址2
    {0x01, 0x00, 0x5E, 0x00, 0x00, 0x03}   // 多播地址3
};

USB_SETUP_PACKET setup = {
    .bmRequestType = 0x21,           // 主机到设备,类,接口
    .bRequest = 0x40,                // SET_ETHERNET_MULTICAST_FILTER
    .wValue = 0x0003,                // 3个过滤器
    .wIndex = interface_number,      // 通信接口号
    .wLength = 3 * 6                 // 3个地址 * 6字节
};
// 发送setup包和multicast_addresses数据

4. 设备端处理要点

  • 解析wValue中的过滤器数量N。
  • 从Data阶段读取N个48位多播地址。
  • 更新设备的多播过滤器列表。
  • 如果缓冲区容量有限,可以使用NAK分批处理。
  • 完成后通过状态阶段(Status Stage)ACK主机。

5. 常见应用场景

场景 过滤器数量 多播地址示例 说明
标准多播 1 01:00:5E:00:00:01 设置单个多播地址
多个多播 3 01:00:5E:00:00:01-03 设置多个多播地址
清除过滤器 0 清除所有多播过滤器

6. 参考

0 篇笔记 写笔记

ECM SetEthernetMulticastFilters请求
SET_ETHERNET_MULTICAST_FILTER 请求用于设置以太网设备的多播过滤器,按照顺序列表指定多个48位以太网多播地址。请求格式字段值/说明描述bmRequestType00100001B主机到设备,类请求,接口bRequestCodeSET_E......
CDC SetEthernetMulticastFilters
1. SetEthernetMulticastFilters 请求用途SetEthernetMulticastFilters 用于设置以太网设备的多播过滤器,通过48位以太网多播地址的顺序列表指定。主机通过此请求配置设备的多播地址过滤列表,用于网络数据包的过滤和接收控制。2. USB 控制传输格......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!