Lines Matching refs:db

930 static void bdx_rxdb_destroy(struct rxdb *db)  in bdx_rxdb_destroy()  argument
932 vfree(db); in bdx_rxdb_destroy()
937 struct rxdb *db; in bdx_rxdb_create() local
940 db = vmalloc(sizeof(struct rxdb) in bdx_rxdb_create()
943 if (likely(db != NULL)) { in bdx_rxdb_create()
944 db->stack = (int *)(db + 1); in bdx_rxdb_create()
945 db->elems = (void *)(db->stack + nelem); in bdx_rxdb_create()
946 db->nelem = nelem; in bdx_rxdb_create()
947 db->top = nelem; in bdx_rxdb_create()
949 db->stack[i] = nelem - i - 1; /* to make first allocs in bdx_rxdb_create()
953 return db; in bdx_rxdb_create()
956 static inline int bdx_rxdb_alloc_elem(struct rxdb *db) in bdx_rxdb_alloc_elem() argument
958 BDX_ASSERT(db->top <= 0); in bdx_rxdb_alloc_elem()
959 return db->stack[--(db->top)]; in bdx_rxdb_alloc_elem()
962 static inline void *bdx_rxdb_addr_elem(struct rxdb *db, int n) in bdx_rxdb_addr_elem() argument
964 BDX_ASSERT((n < 0) || (n >= db->nelem)); in bdx_rxdb_addr_elem()
965 return db->elems + n; in bdx_rxdb_addr_elem()
968 static inline int bdx_rxdb_available(struct rxdb *db) in bdx_rxdb_available() argument
970 return db->top; in bdx_rxdb_available()
973 static inline void bdx_rxdb_free_elem(struct rxdb *db, int n) in bdx_rxdb_free_elem() argument
975 BDX_ASSERT((n >= db->nelem) || (n < 0)); in bdx_rxdb_free_elem()
976 db->stack[(db->top)++] = n; in bdx_rxdb_free_elem()
1034 struct rxdb *db = priv->rxdb; in bdx_rx_free_skbs() local
1038 DBG("total=%d free=%d busy=%d\n", db->nelem, bdx_rxdb_available(db), in bdx_rx_free_skbs()
1039 db->nelem - bdx_rxdb_available(db)); in bdx_rx_free_skbs()
1040 while (bdx_rxdb_available(db) > 0) { in bdx_rx_free_skbs()
1041 i = bdx_rxdb_alloc_elem(db); in bdx_rx_free_skbs()
1042 dm = bdx_rxdb_addr_elem(db, i); in bdx_rx_free_skbs()
1045 for (i = 0; i < db->nelem; i++) { in bdx_rx_free_skbs()
1046 dm = bdx_rxdb_addr_elem(db, i); in bdx_rx_free_skbs()
1099 struct rxdb *db = priv->rxdb; in bdx_rx_alloc_skbs() local
1102 dno = bdx_rxdb_available(db) - 1; in bdx_rx_alloc_skbs()
1110 idx = bdx_rxdb_alloc_elem(db); in bdx_rx_alloc_skbs()
1111 dm = bdx_rxdb_addr_elem(db, idx); in bdx_rx_alloc_skbs()
1161 struct rxdb *db; in bdx_recycle_skb() local
1168 db = priv->rxdb; in bdx_recycle_skb()
1169 DBG("db=%p f=%p\n", db, f); in bdx_recycle_skb()
1170 dm = bdx_rxdb_addr_elem(db, rxdd->va_lo); in bdx_recycle_skb()
1216 struct rxdb *db = NULL; in bdx_rx_receive() local
1268 db = priv->rxdb; in bdx_rx_receive()
1269 dm = bdx_rxdb_addr_elem(db, rxdd->va_lo); in bdx_rx_receive()
1286 bdx_rxdb_free_elem(db, rxdd->va_lo); in bdx_rx_receive()
1382 static inline int bdx_tx_db_size(struct txdb *db) in bdx_tx_db_size() argument
1384 int taken = db->wptr - db->rptr; in bdx_tx_db_size()
1386 taken = db->size + 1 + taken; /* (size + 1) equals memsz */ in bdx_tx_db_size()
1388 return db->size - taken; in bdx_tx_db_size()
1396 static inline void __bdx_tx_db_ptr_next(struct txdb *db, struct tx_map **pptr) in __bdx_tx_db_ptr_next() argument
1398 BDX_ASSERT(db == NULL || pptr == NULL); /* sanity */ in __bdx_tx_db_ptr_next()
1400 BDX_ASSERT(*pptr != db->rptr && /* expect either read */ in __bdx_tx_db_ptr_next()
1401 *pptr != db->wptr); /* or write pointer */ in __bdx_tx_db_ptr_next()
1403 BDX_ASSERT(*pptr < db->start || /* pointer has to be */ in __bdx_tx_db_ptr_next()
1404 *pptr >= db->end); /* in range */ in __bdx_tx_db_ptr_next()
1407 if (unlikely(*pptr == db->end)) in __bdx_tx_db_ptr_next()
1408 *pptr = db->start; in __bdx_tx_db_ptr_next()
1415 static inline void bdx_tx_db_inc_rptr(struct txdb *db) in bdx_tx_db_inc_rptr() argument
1417 BDX_ASSERT(db->rptr == db->wptr); /* can't read from empty db */ in bdx_tx_db_inc_rptr()
1418 __bdx_tx_db_ptr_next(db, &db->rptr); in bdx_tx_db_inc_rptr()
1425 static inline void bdx_tx_db_inc_wptr(struct txdb *db) in bdx_tx_db_inc_wptr() argument
1427 __bdx_tx_db_ptr_next(db, &db->wptr); in bdx_tx_db_inc_wptr()
1428 BDX_ASSERT(db->rptr == db->wptr); /* we can not get empty db as in bdx_tx_db_inc_wptr()
1501 struct txdb *db = &priv->txdb; in bdx_tx_map_skb() local
1506 db->wptr->len = skb_headlen(skb); in bdx_tx_map_skb()
1507 db->wptr->addr.dma = pci_map_single(priv->pdev, skb->data, in bdx_tx_map_skb()
1508 db->wptr->len, PCI_DMA_TODEVICE); in bdx_tx_map_skb()
1509 pbl->len = CPU_CHIP_SWAP32(db->wptr->len); in bdx_tx_map_skb()
1510 pbl->pa_lo = CPU_CHIP_SWAP32(L32_64(db->wptr->addr.dma)); in bdx_tx_map_skb()
1511 pbl->pa_hi = CPU_CHIP_SWAP32(H32_64(db->wptr->addr.dma)); in bdx_tx_map_skb()
1515 bdx_tx_db_inc_wptr(db); in bdx_tx_map_skb()
1521 db->wptr->len = skb_frag_size(frag); in bdx_tx_map_skb()
1522 db->wptr->addr.dma = skb_frag_dma_map(&priv->pdev->dev, frag, in bdx_tx_map_skb()
1527 pbl->len = CPU_CHIP_SWAP32(db->wptr->len); in bdx_tx_map_skb()
1528 pbl->pa_lo = CPU_CHIP_SWAP32(L32_64(db->wptr->addr.dma)); in bdx_tx_map_skb()
1529 pbl->pa_hi = CPU_CHIP_SWAP32(H32_64(db->wptr->addr.dma)); in bdx_tx_map_skb()
1530 bdx_tx_db_inc_wptr(db); in bdx_tx_map_skb()
1534 db->wptr->len = -txd_sizes[nr_frags].bytes; in bdx_tx_map_skb()
1535 db->wptr->addr.skb = skb; in bdx_tx_map_skb()
1536 bdx_tx_db_inc_wptr(db); in bdx_tx_map_skb()
1735 struct txdb *db = &priv->txdb; in bdx_tx_cleanup() local
1748 BDX_ASSERT(db->rptr->len == 0); in bdx_tx_cleanup()
1750 BDX_ASSERT(db->rptr->addr.dma == 0); in bdx_tx_cleanup()
1751 pci_unmap_page(priv->pdev, db->rptr->addr.dma, in bdx_tx_cleanup()
1752 db->rptr->len, PCI_DMA_TODEVICE); in bdx_tx_cleanup()
1753 bdx_tx_db_inc_rptr(db); in bdx_tx_cleanup()
1754 } while (db->rptr->len > 0); in bdx_tx_cleanup()
1755 tx_level -= db->rptr->len; /* '-' koz len is negative */ in bdx_tx_cleanup()
1758 dev_kfree_skb_irq(db->rptr->addr.skb); in bdx_tx_cleanup()
1759 bdx_tx_db_inc_rptr(db); in bdx_tx_cleanup()
1795 struct txdb *db = &priv->txdb; in bdx_tx_free_skbs() local
1798 while (db->rptr != db->wptr) { in bdx_tx_free_skbs()
1799 if (likely(db->rptr->len)) in bdx_tx_free_skbs()
1800 pci_unmap_page(priv->pdev, db->rptr->addr.dma, in bdx_tx_free_skbs()
1801 db->rptr->len, PCI_DMA_TODEVICE); in bdx_tx_free_skbs()
1803 dev_kfree_skb(db->rptr->addr.skb); in bdx_tx_free_skbs()
1804 bdx_tx_db_inc_rptr(db); in bdx_tx_free_skbs()