• Rajkumar Manoharan's avatar
    ath10k: improve wake_tx_queue ops performance · 83e164b7
    Rajkumar Manoharan authored
    txqs_lock is interfering with wake_tx_queue submitting more frames.
    so queues don't get filled in and don't keep firmware/hardware busy
    enough. This change helps to reduce the txqs_lock contention and
    wake_tx_queue() blockage to being possible in txrx_unref().
    
    To reduce turn around time of wake_tx_queue ops and to maintain fairness
    among all txqs, the callback is updated to push first txq alone from
    pending list for every wake_tx_queue call. Remaining txqs will be
    processed later upon tx completion.
    
    Below improvements are observed in push-only mode and validated on
    IPQ4019 platform. With this change, in AP mode ~10Mbps increase is
    observed in downlink (AP -> STA) traffic and approx. 5-10% of CPU
    usage is reduced.
    
    Major improvement is observed in 1-hop Mesh mode topology in 11ACVHT80.
    Compared to Infra mode, CPU overhead is higher in Mesh mode due to path
    lookup and no fast-xmit support. So reducing spin lock contention is
    helping in Mesh.
    
                 TOT       +change
               --------    --------
    TCP DL     545 Mbps    595 Mbps
    TCP UL     555 Mbps    585 Mbps
    Signed-off-by: default avatarRajkumar Manoharan <rmanohar@qti.qualcomm.com>
    Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
    83e164b7
mac.c 202 KB