2011-05-31 06:30:53 UTC
We have a NDIS 5.1 miniport driver for Windows XP (WHQL certified) in
which we do NOT support VLAN (802.1P and 802.1Q), i.e. we do not set
either of the flags NDIS_MAC_OPTION_8021P_PRIORITY and
NDIS_MAC_OPTION_8021Q_VLAN in query to OID_GEN_MAC_OPTIONS, neither do
we include OID_GEN_VLAN_ID in response to OID_GEN_SUPPORTED_LIST.
All this is optional as per the DDK and we chose not to support it.
Recently we noticed an issue where we observed that if we happen to
receive a packet having VLAN tag (0x0081) and indicate it to upper
layers like any other packet, then NDIS does not return it back to us,
i.e. does not call MiniportReturnPacket.
However if we set the per packet information (using the macro
NDIS_PER_PACKET_INFO_FROM_PACKET) for InfoType Ieee8021QInfo and strip
the VLAN header from the packet before indicating, then NDIS
subsequently returns it back to us!
So is it necessary even for a non-VLAN aware miniport driver to
process VLAN packets in receive path?
Actually in this case there was no query or set OID for VLAN_ID, so
such packet should ideally be dropped. Is that the right
implementation in this case?