Lines Matching defs:ring
32 * rx_ring_sz: This defines the number of receive blocks each ring can have.
699 struct ring_info *ring = &mac_control->rings[i];
708 ring->block_count = rx_cfg->num_rxd /
710 ring->pkt_cnt = rx_cfg->num_rxd - ring->block_count;
719 struct ring_info *ring = &mac_control->rings[i];
721 ring->rx_curr_get_info.block_index = 0;
722 ring->rx_curr_get_info.offset = 0;
723 ring->rx_curr_get_info.ring_len = rx_cfg->num_rxd - 1;
724 ring->rx_curr_put_info.block_index = 0;
725 ring->rx_curr_put_info.offset = 0;
726 ring->rx_curr_put_info.ring_len = rx_cfg->num_rxd - 1;
727 ring->nic = nic;
728 ring->ring_no = i;
736 rx_blocks = &ring->rx_blocks[j];
772 tmp_v_addr = ring->rx_blocks[j].block_virt_addr;
773 tmp_v_addr_next = ring->rx_blocks[next].block_virt_addr;
774 tmp_p_addr = ring->rx_blocks[j].block_dma_addr;
775 tmp_p_addr_next = ring->rx_blocks[next].block_dma_addr;
791 struct ring_info *ring = &mac_control->rings[i];
796 ring->ba = kmalloc(size, GFP_KERNEL);
797 if (!ring->ba)
805 ring->ba[j] = kmalloc(size, GFP_KERNEL);
806 if (!ring->ba[j])
810 ba = &ring->ba[j][k];
935 struct ring_info *ring = &mac_control->rings[i];
937 blk_cnt = ring->block_count;
939 tmp_v_addr = ring->rx_blocks[j].block_virt_addr;
940 tmp_p_addr = ring->rx_blocks[j].block_dma_addr;
946 kfree(ring->rx_blocks[j].rxds);
956 struct ring_info *ring = &mac_control->rings[i];
962 if (!ring->ba[j])
965 struct buffAdd *ba = &ring->ba[j][k];
974 kfree(ring->ba[j]);
978 kfree(ring->ba);
2220 struct ring_info *ring = &mac_control->rings[i];
2222 writeq((u64)ring->rx_blocks[0].block_dma_addr,
2433 * @ring: per ring structure
2453 static int fill_rx_buffers(struct s2io_nic *nic, struct ring_info *ring,
2467 struct swStat *swstats = &ring->nic->mac_control.stats_info->sw_stat;
2469 alloc_cnt = ring->pkt_cnt - ring->rx_bufs_left;
2471 block_no1 = ring->rx_curr_get_info.block_index;
2473 block_no = ring->rx_curr_put_info.block_index;
2475 off = ring->rx_curr_put_info.offset;
2477 rxdp = ring->rx_blocks[block_no].rxds[off].virt_addr;
2480 (off == ring->rx_curr_get_info.offset) &&
2483 ring->dev->name);
2486 if (off && (off == ring->rxd_count)) {
2487 ring->rx_curr_put_info.block_index++;
2488 if (ring->rx_curr_put_info.block_index ==
2489 ring->block_count)
2490 ring->rx_curr_put_info.block_index = 0;
2491 block_no = ring->rx_curr_put_info.block_index;
2493 ring->rx_curr_put_info.offset = off;
2494 rxdp = ring->rx_blocks[block_no].block_virt_addr;
2496 ring->dev->name, rxdp);
2501 ((ring->rxd_mode == RXD_MODE_3B) &&
2503 ring->rx_curr_put_info.offset = off;
2506 /* calculate size of skb based on ring mode */
2507 size = ring->mtu +
2510 if (ring->rxd_mode == RXD_MODE_1)
2513 size = ring->mtu + ALIGN_SIZE + BUF0_LEN + 4;
2519 ring->dev->name);
2530 if (ring->rxd_mode == RXD_MODE_1) {
2536 dma_map_single(&ring->pdev->dev, skb->data,
2545 } else if (ring->rxd_mode == RXD_MODE_3B) {
2561 ba = &ring->ba[block_no][off];
2571 dma_map_single(&ring->pdev->dev,
2577 dma_sync_single_for_device(&ring->pdev->dev,
2583 if (ring->rxd_mode == RXD_MODE_3B) {
2590 rxdp3->Buffer2_ptr = dma_map_single(&ring->pdev->dev,
2592 ring->mtu + 4,
2600 dma_map_single(&ring->pdev->dev,
2607 dma_unmap_single(&ring->pdev->dev,
2610 ring->mtu + 4,
2617 (ring->mtu + 4);
2625 if (off == (ring->rxd_count + 1))
2627 ring->rx_curr_put_info.offset = off;
2637 ring->rx_bufs_left += 1;
2723 struct ring_info *ring = &mac_control->rings[i];
2728 ring->rx_curr_put_info.block_index = 0;
2729 ring->rx_curr_get_info.block_index = 0;
2730 ring->rx_curr_put_info.offset = 0;
2731 ring->rx_curr_get_info.offset = 0;
2732 ring->rx_bufs_left = 0;
2733 DBG_PRINT(INIT_DBG, "%s: Freed 0x%x Rx Buffers on ring%d\n",
2738 static int s2io_chk_rx_buffers(struct s2io_nic *nic, struct ring_info *ring)
2740 if (fill_rx_buffers(nic, ring, 0) == -ENOMEM) {
2742 ring->dev->name);
2762 struct ring_info *ring = container_of(napi, struct ring_info, napi);
2763 struct net_device *dev = ring->dev;
2774 pkts_processed = rx_intr_handler(ring, budget);
2775 s2io_chk_rx_buffers(nic, ring);
2781 addr += 7 - ring->ring_no;
2782 val8 = (ring->ring_no == 0) ? 0x3f : 0xbf;
2803 struct ring_info *ring = &mac_control->rings[i];
2804 ring_pkts_processed = rx_intr_handler(ring, budget);
2805 s2io_chk_rx_buffers(nic, ring);
2813 /* Re enable the Rx interrupts for the ring */
2857 struct ring_info *ring = &mac_control->rings[i];
2859 rx_intr_handler(ring, 0);
2863 struct ring_info *ring = &mac_control->rings[i];
2865 if (fill_rx_buffers(nic, ring, 0) == -ENOMEM) {
2878 * @ring_data: per ring structure.
2882 * receive ring contains fresh as yet un-processed frames,this function is
4206 struct ring_info *ring = (struct ring_info *)dev_id;
4207 struct s2io_nic *sp = ring->nic;
4218 addr += (7 - ring->ring_no);
4219 val8 = (ring->ring_no == 0) ? 0x7f : 0xff;
4222 napi_schedule(&ring->napi);
4224 rx_intr_handler(ring, 0);
4225 s2io_chk_rx_buffers(sp, ring);
4408 /* Check for ring full counter */
4715 struct ring_info *ring = &mac_control->rings[i];
4717 rx_intr_handler(ring, 0);
4740 struct ring_info *ring = &mac_control->rings[i];
4742 s2io_chk_rx_buffers(sp, ring);
6868 /* Calculate the size based on ring mode */
6878 struct ring_info *ring = &mac_control->rings[i];
6884 rxdp = ring->rx_blocks[j].rxds[k].virt_addr;
6886 ba = &ring->ba[j][k];
7050 * receive buffer to avoid the ring bump. Since there is
7053 * ring to HW and set the appropriate buffer size
7054 * based on the ring mode
7110 * Rx ring and initializing buffers into 30 Rx blocks
7116 struct ring_info *ring = &mac_control->rings[i];
7118 ring->mtu = dev->mtu;
7119 ring->lro = !!(dev->features & NETIF_F_LRO);
7120 ret = fill_rx_buffers(sp, ring, 1);
7127 DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i,
7128 ring->rx_bufs_left);
7266 * @ring_data : the ring from which this RxD was extracted.
7579 DBG_PRINT(ERR_DBG, "Requested ring mode not supported\n");
7586 DBG_PRINT(ERR_DBG, "Requested rx ring size not "
7599 * @ring: ring index
7601 * desired receive ring.
7605 static int rts_ds_steer(struct s2io_nic *nic, u8 ds_codepoint, u8 ring)
7613 val64 = RTS_DS_MEM_DATA(ring);
7804 struct ring_info *ring = &mac_control->rings[i];
7808 ring->rx_bufs_left = 0;
7809 ring->rxd_mode = sp->rxd_mode;
7810 ring->rxd_count = rxd_count[sp->rxd_mode];
7811 ring->pdev = sp->pdev;
7812 ring->dev = sp->dev;
7909 struct ring_info *ring = &mac_control->rings[i];
7911 netif_napi_add(dev, &ring->napi, s2io_poll_msix);
8054 DBG_PRINT(ERR_DBG, "%s: Using %d Rx ring(s)\n", dev->name,