From owner-svn-src-head@FreeBSD.ORG Fri Mar 9 22:58:35 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8203B106566C; Fri, 9 Mar 2012 22:58:35 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 542A58FC08; Fri, 9 Mar 2012 22:58:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q29MwZBn028904; Fri, 9 Mar 2012 22:58:35 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q29MwZBX028902; Fri, 9 Mar 2012 22:58:35 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201203092258.q29MwZBX028902@svn.freebsd.org> From: Adrian Chadd Date: Fri, 9 Mar 2012 22:58:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r232753 - head/sys/dev/ath X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Mar 2012 22:58:35 -0000 Author: adrian Date: Fri Mar 9 22:58:34 2012 New Revision: 232753 URL: http://svn.freebsd.org/changeset/base/232753 Log: Document that we may end up with some suboptimal handling of data frames with stations in power saving mode. I'm not (yet) sure how to handle TX'ing aggregates frames to stations that are in power saving mode, or whether that's even a feasible thing to do. So in order to (mostly) not forget, leave a couple of comments in the code. The code presently assumes that the aggregation TID state for an ath_node is locked not by the ath_node lock or a node+TID lock, but behind the hardware queue said TID maps to. This assumption is going to be incorrect for stations in power saving mode as we'll be TX'ing frames on the multicast queue. In any case, I'm afraid its a "later problem". :/ Modified: head/sys/dev/ath/if_ath_tx.c Modified: head/sys/dev/ath/if_ath_tx.c ============================================================================== --- head/sys/dev/ath/if_ath_tx.c Fri Mar 9 22:41:09 2012 (r232752) +++ head/sys/dev/ath/if_ath_tx.c Fri Mar 9 22:58:34 2012 (r232753) @@ -1162,6 +1162,11 @@ ath_tx_normal_setup(struct ath_softc *sc * (or) if there is some mcast data waiting on the mcast * queue (to prevent out of order delivery) multicast * frames must be buffered until after the beacon. + * + * XXX This likely means that if there's a station in power + * save mode, we won't be doing any kind of aggregation towards + * anyone. This is likely a very suboptimal way of dealing + * with things. */ if (ismcast && (vap->iv_ps_sta || avp->av_mcastq.axq_depth)) txq = &avp->av_mcastq; @@ -1409,6 +1414,12 @@ ath_tx_start(struct ath_softc *sc, struc if (ismcast) txq = &avp->av_mcastq; + /* + * XXX This likely means that if there's a station in power + * save mode, we won't be doing any kind of aggregation towards + * anyone. This is likely a very suboptimal way of dealing + * with things. + */ if ((! is_ampdu) && (vap->iv_ps_sta || avp->av_mcastq.axq_depth)) txq = &avp->av_mcastq;