This is an old revision of the document!

Joshua Oreman: 802.11 wireless development

Journal Week 4

Monday, 22 June

Had a very long meeting with the mentors this morning. Things discussed:

  • Encryption thoughts: use netX/key for the encryption key setting, to avoid interfering with the iSCSI password option set using NVO or DHCP. Use gPXE's existing AES implementation, and write the core RC4 code as a gPXE crypto-subsystem cipher instead of keeping it wireless-specific. Use end-user-understandable names (WEP, WPA, WPA2, as opposed to RC4, RC4/TKIP, AES/CCMP) for configuration options.
  • Michael and I spent about two hours hashing out the correct behavior as related to my TCP fix. My patch did one thing wrong (ignored TCP sequence number wraparound) and one thing right by accident (returned early for duplicate ACKs, thus not stopping the retransmission timer and causing tcp_xmit() to do nothing). Michael corrected it and made its mode of operation clearer, and verified using artificially-duplicated frames on rtl8139 that it fixed the problem. He also pointed me to a Wikipedia article describing almost the exact issue: Sorcerer's Apprentice Syndrome. Because TCP does not automatically reply to ACKs, the problem on gPXE could only be caused by receiving two ACKs in a row for the same packet. In any event, it's fixed now, and should be in mainline soon.
  • ROM size issues: rtl8185.rom is about 500 bytes shy of the effective 64k limit. It may be possible to use a bit more than 64k, with a 128k EEPROM, but total option ROM size is limited to 128k and we don't want to starve other devices that need ROM space (e.g. RAID cards). [Most wireless cards don't have Option ROMs, but it's possible to use the ROM socket on another card, such as a r8169 (64k space) or e1000 (128k space?).
  • Some interesting preliminary discussion about the possibility of loading part of gPXE as a module. If I do any work on this it'll be after encryption, and won't impact gPXE's current uses.

QR Code
QR Code soc:2009:oremanj:journal:week5 (generated for current page)