From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x241.google.com (mail-it0-x241.google.com [IPv6:2607:f8b0:4001:c0b::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 029523B260 for ; Thu, 1 Sep 2016 22:48:51 -0400 (EDT) Received: by mail-it0-x241.google.com with SMTP id c198so745061ith.2 for ; Thu, 01 Sep 2016 19:48:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=X4Y0/pyKqdF0RRUMlJHuxeW5HVY6S0kiREizN8LnsMk=; b=bd6HG6SdEZQwjdsjcxG53lJrVpSZ0zd7cdCI+PlgxavpNYD0EmlGn0Ie5kg/MAm4lk 57VCr57S+beTJcNmC7FqGqBcQ9B0ihTr3hzzvNUvtM145uJI1dG/+EXbYHEyr/cEI4qj XdcHYc+iwLa34/JS282XN1J3gtmpRHX1q9PY8kBmAyvermU+hKSmFLVjPLnvuGZnH1tV n1R3lY2qKNGCqJHh96WAr7mEfx8GES6X3AIaxtRLIJTSzcQXI4mlB47AHH4OFFrLITWA gZByIwTeNX+inlv2VU/0uvPwmj44otEhgbwqPe1ebeWF/ociKyYGiTmKy4MeG9A5VzTg sGbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=X4Y0/pyKqdF0RRUMlJHuxeW5HVY6S0kiREizN8LnsMk=; b=ZE15aXZ/2XoCIz3UxuqzuyJA4i1AzoMM7o2WKCLW6YUEMs9ai8LkO+dVUFpxKk7Iab DDOv4ehpkI0VLHpLwKTJst4XdXzGVmrfmFVFqdtmSadgSd/4maUrPn+lkeVGbT41OM+v Wyyv9mMwhAPQEyg1Nr314ckHc8RFZcybDBL2bglcNpVX8QIaySE4z8k1D88/C9f6vHVE wF6jo1aOze5cYn/c6ZlSGSqvgiH2ArnlrIdi1YU3dRSFElGHmlACHxzLkiJumTXTjmsU BkG2+84rxFAAuC2lA93WzAN/OcrdCfPrwxrgyWkuz8E24W6h1jAisg0r8Z5cFEPopUNx TBaQ== X-Gm-Message-State: AE9vXwNbAoIcd+y6HsmS7mFolCEhdGGdxjfZ3aYTvXdzL9oHDY6m2SZCrVCCfe6PJLUE0RwcctUc1Bkl6Fbppw== X-Received: by 10.36.188.65 with SMTP id n62mr1619480ite.61.1472784531446; Thu, 01 Sep 2016 19:48:51 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.171.68 with HTTP; Thu, 1 Sep 2016 19:48:50 -0700 (PDT) In-Reply-To: <20160901160312.31540-1-toke@toke.dk> References: <20160830131548.6014-1-toke@toke.dk> <20160901160312.31540-1-toke@toke.dk> From: Jason Andryuk Message-ID: To: =?UTF-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= Cc: make-wifi-fast@lists.bufferbloat.net, "linux-wireless@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Mailman-Approved-At: Mon, 28 Nov 2016 08:47:10 -0500 Subject: Re: [Make-wifi-fast] [PATCH v5] mac80211: Move reorder-sensitive TX handlers to after TXQ dequeue. X-BeenThere: make-wifi-fast@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 02 Sep 2016 02:48:52 -0000 X-Original-Date: Thu, 1 Sep 2016 22:48:50 -0400 X-List-Received-Date: Fri, 02 Sep 2016 02:48:52 -0000 On Thu, Sep 1, 2016 at 12:03 PM, Toke H=C3=B8iland-J=C3=B8rgensen wrote: > @@ -1481,33 +1506,57 @@ struct sk_buff *ieee80211_tx_dequeue(struct ieee8= 0211_hw *hw, > { > struct ieee80211_local *local =3D hw_to_local(hw); > struct txq_info *txqi =3D container_of(txq, struct txq_info, txq)= ; > - struct ieee80211_hdr *hdr; > struct sk_buff *skb =3D NULL; > struct fq *fq =3D &local->fq; > struct fq_tin *tin =3D &txqi->tin; > + struct ieee80211_tx_info *info; > > spin_lock_bh(&fq->lock); > > if (test_bit(IEEE80211_TXQ_STOP, &txqi->flags)) > goto out; > > +begin: > skb =3D fq_tin_dequeue(fq, tin, fq_tin_dequeue_func); > if (!skb) > goto out; > > ieee80211_set_skb_vif(skb, txqi); > > - hdr =3D (struct ieee80211_hdr *)skb->data; > - if (txq->sta && ieee80211_is_data_qos(hdr->frame_control)) { > + info =3D IEEE80211_SKB_CB(skb); > + if (txq->sta && info->control.flags & IEEE80211_TX_CTRL_FAST_XMIT= ) { > struct sta_info *sta =3D container_of(txq->sta, struct st= a_info, > sta); > - struct ieee80211_tx_info *info =3D IEEE80211_SKB_CB(skb); > + struct ieee80211_fast_tx *fast_tx; > > - hdr->seq_ctrl =3D ieee80211_tx_next_seq(sta, txq->tid); > - if (test_bit(IEEE80211_TXQ_AMPDU, &txqi->flags)) > - info->flags |=3D IEEE80211_TX_CTL_AMPDU; > - else > - info->flags &=3D ~IEEE80211_TX_CTL_AMPDU; > + fast_tx =3D rcu_dereference(sta->fast_tx); > + if (WARN_ON(!fast_tx)) { > + /* lost the fast_tx pointer while the packet was = queued */ > + ieee80211_free_txskb(hw, skb); > + goto begin; > + } > + ieee80211_xmit_fast_finish(sta->sdata, sta, fast_tx, skb,= false); > + } else { > + struct ieee80211_tx_data tx =3D { }; > + > + __skb_queue_head_init(&tx.skbs); > + tx.local =3D local; > + if (txq->sta) { > + struct sta_info *sta =3D container_of(txq->sta, > + struct sta_in= fo, > + sta); sta is unneeded give the assignment below? Regards, Jason > + tx.sta =3D container_of(txq->sta, struct sta_info= , sta); > + tx.sdata =3D sta->sdata; > + } else { > + tx.sdata =3D vif_to_sdata(info->control.vif); > + } > + > + __skb_queue_tail(&tx.skbs, skb); > + > + if (invoke_tx_handlers_late(&tx)) > + goto begin; > + > + __skb_unlink(skb, &tx.skbs); > }