On 11 February 2015 at 09:57, Michal Kazior <michal.kazior@xxxxxxxxx> wrote: > On 10 February 2015 at 15:19, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: >> On Tue, 2015-02-10 at 11:33 +0100, Michal Kazior wrote: >> >>> + if (msdu->sk) { >>> + ewma_add(&ar->tx_delay_us, >>> + ktime_to_ns(ktime_sub(ktime_get(), skb_cb->stamp)) / >>> + NSEC_PER_USEC); >>> + >>> + ACCESS_ONCE(msdu->sk->sk_tx_completion_delay_cushion) = >>> + (ewma_read(&ar->tx_delay_us) * >>> + msdu->sk->sk_pacing_rate) >> 20; >>> + } >> >> To some extent, every wifi driver is going to have this problem. Perhaps >> we should do this in mac80211? > > Good point. I was actually thinking about it. I can try cooking a > patch unless you want to do it yourself :-) I've taken a look into this. The most obvious place to add the timestamp for each packet would be ieee80211_tx_info (i.e. the skb->cb[48]). The problem is it's very tight there. Even squeezing 2 bytes (allowing up to 64ms of tx completion delay which I'm worried won't be enough) will be troublesome. Some drivers already use every last byte of their allowance on 64bit archs (e.g. ar5523 uses entire 40 bytes of driver_data). I wonder if it's okay to bump skb->cb to 56 bytes to avoid the cascade of changes required to implement the tx completion delay accounting? Michał -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html