Lines Matching defs:ring

391 static struct ag71xx_desc *ag71xx_ring_desc(struct ag71xx_ring *ring, int idx)
393 return (struct ag71xx_desc *)&ring->descs_cpu[idx * AG71XX_DESC_SIZE];
779 struct ag71xx_ring *ring = &ag->tx_ring;
785 ring_mask = BIT(ring->order) - 1;
786 ring_size = BIT(ring->order);
788 netif_dbg(ag, tx_queued, ndev, "processing TX ring\n");
790 while (ring->dirty + n != ring->curr) {
795 i = (ring->dirty + n) & ring_mask;
796 desc = ag71xx_ring_desc(ring, i);
797 skb = ring->buf[i].tx.skb;
817 ring->buf[i].tx.skb = NULL;
819 bytes_compl += ring->buf[i].tx.len;
822 ring->dirty += n;
839 if ((ring->curr - ring->dirty) < (ring_size * 3) / 4)
1182 struct ag71xx_ring *ring = &ag->tx_ring;
1183 int ring_mask = BIT(ring->order) - 1;
1187 while (ring->curr != ring->dirty) {
1189 u32 i = ring->dirty & ring_mask;
1191 desc = ag71xx_ring_desc(ring, i);
1197 if (ring->buf[i].tx.skb) {
1198 bytes_compl += ring->buf[i].tx.len;
1200 dev_kfree_skb_any(ring->buf[i].tx.skb);
1202 ring->buf[i].tx.skb = NULL;
1203 ring->dirty++;
1214 struct ag71xx_ring *ring = &ag->tx_ring;
1215 int ring_size = BIT(ring->order);
1220 struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
1222 desc->next = (u32)(ring->descs_dma +
1226 ring->buf[i].tx.skb = NULL;
1232 ring->curr = 0;
1233 ring->dirty = 0;
1239 struct ag71xx_ring *ring = &ag->rx_ring;
1240 int ring_size = BIT(ring->order);
1243 if (!ring->buf)
1247 if (ring->buf[i].rx.rx_buf) {
1249 ring->buf[i].rx.dma_addr,
1251 skb_free_frag(ring->buf[i].rx.rx_buf);
1265 struct ag71xx_ring *ring = &ag->rx_ring;
1269 desc = ag71xx_ring_desc(ring, buf - &ring->buf[0]);
1284 struct ag71xx_ring *ring = &ag->rx_ring;
1286 int ring_mask = BIT(ring->order) - 1;
1287 int ring_size = BIT(ring->order);
1293 struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
1295 desc->next = (u32)(ring->descs_dma +
1303 struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
1305 if (!ag71xx_fill_rx_buf(ag, &ring->buf[i], ag->rx_buf_offset,
1317 ring->curr = 0;
1318 ring->dirty = 0;
1325 struct ag71xx_ring *ring = &ag->rx_ring;
1326 int ring_mask = BIT(ring->order) - 1;
1331 for (; ring->curr - ring->dirty > 0; ring->dirty++) {
1335 i = ring->dirty & ring_mask;
1336 desc = ag71xx_ring_desc(ring, i);
1338 if (!ring->buf[i].rx.rx_buf &&
1339 !ag71xx_fill_rx_buf(ag, &ring->buf[i], offset,
1507 static int ag71xx_fill_dma_desc(struct ag71xx_ring *ring, u32 addr, int len)
1512 ring_mask = BIT(ring->order) - 1;
1514 split = ring->desc_split;
1522 i = (ring->curr + ndesc) & ring_mask;
1523 desc = ag71xx_ring_desc(ring, i);
1561 struct ag71xx_ring *ring;
1565 ring = &ag->tx_ring;
1566 ring_mask = BIT(ring->order) - 1;
1567 ring_size = BIT(ring->order);
1577 i = ring->curr & ring_mask;
1578 desc = ag71xx_ring_desc(ring, i);
1581 n = ag71xx_fill_dma_desc(ring, (u32)dma_addr,
1586 i = (ring->curr + n - 1) & ring_mask;
1587 ring->buf[i].tx.len = skb->len;
1588 ring->buf[i].tx.skb = skb;
1595 ring->curr += n;
1601 if (ring->desc_split)
1604 if (ring->curr - ring->dirty >= ring_size - ring_min) {
1663 struct ag71xx_ring *ring;
1666 ring = &ag->rx_ring;
1669 ring_mask = BIT(ring->order) - 1;
1670 ring_size = BIT(ring->order);
1673 limit, ring->curr, ring->dirty);
1678 unsigned int i = ring->curr & ring_mask;
1679 struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
1686 if ((ring->dirty + ring_size) == ring->curr) {
1687 WARN_ONCE(1, "RX out of ring");
1696 dma_unmap_single(&ag->pdev->dev, ring->buf[i].rx.dma_addr,
1702 skb = build_skb(ring->buf[i].rx.rx_buf, ag71xx_buffer_size(ag));
1704 skb_free_frag(ring->buf[i].rx.rx_buf);
1721 ring->buf[i].rx.rx_buf = NULL;
1724 ring->curr++;
1734 ring->curr, ring->dirty, done);
1750 netif_dbg(ag, rx_status, ndev, "processing RX ring\n");