Search Linux Wireless

Re: [PATCH] mac80211: add ieee80211_set_dyn_ps_timeout()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 19, 2011 at 7:38 PM, Johannes Berg
<johannes@xxxxxxxxxxxxxxxx> wrote:
> On Mon, 2011-09-19 at 19:30 +0300, Eliad Peller wrote:
>
>> AFAIU from the coex guys, the scenario is something like this:
>> upon coex activity, the fw might delay its rx and tx paths. this means
>> that the fw might get a frame within the 100ms of the dyn ps, but
>> delay its processing and pass it up to the driver only later.
>> this will cause redundant psm enter (after 100ms) and psm exit (after
>> the fw passed the packet).
>> i'm not sure about the exact effect during coex operation, but
>> eventually these psm enter/exit affect the throughput.
>>
>> another point here, is that during a specific period (during auto_mode
>> on), there might or might not be coex activity. thus, we can't just
>> disable dyn_ps, as it will hurt throughput (when there is no coex
>> activity).
>>
>> bottom line - i'm not sure about all the details, but according to
>> their tests - it does improve the throughput.
>> (i can try getting better details if you have additional questions)
>
> It'd be interesting to see if we can just treat this as a "minimum awake
> time", kinda like going back to the range I thought about earlier.
>
do you mean something like:
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 4274e94..57695e3 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -702,11 +702,12 @@ void ieee80211_recalc_ps(struct ieee80211_local
*local, s32 latency)
                        if (latency > (1900 * USEC_PER_MSEC) &&
                            latency != (2000 * USEC_PER_SEC))
                                timeout = 0;
-                       else if (local->dynamic_ps_driver_timeout >= 0)
-                               timeout = local->dynamic_ps_driver_timeout;
                        else
                                timeout = 100;
                }
+               if (timeout && local->dynamic_ps_driver_timeout > timeout)
+                       timeout = local->dynamic_ps_driver_timeout;
+
                local->dynamic_ps_user_timeout = timeout;
                if (!local->disable_dynamic_ps)
                        conf->dynamic_ps_timeout =

?

i don't find it much different.

Eliad.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux