Skip to content
  • Kalle Valo's avatar
    mac80211: check uapsd state for dynamic power save · 0c74211d
    Kalle Valo authored
    
    
    To make U-APSD client mode effective, we must not wake up from dynamic power
    save when transmitting frames. So if dynamic power save is enabled, it needs
    check the queue the transmitted packet is in and decide if we need to wake
    up or not.
    
    In a perfect world, where all packets would have correct QoS tags, U-APSD
    enabled queues should not trigger wakeup from power save. But in the real
    world, where very few packets have correct QoS tags, this won't work. For
    example, if only voip class has U-APSD enabled and we send a packet in voip
    class, but the packets we receive are in best effort class, we would receive
    the packets with the legacy power save method. And that would increase
    latencies too much from a voip application point of view.
    
    The workaround is to enable U-APSD for all qeueus and still use dynamic ps
    wakeup for all other queues except voip. That way we can still save power
    with a voip application and not sacrifice latency. Normal traffic (in
    background, best effort or video class) would still trigger wakeup from
    dynamic power save.
    
    Signed-off-by: default avatarKalle Valo <kalle.valo@nokia.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    0c74211d