USB CDC
+ -

CDC SetEthernetPacketFilter

2025-07-11 0 0

1. SetEthernetPacketFilter 请求用途

SetEthernetPacketFilter 用于配置设备以太网数据包过滤器设置。
主机通过此请求设置数据包过滤器的位图,控制设备转发哪些类型的数据包到主机。过滤器是Table 62中位图的包含OR操作。


2. USB 控制传输格式

字段 值/说明
bmRequestType 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口
bRequest 0x43 (SET_ETHERNET_PACKET_FILTER)
wValue 数据包过滤器位图(Packet Filter Bitmap)
wIndex 接口号
wLength 0
Data

3. Ethernet Packet Filter Bitmap(Table 62)

名称/说明
D15..D5 RESERVED(复位为0)
D4 PACKET_TYPE_MULTICAST
1:转发设备多播地址列表中的所有多播数据包(必需)
0:禁用(可选)
D3 PACKET_TYPE_BROADCAST
1:转发网络设备接收的所有广播数据包(必需)
0:禁用(可选)
D2 PACKET_TYPE_DIRECTED
1:转发目标地址等于网络设备MAC地址的定向数据包(必需)
0:禁用(可选)
D1 PACKET_TYPE_ALL_MULTICAST
1:转发网络设备接收的所有多播帧,不仅仅是设备多播地址列表中的帧(必需)
0:禁用
D0 PACKET_TYPE_PROMISCUOUS
1:转发网络设备接收的所有帧(必需)
0:禁用

4. 典型主机端请求示例

C 结构体示例:

USB_SETUP_PACKET setup = {
    .bmRequestType = 0x21,           // 主机到设备,类,接口
    .bRequest = 0x43,                // SET_ETHERNET_PACKET_FILTER
    .wValue = 0x000F,                // 启用所有过滤器(D3-D0)
    .wIndex = interface_number,      // 通信接口号
    .wLength = 0                     // 无数据阶段
};
// 发送setup包,无data阶段

5. 设备端处理要点

  • 解析wValue中的数据包过滤器位图。
  • 根据位图设置相应的数据包过滤规则。
  • 支持禁用某些过滤器是可选的。
  • 完成后通过状态阶段(Status Stage)ACK主机。

6. 常见应用场景

场景 位图值 D4 D3 D2 D1 D0 说明
标准模式 0x000E 1 1 1 1 0 启用除混杂模式外的所有过滤器
混杂模式 0x000F 1 1 1 1 1 启用所有过滤器
仅定向数据包 0x0004 1 0 0 0 0 仅转发定向数据包
仅多播数据包 0x0010 0 0 0 0 0 仅转发多播数据包

7. 参考

0 篇笔记 写笔记

关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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