Lines Matching defs:dring

613 			     struct netsec_desc_ring *dring, u16 idx,
616 struct netsec_de *de = dring->vaddr + DESC_SZ * idx;
630 dring->desc[idx].dma_addr = desc->dma_addr;
631 dring->desc[idx].addr = desc->addr;
632 dring->desc[idx].len = desc->len;
637 struct netsec_desc_ring *dring = &priv->desc_ring[NETSEC_RING_TX];
640 int tail = dring->tail;
644 spin_lock(&dring->lock);
648 entry = dring->vaddr + DESC_SZ * tail;
657 desc = &dring->desc[tail];
692 dring->tail = (tail + 1) % DESC_NUM;
694 tail = dring->tail;
695 entry = dring->vaddr + DESC_SZ * tail;
702 spin_unlock(&dring->lock);
739 struct netsec_desc_ring *dring = &priv->desc_ring[NETSEC_RING_RX];
742 page = page_pool_dev_alloc_pages(dring->page_pool);
761 struct netsec_desc_ring *dring = &priv->desc_ring[NETSEC_RING_RX];
765 netsec_set_rx_de(priv, dring, idx, &dring->desc[idx]);
790 struct netsec_desc_ring *dring,
794 int idx = dring->head;
798 de = dring->vaddr + (DESC_SZ * idx);
816 dring->desc[idx] = *desc;
818 dring->desc[idx].skb = buf;
821 dring->desc[idx].xdpf = buf;
824 dring->head = (dring->head + 1) % DESC_NUM;
901 struct netsec_desc_ring *dring = &priv->desc_ring[NETSEC_RING_RX];
922 page_pool_put_page(dring->page_pool, page, sync, true);
932 page_pool_put_page(dring->page_pool, page, sync, true);
944 page_pool_put_page(dring->page_pool, page, sync, true);
953 struct netsec_desc_ring *dring = &priv->desc_ring[NETSEC_RING_RX];
963 xdp_init_buff(&xdp, PAGE_SIZE, &dring->xdp_rxq);
966 dma_dir = page_pool_get_dma_dir(dring->page_pool);
969 u16 idx = dring->tail;
970 struct netsec_de *de = dring->vaddr + (DESC_SZ * idx);
971 struct netsec_desc *desc = &dring->desc[idx];
1001 dring->tail = (dring->tail + 1) % DESC_NUM;
1041 page_pool_put_page(dring->page_pool, page, pkt_len,
1071 dring->tail = (dring->tail + 1) % DESC_NUM;
1101 static int netsec_desc_used(struct netsec_desc_ring *dring)
1105 if (dring->head >= dring->tail)
1106 used = dring->head - dring->tail;
1108 used = dring->head + DESC_NUM - dring->tail;
1115 struct netsec_desc_ring *dring = &priv->desc_ring[NETSEC_RING_TX];
1126 used = netsec_desc_used(dring);
1140 struct netsec_desc_ring *dring = &priv->desc_ring[NETSEC_RING_TX];
1146 spin_lock_bh(&dring->lock);
1147 filled = netsec_desc_used(dring);
1149 spin_unlock_bh(&dring->lock);
1178 spin_unlock_bh(&dring->lock);
1192 netsec_set_tx_de(priv, dring, &tx_ctrl, &tx_desc, skb);
1193 spin_unlock_bh(&dring->lock);
1201 struct netsec_desc_ring *dring = &priv->desc_ring[id];
1205 if (!dring->vaddr || !dring->desc)
1208 desc = &dring->desc[idx];
1215 page_pool_put_full_page(dring->page_pool, page, false);
1225 if (xdp_rxq_info_is_reg(&dring->xdp_rxq))
1226 xdp_rxq_info_unreg(&dring->xdp_rxq);
1227 page_pool_destroy(dring->page_pool);
1230 memset(dring->desc, 0, sizeof(struct netsec_desc) * DESC_NUM);
1231 memset(dring->vaddr, 0, DESC_SZ * DESC_NUM);
1233 dring->head = 0;
1234 dring->tail = 0;
1242 struct netsec_desc_ring *dring = &priv->desc_ring[id];
1244 if (dring->vaddr) {
1246 dring->vaddr, dring->desc_dma);
1247 dring->vaddr = NULL;
1250 kfree(dring->desc);
1251 dring->desc = NULL;
1256 struct netsec_desc_ring *dring = &priv->desc_ring[id];
1258 dring->vaddr = dma_alloc_coherent(priv->dev, DESC_SZ * DESC_NUM,
1259 &dring->desc_dma, GFP_KERNEL);
1260 if (!dring->vaddr)
1263 dring->desc = kcalloc(DESC_NUM, sizeof(*dring->desc), GFP_KERNEL);
1264 if (!dring->desc)
1276 struct netsec_desc_ring *dring = &priv->desc_ring[NETSEC_RING_TX];
1282 de = dring->vaddr + (DESC_SZ * i);
1293 struct netsec_desc_ring *dring = &priv->desc_ring[NETSEC_RING_RX];
1310 dring->page_pool = page_pool_create(&pp_params);
1311 if (IS_ERR(dring->page_pool)) {
1312 err = PTR_ERR(dring->page_pool);
1313 dring->page_pool = NULL;
1317 err = xdp_rxq_info_reg(&dring->xdp_rxq, priv->ndev, 0, priv->napi.napi_id);
1321 err = xdp_rxq_info_reg_mem_model(&dring->xdp_rxq, MEM_TYPE_PAGE_POOL,
1322 dring->page_pool);
1327 struct netsec_desc *desc = &dring->desc[i];
1442 /* set normal tx dring ring config */