Message ID | 20161114084536.GB12372@redhat.com (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Kalle Valo |
Headers | show |
Hi Stainslaw, On Mon, Nov 14, 2016 at 7:45 PM, Stanislaw Gruszka <sgruszka@redhat.com> wrote: > On Sat, Nov 05, 2016 at 01:56:58PM +0100, Mathias Kresin wrote: >> 02.11.2016 15:11, Stanislaw Gruszka: >> > >> >- sta_priv = sta_to_rt2x00_sta(sta); >> >+ txdesc->u.ht.mpdu_density = sta->ht_cap.ampdu_density; >> > txdesc->u.ht.wcid = sta_priv->wcid; >> >+ >> >+ if (!(tx_info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE)) { >> >+ ba_size = IEEE80211_MIN_AMPDU_BUF; >> >+ ba_size <<= sta->ht_cap.ampdu_factor; >> >+ ba_size = min_t(int, 63, ba_size - 1); >> >+ } >> > } >> > >> > /* >> >@@ -345,7 +350,7 @@ static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev, >> > return; >> > } >> > >> >- txdesc->u.ht.ba_size = 7; /* FIXME: What value is needed? */ >> >+ txdesc->u.ht.ba_size = ba_size; >> > >> > /* >> > * Only one STBC stream is supported for now. >> > >> >> Having this patch applied, the throughput on a vgv7510kw22 (RT3062F) >> in AP mode using LEDE head is decreased by somewhat around 10 >> Mbits/sec. I'm using iperf3 for throughput tests and having this >> patch reverted the throughout is back to 80 Mbits/sec. >> >> When bringing down the wifi interface the following messages are >> logged with the patch applied: >> >> [ 281.738373] ieee80211 phy0: rt2x00queue_flush_queue: Warning - >> Queue 2 failed to flush >> [ 281.906380] ieee80211 phy0: rt2x00queue_flush_queue: Warning - >> Queue 2 failed to flush > > Could you check below patch and see if it helps? If it does not, > could you printk sta->ht_cap.ampdu_density and ba_size values > and provide them here. > > Thanks > Stanislaw > > diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c > index 2515702..72c7948 100644 > --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c > +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c > @@ -4707,7 +4707,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) > rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070E)) > rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 2); > else > - rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 1); > + rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 3; You're missing a closing parenthesis, so it isn't going to work unless it's added back in. > rt2x00_set_field32(®, MAX_LEN_CFG_MIN_PSDU, 0); > rt2x00_set_field32(®, MAX_LEN_CFG_MIN_MPDU, 0); > rt2800_register_write(rt2x00dev, MAX_LEN_CFG, reg); Thanks,
Hi On Mon, Nov 14, 2016 at 08:41:57PM +1100, Julian Calaby wrote: > > - rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 1); > > + rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 3; > > You're missing a closing parenthesis, so it isn't going to work unless > it's added back in. Thanks for the notice, hopefully Mathias can fix that. Stanislaw
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c index 2515702..72c7948 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c @@ -4707,7 +4707,7 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070E)) rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 2); else - rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 1); + rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 3; rt2x00_set_field32(®, MAX_LEN_CFG_MIN_PSDU, 0); rt2x00_set_field32(®, MAX_LEN_CFG_MIN_MPDU, 0); rt2800_register_write(rt2x00dev, MAX_LEN_CFG, reg);