Я тестирую свой виртуальный драйвер, чтобы получить сертификат HLK. В HLK есть тест 2c_priority, который проверяет отправку пакета с тегом 802.1p.
Изначально я не поддерживаю 802.1p. Для поддержки 802.1p я добавил параметры NDIS_MAC_OPTION_8021P_PRIORITY
и NDIS_MAC_OPTION_8021Q_VLAN
в запрос OID_GEN_MAC_OPTIONS
OID.
Во время теста 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
так далее..
Я вижу, как значения NdisPacket8021qInfo.TagHeader.UserPriority
меняются, например, 5, 1, 6, 4 и т. д.
Теперь я проверяю свою принимающую сторону, чтобы проверить, имеет ли Netbufferlist тот же приоритет. Но я не видел никаких значений.
Я сомневаюсь:
Я не вставлял этот тег 802.1p в поле Ethernet во время функции sendNetBufferList. Будет ли сам HLK добавлять этот тег в поле Ethernet? или я должен вручную добавить в поле Ethernet NetBufferList?
Это почему я не вижу пакеты 802.1p во время приема? Но почему я не вижу никаких значений NDIS_NET_BUFFER_LIST_8021Q_INFO NetBufferList во время процесса получения?