summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Bergamini <damien@cvs.openbsd.org>2008-11-08 12:21:37 +0000
committerDamien Bergamini <damien@cvs.openbsd.org>2008-11-08 12:21:37 +0000
commit09cbf9d3a9c1d6e9a0bfa2da484d1cdd09a8cbc3 (patch)
treeaa8938aef01f62109b71933b0ed643bb7c30e2f1
parentd90109f38b6609376dd40bf88d7a805169e97a5a (diff)
do not allocate cmd memory for rings 5 and 6 (HCCA) which are unused.
-rw-r--r--sys/dev/pci/if_wpi.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/dev/pci/if_wpi.c b/sys/dev/pci/if_wpi.c
index 360b382a721..7a4cccddacd 100644
--- a/sys/dev/pci/if_wpi.c
+++ b/sys/dev/pci/if_wpi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_wpi.c,v 1.66 2008/11/08 11:02:09 damien Exp $ */
+/* $OpenBSD: if_wpi.c,v 1.67 2008/11/08 12:21:36 damien Exp $ */
/*-
* Copyright (c) 2006-2008
@@ -785,6 +785,14 @@ wpi_alloc_tx_ring(struct wpi_softc *sc, struct wpi_tx_ring *ring, int qid)
/* Update shared area with ring's physical address. */
sc->shared->txbase[qid] = htole32(ring->desc_dma.paddr);
+ /*
+ * 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 > 4)
+ return 0;
+
size = WPI_TX_RING_COUNT * sizeof (struct wpi_tx_cmd);
error = wpi_dma_contig_alloc(sc->sc_dmat, &ring->cmd_dma,
(void **)&ring->cmd, size, 4, BUS_DMA_NOWAIT);