Closed orinem closed 9 years ago
Further note: discarding packets with a bad FCS should be a user option.
I think I'll implement an FCS check in WaveDriverAirportExtreme.m since that is what I'm using/testing (and leave WavePacket.mm alone). In other words, I'll replace the dataLen -= 4 with an FCS check. I can't see that being a problem since a failed FCS means we know the packet is corrupt.
Could you add me to skype: #########
I don't have skype at the moment... I'll drop you an email - rather not post the address, though it's not really a secret.
Seems OK now for the Airport Extreme, so I'm closing it.
I get an awful lot of corrupt packets - about 100 per second here. I verified this by capturing with Wireshark independently.
Unfortunately, the Frame Check Sequence is currently ignored and bad packets get parsed. This results in random messages from the packet parsing, many "Packet with illegal 802.11 version captured" messages for example.
Depending on what is corrupted in any given packet, you can see bad SSIDs in the networks list, non-existent clients in the details list and so on.
The ability to check the FCS partially exists in FCS.h and FCS.m, though the parameter types and table should be changed to uint32_t (sizeof(long) may well be 8 these days).
In addition, WaveDriverAirportExtreme at least is not including the FCS bytes in frames returned from nextFrame. I have not looked at any of the other drivers.
Here is very basic code to do the FCS check. It will need fixing to handle any drivers that do not supply the FCS bytes, possibly by adding an FCS present flag to KCtrlFrame. It would also be possible for the drivers themselves to do the check.
WavePacket.mm Note the 80211 version check is moved after the FCS check.
WaveDriverAirportExtreme.m: