]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
wpi(4): do not allocate space for unused rings.
authoradrian <adrian@FreeBSD.org>
Sun, 11 Oct 2015 01:53:51 +0000 (01:53 +0000)
committeradrian <adrian@FreeBSD.org>
Sun, 11 Oct 2015 01:53:51 +0000 (01:53 +0000)
Tested:

* Tested with Intel 3945BG, STA mode

Submitted by: <s3erios@gmail.com>
Differential Revision: https://reviews.freebsd.org/D3765

sys/dev/wpi/if_wpi.c
sys/dev/wpi/if_wpivar.h

index f4bcc017249ec1f82c9eef5f0573add8b6007d79..44077f06a5765cede68f717ea78bbb6d371cd1cf 100644 (file)
@@ -425,7 +425,7 @@ wpi_attach(device_t dev)
        }
 
        /* Allocate TX rings - 4 for QoS purposes, 1 for commands. */
-       for (i = 0; i < WPI_NTXQUEUES; i++) {
+       for (i = 0; i < WPI_DRV_NTXQUEUES; i++) {
                if ((error = wpi_alloc_tx_ring(sc, &sc->txq[i], i)) != 0) {
                        device_printf(dev,
                            "could not allocate TX ring %d, error %d\n", i,
@@ -713,7 +713,7 @@ wpi_detach(device_t dev)
 
        if (sc->txq[0].data_dmat) {
                /* Free DMA resources. */
-               for (qid = 0; qid < WPI_NTXQUEUES; qid++)
+               for (qid = 0; qid < WPI_DRV_NTXQUEUES; qid++)
                        wpi_free_tx_ring(sc, &sc->txq[qid]);
 
                wpi_free_rx_ring(sc);
@@ -1186,16 +1186,6 @@ wpi_alloc_tx_ring(struct wpi_softc *sc, struct wpi_tx_ring *ring, uint8_t qid)
        bus_dmamap_sync(sc->shared_dma.tag, sc->shared_dma.map,
            BUS_DMASYNC_PREWRITE);
 
-       /*
-        * We only use rings 0 through 4 (4 EDCA + cmd) so there is no need
-        * to allocate commands space for other rings.
-        * XXX Do we really need to allocate descriptors for other rings?
-        */
-       if (qid > WPI_CMD_QUEUE_NUM) {
-               DPRINTF(sc, WPI_DEBUG_TRACE, TRACE_STR_END, __func__);
-               return 0;
-       }
-
        size = WPI_TX_RING_COUNT * sizeof (struct wpi_tx_cmd);
        error = wpi_dma_contig_alloc(sc, &ring->cmd_dma, (void **)&ring->cmd,
            size, 4);
@@ -5326,7 +5316,7 @@ wpi_hw_stop(struct wpi_softc *sc)
        wpi_reset_rx_ring(sc);
 
        /* Reset all TX rings. */
-       for (qid = 0; qid < WPI_NTXQUEUES; qid++)
+       for (qid = 0; qid < WPI_DRV_NTXQUEUES; qid++)
                wpi_reset_tx_ring(sc, &sc->txq[qid]);
 
        if (wpi_nic_lock(sc) == 0) {
index 3969b09453c6f554603ca4fe3aa8cd49fe2c129c..fb566b50945b082accd4fc29bc2ebe261748f4c3 100644 (file)
@@ -176,7 +176,7 @@ struct wpi_softc {
        struct wpi_dma_info     shared_dma;
        struct wpi_shared       *shared;
 
-       struct wpi_tx_ring      txq[WPI_NTXQUEUES];
+       struct wpi_tx_ring      txq[WPI_DRV_NTXQUEUES];
        struct mtx              txq_mtx;
        struct mtx              txq_state_mtx;