Lines Matching defs:tdb
1157 rtw_txdesc_blk_init_all(struct rtw_txdesc_blk *tdb)
1185 tdb[pri].tdb_nfree = nfree[pri];
1186 tdb[pri].tdb_next = 0;
1239 rtw_txdescs_sync(struct rtw_txdesc_blk *tdb, u_int desc0, u_int nsync, int ops)
1242 if (desc0 + nsync > tdb->tdb_ndesc) {
1243 bus_dmamap_sync(tdb->tdb_dmat, tdb->tdb_dmamap,
1244 tdb->tdb_ofs + sizeof(struct rtw_txdesc) * desc0,
1245 sizeof(struct rtw_txdesc) * (tdb->tdb_ndesc - desc0),
1247 nsync -= (tdb->tdb_ndesc - desc0);
1252 bus_dmamap_sync(tdb->tdb_dmat, tdb->tdb_dmamap,
1253 tdb->tdb_ofs + sizeof(struct rtw_txdesc) * desc0,
1258 rtw_txdescs_sync_all(struct rtw_txdesc_blk *tdb)
1262 rtw_txdescs_sync(&tdb[pri], 0, tdb[pri].tdb_ndesc,
1706 rtw_collect_txpkt(struct rtw_softc *sc, struct rtw_txdesc_blk *tdb,
1717 tdb->tdb_nfree += ndesc;
1719 tdn = &tdb->tdb_desc[ts->ts_last];
1751 struct rtw_txdesc_blk *tdb;
1755 tdb = &sc->sc_txdesc_blk[pri];
1756 if (!SIMPLEQ_EMPTY(&tsb->tsb_freeq) && tdb->tdb_nfree > 0)
1768 struct rtw_txdesc_blk *tdb, int force)
1781 if (ts->ts_first == rtw_txring_next(&sc->sc_regs, tdb))
1786 ndesc += tdb->tdb_ndesc;
1790 rtw_txdescs_sync(tdb, ts->ts_first, ndesc,
1799 next = RTW_NEXT_IDX(tdb, next)) {
1801 printf(" %" PRIx32 "/%" PRIx32 "/%" PRIx32 "/%" PRIu32 "/%" PRIx32, le32toh(tdb->tdb_desc[next].td_stat), le32toh(tdb->tdb_desc[next].td_ctl1), le32toh(tdb->tdb_desc[next].td_buf), le32toh(tdb->tdb_desc[next].td_len), le32toh(tdb->tdb_desc[next].td_next));
1803 tdb->tdb_desc[next].td_stat &=
1808 rtw_txdescs_sync(tdb, ts->ts_first, ndesc,
1811 next = RTW_NEXT_IDX(tdb, next);
1813 le32toh(tdb->tdb_desc[next].td_stat),
1814 rtw_txring_next(&sc->sc_regs, tdb));
1816 } else if ((tdb->tdb_desc[ts->ts_last].td_stat &
1818 rtw_txdescs_sync(tdb, ts->ts_last, 1,
1825 rtw_collect_txpkt(sc, tdb, ts, ndesc);
1843 struct rtw_txdesc_blk *tdb;
1850 tdb = &sc->sc_txdesc_blk[pri];
1851 rtw_collect_txring(sc, tsb, tdb, 0);
1866 struct rtw_txdesc_blk *tdb = &sc->sc_txdesc_blk[RTW_TXPRIBCN];
1877 next = rtw_txring_next(&sc->sc_regs, tdb);
1882 (next == tdb->tdb_next) ? "" : "un", isr, next,
1883 tdb->tdb_next, (uint64_t)tsfth << 32 | tsftl));
1890 rtw_collect_txring(sc, tsb, tdb, 1);
1929 struct rtw_txdesc_blk *tdb;
1938 tdb = &sc->sc_txdesc_blk[pri];
1940 tdb->tdb_ndesc, tdb->tdb_nfree);
1941 for (desc = 0; desc < tdb->tdb_ndesc; desc++)
1942 rtw_print_txdesc(sc, ".", NULL, tdb, desc);
1963 struct rtw_txdesc_blk *tdb;
1975 tdb = &sc->sc_txdesc_blk[pri];
1976 RTW_WRITE(regs, tdb->tdb_basereg, tdb->tdb_base);
1978 ("%s: reg[tdb->tdb_basereg] <- %" PRIxPTR "\n", __func__,
1979 (uintptr_t)tdb->tdb_base));
2020 rtw_txdesc_blk_init(struct rtw_txdesc_blk *tdb)
2024 (void)memset(tdb->tdb_desc, 0,
2025 sizeof(tdb->tdb_desc[0]) * tdb->tdb_ndesc);
2026 for (i = 0; i < tdb->tdb_ndesc; i++)
2027 tdb->tdb_desc[i].td_next = htole32(RTW_NEXT_DESC(tdb, i));
2031 rtw_txring_next(struct rtw_regs *regs, struct rtw_txdesc_blk *tdb)
2033 return (le32toh(RTW_READ(regs, tdb->tdb_basereg)) - tdb->tdb_base) /
2043 struct rtw_txdesc_blk *tdb;
2048 tdb = &sc->sc_txdesc_blk[pri];
2049 next = rtw_txring_next(regs, tdb);
2050 if (tdb->tdb_next == next)
2052 for (i = 0; next != tdb->tdb_next;
2053 next = RTW_NEXT_IDX(tdb, next), i++) {
2054 if ((tdb->tdb_desc[next].td_stat & htole32(RTW_TXSTAT_OWN)) == 0)
2058 ln, pri, tdb->tdb_next, next, i, tdb->tdb_next == next ? "okay" : "BAD");
2059 if (tdb->tdb_next == next)
2061 tdb->tdb_next = MIN(next, tdb->tdb_ndesc - 1);
2071 struct rtw_txdesc_blk *tdb;
2075 tdb = &sc->sc_txdesc_blk[pri];
2076 rtw_collect_txring(sc, tsb, tdb, 1);
3079 struct rtw_txdesc_blk *tdb;
3084 tdb = &sc->sc_txdesc_blk[pri];
3086 if (SIMPLEQ_EMPTY(&tsb->tsb_freeq) || tdb->tdb_nfree == 0) {
3094 *tdbp = tdb;
3290 struct rtw_txsoft *ts, struct rtw_txdesc_blk *tdb, int desc)
3292 struct rtw_txdesc *td = &tdb->tdb_desc[desc];
3315 struct rtw_txdesc_blk *tdb = NULL; /* XXX: GCC */
3336 if (rtw_dequeue(ifp, &tsb, &tdb, &m0, &ni) == -1)
3355 tdb->tdb_nfree, sc->sc_dev);
3447 ts->ts_first = tdb->tdb_next;
3449 rtw_txdescs_sync(tdb, ts->ts_first, dmamap->dm_nsegs,
3452 KASSERT(ts->ts_first < tdb->tdb_ndesc);
3467 i++, desc = RTW_NEXT_IDX(tdb, desc)) {
3473 td = &tdb->tdb_desc[desc];
3478 td->td_next = htole32(RTW_NEXT_DESC(tdb, desc));
3483 rtw_print_txdesc(sc, "load", ts, tdb, desc);
3487 KASSERT(desc < tdb->tdb_ndesc);
3493 tdb->tdb_desc[ts->ts_last].td_ctl0 |= htole32(RTW_TXCTL0_LS);
3494 tdb->tdb_desc[ts->ts_first].td_ctl0 |=
3498 rtw_print_txdesc(sc, "FS on", ts, tdb, ts->ts_first);
3499 rtw_print_txdesc(sc, "LS on", ts, tdb, ts->ts_last);
3502 tdb->tdb_nfree -= dmamap->dm_nsegs;
3503 tdb->tdb_next = desc;
3505 rtw_txdescs_sync(tdb, ts->ts_first, dmamap->dm_nsegs,
3508 tdb->tdb_desc[ts->ts_first].td_ctl0 |=
3512 rtw_print_txdesc(sc, "OWN on", ts, tdb, ts->ts_first);
3515 rtw_txdescs_sync(tdb, ts->ts_first, 1,
3931 rtw_txdesc_blk_setup(struct rtw_txdesc_blk *tdb, struct rtw_txdesc *desc,
3934 tdb->tdb_ndesc = ndesc;
3935 tdb->tdb_desc = desc;
3936 tdb->tdb_physbase = physbase;
3937 tdb->tdb_ofs = ofs;
3939 (void)memset(tdb->tdb_desc, 0,
3940 sizeof(tdb->tdb_desc[0]) * tdb->tdb_ndesc);
3942 rtw_txdesc_blk_init(tdb);
3943 tdb->tdb_next = 0;