• Avri Altman's avatar
    iwlwifi: mvm: Handle power management constraints for additional use-cases · 19889025
    Avri Altman authored
    Today, the driver logic looks for the conditions to disable
    power management albeit power management should be enabled
    in a very few distinct cases.
    This patch changes the driver logic to enable power
    management once the required conditions met.
    While at it, make some housekeeping and support a few
    additional use cases:
    
    a) Add support for a standalone p2p client:
       Power management should be enabled for a P2P client
       MAC only if the firmware supports it (TLV flag is set).
       Instead we used the DCM flag, therefore we didn't cover
       use cases that did not include the DCM flag.
    
    b) Add support to Same-Channel-Mode (SCM):
       If both clients share the same channel (SCM), and there
       are no other active vifs in the system, power management
       should be enabled only if the firmware supports this
       (TLV flag is set).
    
    c) Fix power management logic for GO/AP:
       Today, when we detect an active GO / AP MAC - we disable
       power management for all the vifs altogether.
       Actually, the correct behavior is to enable power
       management on a client if on a different channel
       (based on the firmware capabilities).
    
    d) Housekeeping - Along with that, this patch includes some
       code-reorganizing: Today the logic of disabling power is
       scattered across several functions, specifically in the
       iterator. For the sake of both readability and
       scalability, we moved this logic to its applicable
       function, leaving the iterator gather information only.
       Furthermore, as power management is a MAC-related
       attribute, we moved the power management member to the
       iwl_mvm_vif structure.
    Signed-off-by: default avatarAvri Altman <avri.altman@intel.com>
    Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
    19889025
power.c 29.5 KB