• Johannes Berg's avatar
    iwlwifi: automatically adjust sleep level · e312c24c
    Johannes Berg authored
    Depending on required latency requested by pm_qos (via mac80211)
    we can automatically adjust the sleep state. Also, mac80211 has
    a user-visible dynamic sleep feature where we are supposed to
    stay awake after sending/receiving frames to better receive
    response frames to our packets, this can be integrated into the
    sleep command.
    Currently, and this patch doesn't change that yet, we default
    to using sleep level 1 if PS is enabled. With a module parameter
    to iwlcore, automatic adjustment to changing network latency
    requirements can be enabled -- this isn't yet the default due
    to requiring more testing.
    The goal is to enable automatic adjustment and then go into the
    deepest possible sleep state possible depending on the networking
    latency requirements.
    This patch does, however, enable IEEE80211_HW_SUPPORTS_DYNAMIC_PS
    to avoid the double-timer (one in software and one in the device)
    when transmitting -- the exact timeout may be ignored but that is
    not of big concern.
    Note also that we keep the hard-coded power indices around for
    thermal throttling -- the specification of that calls for using
    the specified power levels. Those can also be selected in debugfs
    to allow easier testing of such parameters.
    Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>