mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-15 10:17:20 +00:00
iwm: Avoid calling iwm_start() each time a descriptor is reclaimed.
Only perform the call when a qfull bit transitions. While here, avoid assignments in declarations in iwm_mvm_rx_tx_cmd(). MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
3cc50d22fd
commit
b41c219912
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=354496
@ -3337,14 +3337,21 @@ iwm_mvm_rx_tx_cmd_single(struct iwm_softc *sc, struct iwm_rx_packet *pkt,
|
||||
static void
|
||||
iwm_mvm_rx_tx_cmd(struct iwm_softc *sc, struct iwm_rx_packet *pkt)
|
||||
{
|
||||
struct iwm_cmd_header *cmd_hdr = &pkt->hdr;
|
||||
int idx = cmd_hdr->idx;
|
||||
int qid = cmd_hdr->qid;
|
||||
struct iwm_tx_ring *ring = &sc->txq[qid];
|
||||
struct iwm_tx_data *txd = &ring->data[idx];
|
||||
struct iwm_node *in = txd->in;
|
||||
struct mbuf *m = txd->m;
|
||||
int status;
|
||||
struct iwm_cmd_header *cmd_hdr;
|
||||
struct iwm_tx_ring *ring;
|
||||
struct iwm_tx_data *txd;
|
||||
struct iwm_node *in;
|
||||
struct mbuf *m;
|
||||
int idx, qid, qmsk, status;
|
||||
|
||||
cmd_hdr = &pkt->hdr;
|
||||
idx = cmd_hdr->idx;
|
||||
qid = cmd_hdr->qid;
|
||||
|
||||
ring = &sc->txq[qid];
|
||||
txd = &ring->data[idx];
|
||||
in = txd->in;
|
||||
m = txd->m;
|
||||
|
||||
KASSERT(txd->done == 0, ("txd not done"));
|
||||
KASSERT(txd->in != NULL, ("txd without node"));
|
||||
@ -3366,11 +3373,11 @@ iwm_mvm_rx_tx_cmd(struct iwm_softc *sc, struct iwm_rx_packet *pkt)
|
||||
|
||||
ieee80211_tx_complete(&in->in_ni, m, status);
|
||||
|
||||
if (--ring->queued < IWM_TX_RING_LOMARK) {
|
||||
sc->qfullmsk &= ~(1 << ring->qid);
|
||||
if (sc->qfullmsk == 0) {
|
||||
qmsk = 1 << qid;
|
||||
if (--ring->queued < IWM_TX_RING_LOMARK && (sc->qfullmsk & qmsk) != 0) {
|
||||
sc->qfullmsk &= ~qmsk;
|
||||
if (sc->qfullmsk == 0)
|
||||
iwm_start(sc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user