Lines Matching defs:chunk
278 struct mvxpbm_chunk *chunk;
280 /* initialize chunk */
282 chunk = (struct mvxpbm_chunk *)ptr;
283 chunk->m = NULL;
284 chunk->sc = sc;
285 chunk->off = (ptr - sc->sc_buf);
286 chunk->pa = (paddr_t)(sc->sc_buf_pa + chunk->off);
287 chunk->buf_off = (ptr_data - sc->sc_buf);
288 chunk->buf_pa = (paddr_t)(sc->sc_buf_pa + chunk->buf_off);
289 chunk->buf_va = (vaddr_t)(sc->sc_buf + chunk->buf_off);
290 chunk->buf_size = sc->sc_chunk_size;
293 LIST_INSERT_HEAD(&sc->sc_free, chunk, link);
294 mvxpbm_dmamap_sync(chunk, BM_SYNC_ALL, BUS_DMASYNC_PREREAD);
297 DPRINTSC(sc, 9, "new chunk %p\n", (void *)chunk->buf_va);
318 struct mvxpbm_chunk *chunk = (struct mvxpbm_chunk *)arg;
326 chunk->m = NULL;
330 return mvxpbm_free_chunk(chunk);
365 /* allocate new memory chunk */
369 struct mvxpbm_chunk *chunk;
373 chunk = LIST_FIRST(&sc->sc_free);
374 if (chunk == NULL) {
379 LIST_REMOVE(chunk, link);
380 LIST_INSERT_HEAD(&sc->sc_inuse, chunk, link);
383 return chunk;
386 /* free memory chunk */
388 mvxpbm_free_chunk(struct mvxpbm_chunk *chunk)
390 struct mvxpbm_softc *sc = chunk->sc;
392 KASSERT(chunk->m == NULL);
393 DPRINTFN(3, "bm chunk free\n");
397 LIST_REMOVE(chunk, link);
398 LIST_INSERT_HEAD(&sc->sc_free, chunk, link);
405 mvxpbm_init_mbuf_hdr(struct mvxpbm_chunk *chunk)
407 struct mvxpbm_softc *sc = chunk->sc;
409 KASSERT(chunk->m == NULL);
412 MGETHDR(chunk->m, M_DONTWAIT, MT_DATA);
413 if (chunk->m == NULL) {
417 MEXTADD(chunk->m, chunk->buf_va, chunk->buf_size, 0,
418 mvxpbm_free_mbuf, chunk);
419 chunk->m->m_flags |= M_EXT_RW;
420 chunk->m->m_len = chunk->m->m_pkthdr.len = chunk->buf_size;
422 m_adj(chunk->m, sc->sc_chunk_packet_offset);
429 mvxpbm_dmamap_sync(struct mvxpbm_chunk *chunk, size_t size, int ops)
431 struct mvxpbm_softc *sc = chunk->sc;
433 KASSERT(size <= chunk->buf_size);
435 size = chunk->buf_size;
437 bus_dmamap_sync(sc->sc_dmat, sc->sc_buf_map, chunk->buf_off, size, ops);