Lines Matching defs:ring

393 static struct ag71xx_desc *ag71xx_ring_desc(struct ag71xx_ring *ring, int idx)
395 return (struct ag71xx_desc *)&ring->descs_cpu[idx * AG71XX_DESC_SIZE];
792 struct ag71xx_ring *ring = &ag->tx_ring;
798 ring_mask = BIT(ring->order) - 1;
799 ring_size = BIT(ring->order);
801 netif_dbg(ag, tx_queued, ndev, "processing TX ring\n");
803 while (ring->dirty + n != ring->curr) {
808 i = (ring->dirty + n) & ring_mask;
809 desc = ag71xx_ring_desc(ring, i);
810 skb = ring->buf[i].tx.skb;
830 ring->buf[i].tx.skb = NULL;
832 bytes_compl += ring->buf[i].tx.len;
835 ring->dirty += n;
852 if ((ring->curr - ring->dirty) < (ring_size * 3) / 4)
1141 struct ag71xx_ring *ring = &ag->tx_ring;
1142 int ring_mask = BIT(ring->order) - 1;
1146 while (ring->curr != ring->dirty) {
1148 u32 i = ring->dirty & ring_mask;
1150 desc = ag71xx_ring_desc(ring, i);
1156 if (ring->buf[i].tx.skb) {
1157 bytes_compl += ring->buf[i].tx.len;
1159 dev_kfree_skb_any(ring->buf[i].tx.skb);
1161 ring->buf[i].tx.skb = NULL;
1162 ring->dirty++;
1173 struct ag71xx_ring *ring = &ag->tx_ring;
1174 int ring_size = BIT(ring->order);
1179 struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
1181 desc->next = (u32)(ring->descs_dma +
1185 ring->buf[i].tx.skb = NULL;
1191 ring->curr = 0;
1192 ring->dirty = 0;
1198 struct ag71xx_ring *ring = &ag->rx_ring;
1199 int ring_size = BIT(ring->order);
1202 if (!ring->buf)
1206 if (ring->buf[i].rx.rx_buf) {
1208 ring->buf[i].rx.dma_addr,
1210 skb_free_frag(ring->buf[i].rx.rx_buf);
1224 struct ag71xx_ring *ring = &ag->rx_ring;
1228 desc = ag71xx_ring_desc(ring, buf - &ring->buf[0]);
1243 struct ag71xx_ring *ring = &ag->rx_ring;
1245 int ring_mask = BIT(ring->order) - 1;
1246 int ring_size = BIT(ring->order);
1252 struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
1254 desc->next = (u32)(ring->descs_dma +
1262 struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
1264 if (!ag71xx_fill_rx_buf(ag, &ring->buf[i], ag->rx_buf_offset,
1276 ring->curr = 0;
1277 ring->dirty = 0;
1284 struct ag71xx_ring *ring = &ag->rx_ring;
1285 int ring_mask = BIT(ring->order) - 1;
1290 for (; ring->curr - ring->dirty > 0; ring->dirty++) {
1294 i = ring->dirty & ring_mask;
1295 desc = ag71xx_ring_desc(ring, i);
1297 if (!ring->buf[i].rx.rx_buf &&
1298 !ag71xx_fill_rx_buf(ag, &ring->buf[i], offset,
1466 static int ag71xx_fill_dma_desc(struct ag71xx_ring *ring, u32 addr, int len)
1471 ring_mask = BIT(ring->order) - 1;
1473 split = ring->desc_split;
1481 i = (ring->curr + ndesc) & ring_mask;
1482 desc = ag71xx_ring_desc(ring, i);
1520 struct ag71xx_ring *ring;
1524 ring = &ag->tx_ring;
1525 ring_mask = BIT(ring->order) - 1;
1526 ring_size = BIT(ring->order);
1536 i = ring->curr & ring_mask;
1537 desc = ag71xx_ring_desc(ring, i);
1540 n = ag71xx_fill_dma_desc(ring, (u32)dma_addr,
1545 i = (ring->curr + n - 1) & ring_mask;
1546 ring->buf[i].tx.len = skb->len;
1547 ring->buf[i].tx.skb = skb;
1554 ring->curr += n;
1560 if (ring->desc_split)
1563 if (ring->curr - ring->dirty >= ring_size - ring_min) {
1621 struct ag71xx_ring *ring;
1625 ring = &ag->rx_ring;
1628 ring_mask = BIT(ring->order) - 1;
1629 ring_size = BIT(ring->order);
1632 limit, ring->curr, ring->dirty);
1637 unsigned int i = ring->curr & ring_mask;
1638 struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
1645 if ((ring->dirty + ring_size) == ring->curr) {
1646 WARN_ONCE(1, "RX out of ring");
1655 dma_unmap_single(&ag->pdev->dev, ring->buf[i].rx.dma_addr,
1661 skb = napi_build_skb(ring->buf[i].rx.rx_buf, ag71xx_buffer_size(ag));
1663 skb_free_frag(ring->buf[i].rx.rx_buf);
1680 ring->buf[i].rx.rx_buf = NULL;
1683 ring->curr++;
1693 ring->curr, ring->dirty, done);
1709 netif_dbg(ag, rx_status, ndev, "processing RX ring\n");