Return-path: Received: from youngberry.canonical.com ([91.189.89.112]:56341 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752284Ab3BMTZb (ORCPT ); Wed, 13 Feb 2013 14:25:31 -0500 Date: Wed, 13 Feb 2013 13:25:19 -0600 From: Seth Forshee To: Arend van Spriel Cc: Johannes Berg , linux-wireless@vger.kernel.org, "John W. Linville" , "Luis R. Rodriguez" , Jouni Malinen , Vasanthakumar Thiagarajan , Senthil Balasubramanian , Christian Lamparter , Ivo van Doorn , Gertjan van Wingerde , Helmut Schaa , Larry Finger , Chaoming Li , Wey-Yi Guy , Intel Linux Wireless , Luciano Coelho , ath9k-devel@venema.h4ckr.net, brcm80211-dev-list@broadcom.com, users@rt2x00.serialmonkey.com Subject: Re: [PATCH 1/4] mac80211: Convert PS configuration from a binary flag to a set of modes Message-ID: <20130213192519.GD22867@thinkpad-t410> (sfid-20130213_202535_654107_2B75F7D9) References: <1360184478-31481-1-git-send-email-seth.forshee@canonical.com> <1360184478-31481-2-git-send-email-seth.forshee@canonical.com> <1360767970.8868.24.camel@jlt4.sipsolutions.net> <20130213170445.GC22867@thinkpad-t410> <511BE15B.8090507@broadcom.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii In-Reply-To: <511BE15B.8090507@broadcom.com> Sender: linux-wireless-owner@vger.kernel.org List-ID: On Wed, Feb 13, 2013 at 07:54:19PM +0100, Arend van Spriel wrote: > On 02/13/2013 06:04 PM, Seth Forshee wrote: > >> Is all this really worth it? It seems a quick fix for brcmsmac might be > >> > to always set the powersave bit when IEEE80211_CONF_OFFCHANNEL is > >> > enabled in the config, and then go implement a real solution like I > >> > described earlier with powersave being separated out of the core > >> > mac80211 routines, and actually made possible for multiple interfaces? > > Using IEEE80211_CONF_OFFCHANNEL won't work. When the nullfunc to enable > > PS is sent the flag won't be set, as we're still on the operating > > channel. When we're actually off-channel the value of PM doesn't matter > > for the types of frames which are being sent. The only quick fix I've > > found is to watch out for frames with PM set and set the powersave bit > > while they're being transmitted. > > I actually don't see that one fly. The frames are posted on a DMA fifo > towards the hardware so in the driver we have no clue when that frame is > being processes/transmitted hence no way of knowing when to write the > register(s). There's a couple of ways of doing it. I had a working patch at one point but can't seem to find it now, so I'm not sure which way I used. You're right though that we can't tell when the hardware is actually processing or transmitting the frame, so in either case MCTL_HPS has to be set before you put the frame in the tx fifo. The first option is that for any frame with PM set, set MCTL_HPS when mac80211 hands off the frame and clear it once it has finished transmitting. The second option is to look specifically for nullfunc frames and set or clear MCTL_HPS based on the value of PM. Either of these should work fine with the current mac80211 code, but overall the second one is probably a little safer. Seth