我正在测试我的虚拟驱动程序以获得 HLK 认证。在 HLK 中,他们有 2c_priority 测试,它将检查 802.1 p 标记数据包的发送。
最初我不支持 802.1p 。为了支持 802.1p ,我在OID 查询中添加了NDIS_MAC_OPTION_8021P_PRIORITY
和NDIS_MAC_OPTION_8021Q_VLAN
选项。OID_GEN_MAC_OPTIONS
在 HLK 测试期间,我跟踪了所有 NetBufferList 以找到 802.1p 标签帧
NDIS_NET_BUFFER_LIST_8021Q_INFO NdisPacket8021qInfo;
NdisPacket8021qInfo.Value = NET_BUFFER_LIST_INFO(NetBufferList, Ieee8021QNetBufferListInfo);
使用这个,我可以看到
NdisPacket8021qInfo.TagHeader.VlanId = 0 ;
NdisPacket8021qInfo.TagHeader.UserPriority = 5
ETC..
我可以看到NdisPacket8021qInfo.TagHeader.UserPriority
像 5 , 1, 6 , 4 等值的变化。
现在我检查我的接收端以检查 Netbufferlist 是否具有相同的 Priority 。但我没有看到任何价值观。
我的疑问是:
在 sendNetBufferList 函数期间,我没有在以太网字段中插入这个 802.1p 标签。HLK 本身会在以太网字段中添加这个标签吗?还是我应该手动添加到 NetBufferList 的以太网字段?
这就是为什么我在接收过程中看不到 802.1p 数据包的原因吗?但是为什么在接收过程中我看不到 NetBufferList 的任何 NDIS_NET_BUFFER_LIST_8021Q_INFO 值?