802.11s mesh powersaving for linux

Scope

  • Implement non-realtime powersaving features of 802.11s draft:
    • powersaving level indication;
    • traffic buffering for sleeping peers;
    • TIM/DTIM in beacons;
    • peer service period;
  • Provide powersaving level control on MSTA/peer link basis;
  • Provide peer link control;

Approach

Enhance current in-kernel 802.11s implementation:

  • powersaving scheme proposed by 802.11s draft closely resemble AP-based scheme (traffic buffering/TIM/DTIM), so this code may be reused;
  • powersaving level indication (both peer and non-peer)/mesh awake window attributes need to be added;
  • wakeup for peer beacon reception may be implemented later, now it's enough to stay awake continuously and just calculate whether station would actually hear the frames that it receives;
  • peer service period logic need to be added, it's a simple state machine;

Testing may be carried out with mac80211_hwsim driver. Test cases.

What's to be done

  • MSTA power mode tracking (11C.13.3);
  • each peering power mode tracking (11C.13.4);
  • TIM/DTIM in beacons (11C.13.5-6) -- ieee80211_beacon_get_tim;
  • mesh awake window (11C.13.7);
  • wake-up scheduling for peer beacons (optional);
  • service period tracking (11C.13.10);
  • frame buffering for doze peers -- ieee80211_tx_h_multicast_ps_buf, ieee80211_tx_h_unicast_ps_buf;
  • user interface controls -- like nl80211_set_power_save;

Repository

  • current repo: https://github.com/OSLL/greenmesh
  • outdated repos
    • linux wireless-testing repository with mesh-power branch as master: git://kkv.spb.su/dumb/mesh-power/wireless-testing.git
    • iw repository with mesh-power branch as master: git://kkv.spb.su/dumb/mesh-power/iw.git

Manuals

Project stuff

diploma.dvi (233.7 kB) Михаил Кринкин, 06/22/2011 10:39 pm