-
-#if defined(BCMPCIE) && defined(DHD_USE_STATIC_FLOWRING)
-void*
-osl_dma_alloc_consistent_static(osl_t *osh, uint size, uint16 align_bits,
- uint *alloced, dmaaddr_t *pap, uint16 idx)
-{
- void *va = NULL;
- uint16 align = (1 << align_bits);
- uint16 flow_id = RINGID_TO_FLOWID(idx);
- unsigned long flags;
-
- ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
-
- if (!ISALIGNED(DMA_CONSISTENT_ALIGN, align))
- size += align;
-
- if ((flow_id < 0) || (flow_id >= STATIC_BUF_FLOWRING_NUM)) {
- printk("%s: flow_id %d is wrong\n", __FUNCTION__, flow_id);
- return osl_dma_alloc_consistent(osh, size, align_bits,
- alloced, pap);
- }
-
- if (!bcm_static_flowring) {
- printk("%s: bcm_static_flowring is not initialized\n",
- __FUNCTION__);
- return osl_dma_alloc_consistent(osh, size, align_bits,
- alloced, pap);
- }
-
- if (size > STATIC_BUF_FLOWRING_SIZE) {
- printk("%s: attempt to allocate huge packet, size=%d\n",
- __FUNCTION__, size);
- return osl_dma_alloc_consistent(osh, size, align_bits,
- alloced, pap);
- }
-
- *alloced = size;
-
- spin_lock_irqsave(&bcm_static_flowring->flowring_lock, flags);
- if (bcm_static_flowring->buf_use[flow_id]) {
- printk("%s: flowring %d is already alloced\n",
- __FUNCTION__, flow_id);
- spin_unlock_irqrestore(&bcm_static_flowring->flowring_lock, flags);
- return NULL;
- }
-
- va = bcm_static_flowring->buf_ptr[flow_id];
- if (va) {
- *pap = (ulong)__virt_to_phys((ulong)va);
- bcm_static_flowring->buf_use[flow_id] = 1;
- }
- spin_unlock_irqrestore(&bcm_static_flowring->flowring_lock, flags);
-
- return va;
-}
-
-void
-osl_dma_free_consistent_static(osl_t *osh, void *va, uint size,
- dmaaddr_t pa, uint16 idx)
-{
- uint16 flow_id = RINGID_TO_FLOWID(idx);
- unsigned long flags;
-
- ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));
-
- if ((flow_id < 0) || (flow_id >= STATIC_BUF_FLOWRING_NUM)) {
- printk("%s: flow_id %d is wrong\n", __FUNCTION__, flow_id);
- return osl_dma_free_consistent(osh, va, size, pa);
- }
-
- if (!bcm_static_flowring) {
- printk("%s: bcm_static_flowring is not initialized\n",
- __FUNCTION__);
- return osl_dma_free_consistent(osh, va, size, pa);
- }
-
- spin_lock_irqsave(&bcm_static_flowring->flowring_lock, flags);
- if (bcm_static_flowring->buf_use[flow_id]) {
- bcm_static_flowring->buf_use[flow_id] = 0;
- } else {
- printk("%s: flowring %d is already freed\n",
- __FUNCTION__, flow_id);
- }
- spin_unlock_irqrestore(&bcm_static_flowring->flowring_lock, flags);
-}
-#endif /* BCMPCIE && DHD_USE_STATIC_FLOWRING */