in a congested
environment without negative impact on the throughput.
[0]
https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/1703105/7
Kan Yan (2):
mac80211: Implement Airtime-based Queue Limit (AQL)
ath10k: Enable Airtime-based Queue Limit (AQL)
drivers/net
er to form 1-2 large aggregations to keep hardware fully utilized
and keep the rest of frames in mac80211 layer to be controlled by the CoDel
algorithm.
Signed-off-by: Kan Yan
---
include/net/cfg80211.h | 7
include/net/mac80211.h | 43 +
net/mac80211/debugfs.c
Calculate the estimated airtime pending in the txqs and apply AQL to
prevent excessive amounts of packets being queued in the firmware queue.
Signed-off-by: Kan Yan
---
drivers/net/wireless/ath/ath10k/htt_rx.c | 1 +
drivers/net/wireless/ath/ath10k/mac.c| 8 +---
drivers/net/wireless
in a congested
environment without negative impact on the throughput.
[0]
https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/1703105/7
Kan Yan (2):
mac80211: Implement Airtime-based Queue Limit (AQL)
ath10k: Enable Airtime-based Queue Limit (AQL)
drivers/net
> > +/* The per TXQ firmware queue limit in airtime */
>
> I was pretty sure I mentioned it *somewhere*, but I think just calling
> this "device" or something would be more general. If you don't mind, I
> can edit that also (unless you have other reasons to resubmit?)
done. I will upload a new ver
Calculate the estimated airtime pending in the txqs and apply AQL to
prevent excessive amounts of packets being queued in the firmware queue.
Signed-off-by: Kan Yan
---
drivers/net/wireless/ath/ath10k/htt_rx.c | 1 +
drivers/net/wireless/ath/ath10k/mac.c| 6 --
drivers/net/wireless
er to form 1-2 large aggregations to keep hardware fully utilized
and keep the rest of frames in mac80211 layer to be controlled by the CoDel
algorithm.
Signed-off-by: Kan Yan
---
include/net/cfg80211.h | 7
include/net/mac80211.h | 47 +++
net/mac80211/debu
2:18 AM Kalle Valo wrote:
>
> Kalle Valo writes:
>
> > Kan Yan writes:
> >
> >> This patch series implements Airtime-based Queue Limit (AQL) in the
> >> mac80211 and Ath10k driver. It is based on an earlier version from
> >> the ChromiumOS tree
Hi Toke,
Thanks for getting this done! I will give it a try in the next few
days. A few comments:
> The estimated airtime for each skb is stored in the tx_info, so we can
> subtract the same amount from the running total when the skb is freed or
> recycled.
Looks like ath10k driver zero out the
The "tx_time_est" field, shared by control and status, is not able to
survive until the skb returns to the mac80211 layer in some
architectures. The same space is defined as driver_data and some
wireless drivers use it for other purposes, as the cb in the sk_buff
is free to be used by any layer.
I
>
> > Sebastian Moeller writes:
> >
> >>> On Oct 17, 2019, at 11:44, Toke Høiland-Jørgensen wrote:
> >>>
> >>> Kan Yan writes:
> >>>
> >>>> Hi Toke,
> >>>>
> >>>> Thanks for getting this
> + if (local->airtime_flags & AIRTIME_USE_AQL) {
> + airtime = ieee80211_calc_expected_tx_airtime(hw, vif,
> txq->sta,
> +skb->len);
> + if (airtime) {
> + /* We only have 10 bits i
> + if (ieee80211_is_data_qos(hdr->frame_control)) {
> + qc = ieee80211_get_qos_ctl(hdr);
> + tid = qc[0] & 0xf;
> + ac = ieee80211_ac_from_tid(tid);
> + } else {
> + ac = IEEE80211_A
r().
> Hmm, I guess we could just get the ac using skb_get_queue_mapping().
> I'll send an update with this fixed for you to try :)
Thanks for the quick update. It is getting much better, but
unfortunately the pending airtime accounting sometimes is still not
correct and cause txq s
he symptom I see with
previous patch is the interface's pending airtime count looks fine,
but the station's airtime get wrong, either due to airtime is credited
to the wrong station or wrong AC.
On Wed, Oct 23, 2019 at 2:52 AM Toke Høiland-Jørgensen wrote:
>
> Toke Høiland-Jørg
rame_id, and use units
> of 4us for the value stored in it.
> - Move the addition of the Ethernet header size into
> ieee80211_calc_expected_tx_airtime()
> v2:
> - Integrate Kan's approach to airtime throttling.
> - Hopefully fix the cb struct alignment on big-endian architectu
It is most likely just insufficient locking. active_txq_lock is per
AC, can't protect local->aql_total_pending_airtime against racing
conditions:
void ieee80211_sta_update_pending_airtime(...)
{
spin_lock_bh(&local->active_txq_lock[ac]);
...
local->aql_total_pending_airtime
> +static inline u16
> +ieee80211_info_set_tx_time_est(struct ieee80211_tx_info *info, u16
> tx_time_est)
> +{
> + /* We only have 10 bits in tx_time_est, so store airtime
> +* in increments of 4us and clamp the maximum to 2**12-1
> +*/
> + info->tx_time_est = min_t(u16
the limits
> are sufficiently conservative that it would not result in any problems :)
Sounds good. The current default limits are reasonably conservative
and are tunable via debugfs.
I will give the v10 version of this patch serial a quick test and
hopefully we can wrap it up soon.
-Kan
On
> + duration = airtime_mcs_groups[group].duration[idx];
> + duration <<= airtime_mcs_groups[group].shift;
> + duration *= len;
> + duration /= AVG_PKT_SIZE;
> + duration /= 1024;
>
> + duration += 36 + (streams << 2);
> +
> + return duration;
> +}
> +EXPORT
a->airtime[txqi->txq.ac].deficit +=
> sta->airtime_weight;
> +
> + if (deficit < 0 || !aql_check) {
> list_move_tail(&txqi->schedule_order,
>&loca
> Johannes had an interesting idea to use trace_ath10k_log_dbg_enabled().
> Could you investigate if that would work? That way we might get the
> performance improvement even when is enabled CONFIG_ATH10K_TRACING (but
> actual trace point is disabled, of course).
That's a good idea. This patch was
Hi Toke,
This patch looks good to me. Great job on getting the airtime fairness
scheduling framework done!
On Tue, Jan 22, 2019 at 6:21 AM Toke Høiland-Jørgensen wrote:
>
> From: Kan Yan
>
> Transmit airtime will be estimated from last tx rate used.
> Firmware report tx rat
23 matches
Mail list logo