Hi MS team,
We are developing our Wi-Fi NIC driver using WifiCx (currently version 1.2) and NetadapterCx (currently version 2.3) on windows 11.
For some reasons, we have to decompose our Rx AMSDU at driver side. Since the copying of data payload is not we want, we are exploring some solutions to assign the postion of payload in sub-MSDU to netadapterCx directly and copying head only. However, only when we add IEEE80211 head for each sub-msdu and put them in single fragment, the packet can be indentified. We have tried those solution below but the throughput just turned zero then.
-
Set each packet with two fragment, the first fragment only for IEEE80211 head and LLC (including layer3 and layer4 head or not) and the second fragment for (including layer3 head/ layer4 head or not) payload. Set layer2 type to NetPacketLayer2TypeIeee80211 and fill other types and length in layout correctly.
-
Set each packet with one fragment and filling sub-MSDU in it w/o IEEE80211 head nor LLC, setting layer2 type to NetPacketLayer2TypeNull and fill other types and length in layout correctly.
With both solution above, the Rx throughput tested by iperf3 falled 0. Once we put all the contents used in solution-one into single fragment, the packet then can be identified and the throughput turns OK. However, in that way we have to copy the payload of data.
Additionally, the offset of all fragments mentioned above are 0, and the AllocationMode and AttachmentMode of rx capability are both from system, we are going to using driver allocation and attachment mode in the future.
Is there any limitation that only after the first fragment being filled to full then the second one can be used? Do you have any suggestions for using other netadapterCx features so that I can optimize the solution?
Thanks.
Hi MS team,
We are developing our Wi-Fi NIC driver using WifiCx (currently version 1.2) and NetadapterCx (currently version 2.3) on windows 11.
For some reasons, we have to decompose our Rx AMSDU at driver side. Since the copying of data payload is not we want, we are exploring some solutions to assign the postion of payload in sub-MSDU to netadapterCx directly and copying head only. However, only when we add IEEE80211 head for each sub-msdu and put them in single fragment, the packet can be indentified. We have tried those solution below but the throughput just turned zero then.
Set each packet with two fragment, the first fragment only for IEEE80211 head and LLC (including layer3 and layer4 head or not) and the second fragment for (including layer3 head/ layer4 head or not) payload. Set layer2 type to
NetPacketLayer2TypeIeee80211and fill other types and length in layout correctly.Set each packet with one fragment and filling sub-MSDU in it w/o IEEE80211 head nor LLC, setting layer2 type to
NetPacketLayer2TypeNulland fill other types and length in layout correctly.With both solution above, the Rx throughput tested by iperf3 falled 0. Once we put all the contents used in solution-one into single fragment, the packet then can be identified and the throughput turns OK. However, in that way we have to copy the payload of data.
Additionally, the offset of all fragments mentioned above are 0, and the
AllocationModeandAttachmentModeof rx capability are both from system, we are going to using driver allocation and attachment mode in the future.Is there any limitation that only after the first fragment being filled to full then the second one can be used? Do you have any suggestions for using other netadapterCx features so that I can optimize the solution?
Thanks.