Lines Matching refs:ring

547 			    "could not allocate TX ring %d, error %d\n", i,
553 /* Allocate RX ring. */
555 device_printf(dev, "could not allocate RX ring, error %d\n",
1837 iwn_alloc_rx_ring(struct iwn_softc *sc, struct iwn_rx_ring *ring)
1842 ring->cur = 0;
1848 error = iwn_dma_contig_alloc(sc, &ring->desc_dma, (void **)&ring->desc,
1852 "%s: could not allocate RX ring DMA memory, error %d\n",
1858 error = iwn_dma_contig_alloc(sc, &ring->stat_dma, (void **)&ring->stat,
1870 IWN_RBUF_SIZE, 1, IWN_RBUF_SIZE, 0, NULL, NULL, &ring->data_dmat);
1882 struct iwn_rx_data *data = &ring->data[i];
1885 error = bus_dmamap_create(ring->data_dmat, 0, &data->map);
1902 error = bus_dmamap_load(ring->data_dmat, data->map,
1913 ring->desc[i] = htole32(paddr >> 8);
1916 bus_dmamap_sync(ring->desc_dma.tag, ring->desc_dma.map,
1923 fail: iwn_free_rx_ring(sc, ring);
1931 iwn_reset_rx_ring(struct iwn_softc *sc, struct iwn_rx_ring *ring)
1947 ring->cur = 0;
1952 iwn_free_rx_ring(struct iwn_softc *sc, struct iwn_rx_ring *ring)
1958 iwn_dma_contig_free(&ring->desc_dma);
1959 iwn_dma_contig_free(&ring->stat_dma);
1962 struct iwn_rx_data *data = &ring->data[i];
1965 bus_dmamap_sync(ring->data_dmat, data->map,
1967 bus_dmamap_unload(ring->data_dmat, data->map);
1972 bus_dmamap_destroy(ring->data_dmat, data->map);
1974 if (ring->data_dmat != NULL) {
1975 bus_dma_tag_destroy(ring->data_dmat);
1976 ring->data_dmat = NULL;
1981 iwn_alloc_tx_ring(struct iwn_softc *sc, struct iwn_tx_ring *ring, int qid)
1987 ring->qid = qid;
1988 ring->queued = 0;
1989 ring->cur = 0;
1995 error = iwn_dma_contig_alloc(sc, &ring->desc_dma, (void **)&ring->desc,
1999 "%s: could not allocate TX ring DMA memory, error %d\n",
2005 error = iwn_dma_contig_alloc(sc, &ring->cmd_dma, (void **)&ring->cmd,
2016 IWN_MAX_SCATTER - 1, MCLBYTES, 0, NULL, NULL, &ring->data_dmat);
2024 paddr = ring->cmd_dma.paddr;
2026 struct iwn_tx_data *data = &ring->data[i];
2032 error = bus_dmamap_create(ring->data_dmat, 0, &data->map);
2045 fail: iwn_free_tx_ring(sc, ring);
2051 iwn_reset_tx_ring(struct iwn_softc *sc, struct iwn_tx_ring *ring)
2058 struct iwn_tx_data *data = &ring->data[i];
2061 bus_dmamap_sync(ring->data_dmat, data->map,
2063 bus_dmamap_unload(ring->data_dmat, data->map);
2073 memset(ring->desc, 0, ring->desc_dma.size);
2074 bus_dmamap_sync(ring->desc_dma.tag, ring->desc_dma.map,
2076 sc->qfullmsk &= ~(1 << ring->qid);
2077 ring->queued = 0;
2078 ring->cur = 0;
2082 iwn_free_tx_ring(struct iwn_softc *sc, struct iwn_tx_ring *ring)
2088 iwn_dma_contig_free(&ring->desc_dma);
2089 iwn_dma_contig_free(&ring->cmd_dma);
2092 struct iwn_tx_data *data = &ring->data[i];
2095 bus_dmamap_sync(ring->data_dmat, data->map,
2097 bus_dmamap_unload(ring->data_dmat, data->map);
2101 bus_dmamap_destroy(ring->data_dmat, data->map);
2103 if (ring->data_dmat != NULL) {
2104 bus_dma_tag_destroy(ring->data_dmat);
2105 ring->data_dmat = NULL;
2962 struct iwn_rx_ring *ring = &sc->rxq;
2985 bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_POSTREAD);
3021 DPRINTF(sc, IWN_DEBUG_ANY, "%s: no mbuf to restock ring\n",
3026 bus_dmamap_unload(ring->data_dmat, data->map);
3028 error = bus_dmamap_load(ring->data_dmat, data->map, mtod(m1, void *),
3036 error = bus_dmamap_load(ring->data_dmat, data->map,
3043 ring->desc[ring->cur] = htole32(paddr >> 8);
3044 bus_dmamap_sync(ring->data_dmat, ring->desc_dma.map,
3053 ring->desc[ring->cur] = htole32(paddr >> 8);
3054 bus_dmamap_sync(ring->desc_dma.tag, ring->desc_dma.map,
3486 struct iwn_tx_ring *ring;
3490 ring = &sc->txq[qid];
3501 bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_POSTREAD);
3516 struct iwn_tx_ring *ring;
3520 ring = &sc->txq[qid];
3536 bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_POSTREAD);
3553 struct iwn_tx_ring *ring = &sc->txq[desc->qid & 0xf];
3554 struct iwn_tx_data *data = &ring->data[desc->idx];
3564 bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_POSTWRITE);
3565 bus_dmamap_unload(ring->data_dmat, data->map);
3602 if (--ring->queued < IWN_TX_RING_LOMARK)
3603 sc->qfullmsk &= ~(1 << ring->qid);
3615 struct iwn_tx_ring *ring;
3627 ring = &sc->txq[cmd_queue_num];
3628 data = &ring->data[desc->idx];
3632 bus_dmamap_sync(ring->data_dmat, data->map,
3634 bus_dmamap_unload(ring->data_dmat, data->map);
3638 wakeup(&ring->desc[desc->idx]);
3646 struct iwn_tx_ring *ring = &sc->txq[qid];
3753 for (lastidx = (seqno & 0xff); ring->read != lastidx;) {
3754 data = &ring->data[ring->read];
3757 bus_dmamap_sync(ring->data_dmat, data->map,
3759 bus_dmamap_unload(ring->data_dmat, data->map);
3768 ring->queued--;
3769 ring->read = (ring->read + 1) % IWN_TX_RING_COUNT;
3772 if (ring->queued == 0 && res != NULL) {
3782 if (ring->queued < IWN_TX_RING_LOMARK)
3783 sc->qfullmsk &= ~(1 << ring->qid);
3982 struct iwn_tx_ring *ring = &sc->txq[qid];
3983 IWN_WRITE(sc, IWN_HBUS_TARG_WRPTR, qid << 8 | ring->cur);
4058 struct iwn_tx_ring *ring = &sc->txq[i];
4059 printf(" tx ring %2d: qid=%-2d cur=%-3d queued=%-3d\n",
4060 i, ring->qid, ring->cur, ring->queued);
4062 printf(" rx ring: cur=%d\n", sc->rxq.cur);
4168 * Update TX scheduler ring when transmitting an 802.11 frame (4965AGN and
4343 struct iwn_tx_ring *ring;
4366 /* Select EDCA Access Category and TX ring for this frame. */
4384 * Queue this frame to the hardware ring that we've
4394 ring = &sc->txq[ac];
4395 if ((seqno % 256) != ring->cur) {
4397 "%s: m=%p: seqno (%d) (%d) != ring index (%d) !\n",
4402 ring->cur);
4406 ring = &sc->txq[ac];
4407 desc = &ring->desc[ring->cur];
4408 data = &ring->data[ring->cur];
4450 cmd = &ring->cmd[ring->cur];
4453 cmd->qid = ring->qid;
4454 cmd->idx = ring->cur;
4555 error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m, segs,
4572 error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m,
4587 ring->qid,
4588 ring->cur,
4612 bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_PREWRITE);
4613 bus_dmamap_sync(ring->data_dmat, ring->cmd_dma.map,
4615 bus_dmamap_sync(ring->desc_dma.tag, ring->desc_dma.map,
4619 if (ring->qid >= sc->firstaggqueue)
4620 ops->update_sched(sc, ring->qid, ring->cur, tx->id, totlen);
4622 /* Kick TX ring. */
4623 ring->cur = (ring->cur + 1) % IWN_TX_RING_COUNT;
4624 IWN_WRITE(sc, IWN_HBUS_TARG_WRPTR, ring->qid << 8 | ring->cur);
4626 /* Mark TX ring as full if we reach a certain threshold. */
4627 if (++ring->queued > IWN_TX_RING_HIMARK)
4628 sc->qfullmsk |= 1 << ring->qid;
4644 struct iwn_tx_ring *ring;
4664 ring = &sc->txq[ac];
4665 desc = &ring->desc[ring->cur];
4666 data = &ring->data[ring->cur];
4673 cmd = &ring->cmd[ring->cur];
4676 cmd->qid = ring->qid;
4677 cmd->idx = ring->cur;
4756 error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m, segs,
4773 error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m,
4786 __func__, ring->qid, ring->cur, m->m_pkthdr.len, nsegs);
4805 bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_PREWRITE);
4806 bus_dmamap_sync(ring->data_dmat, ring->cmd_dma.map,
4808 bus_dmamap_sync(ring->desc_dma.tag, ring->desc_dma.map,
4812 if (ring->qid >= sc->firstaggqueue)
4813 ops->update_sched(sc, ring->qid, ring->cur, tx->id, totlen);
4815 /* Kick TX ring. */
4816 ring->cur = (ring->cur + 1) % IWN_TX_RING_COUNT;
4817 IWN_WRITE(sc, IWN_HBUS_TARG_WRPTR, ring->qid << 8 | ring->cur);
4819 /* Mark TX ring as full if we reach a certain threshold. */
4820 if (++ring->queued > IWN_TX_RING_HIMARK)
4821 sc->qfullmsk |= 1 << ring->qid;
5077 struct iwn_tx_ring *ring;
5096 ring = &sc->txq[cmd_queue_num];
5097 desc = &ring->desc[ring->cur];
5098 data = &ring->data[ring->cur];
5109 error = bus_dmamap_load(ring->data_dmat, data->map, cmd,
5117 cmd = &ring->cmd[ring->cur];
5123 cmd->qid = ring->qid;
5124 cmd->idx = ring->cur;
5136 bus_dmamap_sync(ring->data_dmat, data->map,
5139 bus_dmamap_sync(ring->data_dmat, ring->cmd_dma.map,
5142 bus_dmamap_sync(ring->desc_dma.tag, ring->desc_dma.map,
5145 /* Kick command ring. */
5146 ring->cur = (ring->cur + 1) % IWN_TX_RING_COUNT;
5147 IWN_WRITE(sc, IWN_HBUS_TARG_WRPTR, ring->qid << 8 | ring->cur);
8509 /* Initialize RX ring. */
8514 /* Set physical address of RX ring (256-byte aligned). */
8542 /* Set physical address of TX ring (256-byte aligned). */
8629 /* Stop RX ring. */
8703 * ring index = 802.11 seqno % 256. If we don't do this (which