Home | History | Annotate | Download | only in gemini

Lines Matching defs:hqm

112 	gmac_hwqmem_t *hqm;
209 hqm = gmac_hwqmem_create(sc->sc_rxmaps, 32 /*SWFREEQ_DESCS*/, 1,
211 sc->sc_swfreeq = gmac_hwqueue_create(hqm, sc->sc_iot, sc->sc_ioh,
219 hqm = gmac_hwqmem_create(sc->sc_rxmaps, HWFREEQ_DESCS, 1,
221 sc->sc_hwfreeq = gmac_hwqueue_create(hqm, sc->sc_iot, sc->sc_ioh,
537 gmac_hwqmem_t * const hqm = hwq->hwq_hqm;
546 bus_dmamap_sync(hqm->hqm_dmat, map, 0, map->dm_mapsize,
548 bus_dmamap_unload(hqm->hqm_dmat, map);
550 gmac_mapcache_put(hqm->hqm_mc, map);
566 gmac_hwqmem_t * const hqm = hwq->hwq_hqm;
571 KASSERT(hqm->hqm_flags & HQM_PRODUCER);
590 if (hqm->hqm_flags & HQM_TX) {
591 bus_dmamap_sync(hqm->hqm_dmat, hqm->hqm_dmamap,
598 bus_dmamap_sync(hqm->hqm_dmat, hqm->hqm_dmamap,
606 bus_dmamap_sync(hqm->hqm_dmat, hqm->hqm_dmamap,
621 gmac_hwqmem_t * const hqm = hwq->hwq_hqm;
626 KASSERT(hqm->hqm_flags & HQM_PRODUCER);
638 bus_dmamap_sync(hqm->hqm_dmat, hqm->hqm_dmamap,
647 bus_dmamap_sync(hqm->hqm_dmat, hqm->hqm_dmamap,
655 bus_dmamap_sync(hqm->hqm_dmat, hqm->hqm_dmamap,
677 gmac_hwqmem_t * const hqm = hwq->hwq_hqm;
700 map = gmac_mapcache_get(hqm->hqm_mc);
708 gmac_mapcache_put(hqm->hqm_mc, map);
715 gmac_mapcache_put(hqm->hqm_mc, map);
718 error = bus_dmamap_load(hqm->hqm_dmat, map, m->m_data,
722 gmac_mapcache_put(hqm->hqm_mc, map);
729 bus_dmamap_sync(hqm->hqm_dmat, map, 0, map->dm_mapsize,
758 gmac_hwqmem_t * const hqm = hwq->hwq_hqm;
830 bus_dmamap_sync(hqm->hqm_dmat, map, 0, buflen, BUS_DMASYNC_POSTREAD);
831 bus_dmamap_unload(hqm->hqm_dmat, map);
833 gmac_mapcache_put(hqm->hqm_mc, map);
879 gmac_hwqmem_t * const hqm = hwq->hwq_hqm;
885 KASSERT((hqm->hqm_flags & HQM_PRODUCER) == 0);
899 bus_dmamap_sync(hqm->hqm_dmat, hqm->hqm_dmamap,
911 bus_dmamap_sync(hqm->hqm_dmat, hqm->hqm_dmamap,
939 gmac_hwqmem_destroy(gmac_hwqmem_t *hqm)
941 if (hqm->hqm_nsegs) {
942 if (hqm->hqm_base) {
943 if (hqm->hqm_dmamap) {
944 if (hqm->hqm_dmamap->dm_mapsize) {
945 bus_dmamap_unload(hqm->hqm_dmat,
946 hqm->hqm_dmamap);
948 bus_dmamap_destroy(hqm->hqm_dmat,
949 hqm->hqm_dmamap);
951 bus_dmamem_unmap(hqm->hqm_dmat, hqm->hqm_base,
952 hqm->hqm_memsize);
954 bus_dmamem_free(hqm->hqm_dmat, hqm->hqm_segs, hqm->hqm_nsegs);
957 kmem_free(hqm, sizeof(*hqm));
963 gmac_hwqmem_t *hqm;
969 hqm = kmem_zalloc(sizeof(*hqm), KM_SLEEP);
970 hqm->hqm_memsize = nqueue * sizeof(gmac_desc_t [ndesc]);
971 hqm->hqm_mc = mc;
972 hqm->hqm_dmat = mc->mc_dmat;
973 hqm->hqm_ndesc = ndesc;
974 hqm->hqm_nqueue = nqueue;
975 hqm->hqm_flags = flags;
977 error = bus_dmamem_alloc(hqm->hqm_dmat, hqm->hqm_memsize, 0, 0,
978 hqm->hqm_segs, 1, &hqm->hqm_nsegs, BUS_DMA_WAITOK);
983 KASSERT(hqm->hqm_nsegs == 1);
984 error = bus_dmamem_map(hqm->hqm_dmat, hqm->hqm_segs, hqm->hqm_nsegs,
985 hqm->hqm_memsize, (void **)&hqm->hqm_base, BUS_DMA_WAITOK);
990 error = bus_dmamap_create(hqm->hqm_dmat, hqm->hqm_memsize,
991 hqm->hqm_nsegs, hqm->hqm_memsize, 0,
992 BUS_DMA_WAITOK|BUS_DMA_ALLOCNOW, &hqm->hqm_dmamap);
997 error = bus_dmamap_load(hqm->hqm_dmat, hqm->hqm_dmamap, hqm->hqm_base,
998 hqm->hqm_memsize, NULL,
1002 hqm->hqm_segs->ds_addr, hqm->hqm_segs->ds_len);
1008 memset(hqm->hqm_base, 0, hqm->hqm_memsize);
1010 bus_dmamap_sync(hqm->hqm_dmat, hqm->hqm_dmamap, 0,
1011 hqm->hqm_dmamap->dm_mapsize, BUS_DMASYNC_PREREAD);
1013 return hqm;
1016 gmac_hwqmem_destroy(hqm);
1023 gmac_hwqmem_t * const hqm = hwq->hwq_hqm;
1024 KASSERT(hqm->hqm_refs & hwq->hwq_ref);
1025 hqm->hqm_refs &= ~hwq->hwq_ref;
1033 bus_dmamap_unload(hqm->hqm_dmat, map);
1034 gmac_mapcache_put(hqm->hqm_mc, map);
1041 gmac_hwqueue_create(gmac_hwqmem_t *hqm,
1046 const size_t log2_memsize = ffs(hqm->hqm_ndesc) - 1;
1050 KASSERT(qno < hqm->hqm_nqueue);
1051 KASSERT((hqm->hqm_refs & (1 << qno)) == 0);
1054 hwq->hwq_size = hqm->hqm_ndesc;
1059 hwq->hwq_hqm = hqm;
1061 hqm->hqm_refs |= hwq->hwq_ref;
1062 hwq->hwq_qoff = hqm->hqm_ndesc * qno;
1063 hwq->hwq_base = hqm->hqm_base + hwq->hwq_qoff;
1067 hqm->hqm_dmamap->dm_segs[0].ds_addr | (log2_memsize));
1078 hqm->hqm_segs->ds_addr + sizeof(gmac_desc_t [hwq->hwq_qoff]),