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);
2218 struct ring_info *ring = &mac_control->rings[i];
2220 writeq((u64)ring->rx_blocks[0].block_dma_addr,
2431 * @ring: per ring structure
2451 static int fill_rx_buffers(struct s2io_nic *nic, struct ring_info *ring,
2465 struct swStat *swstats = &ring->nic->mac_control.stats_info->sw_stat;
2467 alloc_cnt = ring->pkt_cnt - ring->rx_bufs_left;
2469 block_no1 = ring->rx_curr_get_info.block_index;
2471 block_no = ring->rx_curr_put_info.block_index;
2473 off = ring->rx_curr_put_info.offset;
2475 rxdp = ring->rx_blocks[block_no].rxds[off].virt_addr;
2478 (off == ring->rx_curr_get_info.offset) &&
2481 ring->dev->name);
2484 if (off && (off == ring->rxd_count)) {
2485 ring->rx_curr_put_info.block_index++;
2486 if (ring->rx_curr_put_info.block_index ==
2487 ring->block_count)
2488 ring->rx_curr_put_info.block_index = 0;
2489 block_no = ring->rx_curr_put_info.block_index;
2491 ring->rx_curr_put_info.offset = off;
2492 rxdp = ring->rx_blocks[block_no].block_virt_addr;
2494 ring->dev->name, rxdp);
2499 ((ring->rxd_mode == RXD_MODE_3B) &&
2501 ring->rx_curr_put_info.offset = off;
2504 /* calculate size of skb based on ring mode */
2505 size = ring->mtu +
2508 if (ring->rxd_mode == RXD_MODE_1)
2511 size = ring->mtu + ALIGN_SIZE + BUF0_LEN + 4;
2517 ring->dev->name);
2528 if (ring->rxd_mode == RXD_MODE_1) {
2534 dma_map_single(&ring->pdev->dev, skb->data,
2543 } else if (ring->rxd_mode == RXD_MODE_3B) {
2559 ba = &ring->ba[block_no][off];
2569 dma_map_single(&ring->pdev->dev,
2575 dma_sync_single_for_device(&ring->pdev->dev,
2581 if (ring->rxd_mode == RXD_MODE_3B) {
2588 rxdp3->Buffer2_ptr = dma_map_single(&ring->pdev->dev,
2590 ring->mtu + 4,
2598 dma_map_single(&ring->pdev->dev,
2605 dma_unmap_single(&ring->pdev->dev,
2608 ring->mtu + 4,
2615 (ring->mtu + 4);
2623 if (off == (ring->rxd_count + 1))
2625 ring->rx_curr_put_info.offset = off;
2635 ring->rx_bufs_left += 1;
2721 struct ring_info *ring = &mac_control->rings[i];
2726 ring->rx_curr_put_info.block_index = 0;
2727 ring->rx_curr_get_info.block_index = 0;
2728 ring->rx_curr_put_info.offset = 0;
2729 ring->rx_curr_get_info.offset = 0;
2730 ring->rx_bufs_left = 0;
2731 DBG_PRINT(INIT_DBG, "%s: Freed 0x%x Rx Buffers on ring%d\n",
2736 static int s2io_chk_rx_buffers(struct s2io_nic *nic, struct ring_info *ring)
2738 if (fill_rx_buffers(nic, ring, 0) == -ENOMEM) {
2740 ring->dev->name);
2760 struct ring_info *ring = container_of(napi, struct ring_info, napi);
2761 struct net_device *dev = ring->dev;
2772 pkts_processed = rx_intr_handler(ring, budget);
2773 s2io_chk_rx_buffers(nic, ring);
2779 addr += 7 - ring->ring_no;
2780 val8 = (ring->ring_no == 0) ? 0x3f : 0xbf;
2801 struct ring_info *ring = &mac_control->rings[i];
2802 ring_pkts_processed = rx_intr_handler(ring, budget);
2803 s2io_chk_rx_buffers(nic, ring);
2811 /* Re enable the Rx interrupts for the ring */
2855 struct ring_info *ring = &mac_control->rings[i];
2857 rx_intr_handler(ring, 0);
2861 struct ring_info *ring = &mac_control->rings[i];
2863 if (fill_rx_buffers(nic, ring, 0) == -ENOMEM) {
2876 * @ring_data: per ring structure.
2880 * receive ring contains fresh as yet un-processed frames,this function is
4202 struct ring_info *ring = (struct ring_info *)dev_id;
4203 struct s2io_nic *sp = ring->nic;
4214 addr += (7 - ring->ring_no);
4215 val8 = (ring->ring_no == 0) ? 0x7f : 0xff;
4218 napi_schedule(&ring->napi);
4220 rx_intr_handler(ring, 0);
4221 s2io_chk_rx_buffers(sp, ring);
4404 /* Check for ring full counter */
4711 struct ring_info *ring = &mac_control->rings[i];
4713 rx_intr_handler(ring, 0);
4736 struct ring_info *ring = &mac_control->rings[i];
4738 s2io_chk_rx_buffers(sp, ring);
6861 /* Calculate the size based on ring mode */
6871 struct ring_info *ring = &mac_control->rings[i];
6877 rxdp = ring->rx_blocks[j].rxds[k].virt_addr;
6879 ba = &ring->ba[j][k];
7043 * receive buffer to avoid the ring bump. Since there is
7046 * ring to HW and set the appropriate buffer size
7047 * based on the ring mode
7103 * Rx ring and initializing buffers into 30 Rx blocks
7109 struct ring_info *ring = &mac_control->rings[i];
7111 ring->mtu = dev->mtu;
7112 ring->lro = !!(dev->features & NETIF_F_LRO);
7113 ret = fill_rx_buffers(sp, ring, 1);
7120 DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i,
7121 ring->rx_bufs_left);
7259 * @ring_data : the ring from which this RxD was extracted.
7573 DBG_PRINT(ERR_DBG, "Requested ring mode not supported\n");
7580 DBG_PRINT(ERR_DBG, "Requested rx ring size not "
7593 * @ring: ring index
7595 * desired receive ring.
7599 static int rts_ds_steer(struct s2io_nic *nic, u8 ds_codepoint, u8 ring)
7607 val64 = RTS_DS_MEM_DATA(ring);
7809 struct ring_info *ring = &mac_control->rings[i];
7813 ring->rx_bufs_left = 0;
7814 ring->rxd_mode = sp->rxd_mode;
7815 ring->rxd_count = rxd_count[sp->rxd_mode];
7816 ring->pdev = sp->pdev;
7817 ring->dev = sp->dev;
7915 struct ring_info *ring = &mac_control->rings[i];
7917 netif_napi_add(dev, &ring->napi, s2io_poll_msix, 64);
8060 DBG_PRINT(ERR_DBG, "%s: Using %d Rx ring(s)\n", dev->name,