Lines Matching refs:ring
1363 if (device_config->vp_config[i].ring.enable == in vxge_hw_device_initialize()
1365 nblocks += device_config->vp_config[i].ring.ring_blocks; in vxge_hw_device_initialize()
2022 static u64 __vxge_hw_ring_first_block_address_get(struct __vxge_hw_ring *ring) in __vxge_hw_ring_first_block_address_get() argument
2026 dma_object = ring->mempool->memblocks_dma_arr; in __vxge_hw_ring_first_block_address_get()
2064 struct __vxge_hw_ring *ring, u32 from, in __vxge_hw_ring_rxdblock_link() argument
2100 struct __vxge_hw_ring *ring = in __vxge_hw_ring_mempool_item_alloc() local
2104 for (i = 0; i < ring->rxds_per_block; i++) { in __vxge_hw_ring_mempool_item_alloc()
2109 u32 reserve_index = ring->channel.reserve_ptr - in __vxge_hw_ring_mempool_item_alloc()
2110 (index * ring->rxds_per_block + i + 1); in __vxge_hw_ring_mempool_item_alloc()
2113 ring->channel.reserve_arr[reserve_index] = ((u8 *)item) + in __vxge_hw_ring_mempool_item_alloc()
2114 i * ring->rxd_size; in __vxge_hw_ring_mempool_item_alloc()
2123 rxdp = ring->channel.reserve_arr[reserve_index]; in __vxge_hw_ring_mempool_item_alloc()
2125 uld_priv = ((u8 *)rxdblock_priv + ring->rxd_priv_size * i); in __vxge_hw_ring_mempool_item_alloc()
2135 __vxge_hw_ring_rxdblock_link(mempoolh, ring, index, 0); in __vxge_hw_ring_mempool_item_alloc()
2140 __vxge_hw_ring_rxdblock_link(mempoolh, ring, index - 1, index); in __vxge_hw_ring_mempool_item_alloc()
2149 vxge_hw_ring_replenish(struct __vxge_hw_ring *ring) in vxge_hw_ring_replenish() argument
2155 channel = &ring->channel; in vxge_hw_ring_replenish()
2159 status = vxge_hw_ring_rxd_reserve(ring, &rxd); in vxge_hw_ring_replenish()
2163 if (ring->rxd_init) { in vxge_hw_ring_replenish()
2164 status = ring->rxd_init(rxd, channel->userdata); in vxge_hw_ring_replenish()
2166 vxge_hw_ring_rxd_free(ring, rxd); in vxge_hw_ring_replenish()
2171 vxge_hw_ring_rxd_post(ring, rxd); in vxge_hw_ring_replenish()
2729 static enum vxge_hw_status __vxge_hw_ring_abort(struct __vxge_hw_ring *ring) in __vxge_hw_ring_abort() argument
2734 channel = &ring->channel; in __vxge_hw_ring_abort()
2744 if (ring->rxd_term) in __vxge_hw_ring_abort()
2745 ring->rxd_term(rxdh, VXGE_HW_RXD_STATE_POSTED, in __vxge_hw_ring_abort()
2758 static enum vxge_hw_status __vxge_hw_ring_reset(struct __vxge_hw_ring *ring) in __vxge_hw_ring_reset() argument
2763 channel = &ring->channel; in __vxge_hw_ring_reset()
2765 __vxge_hw_ring_abort(ring); in __vxge_hw_ring_reset()
2772 if (ring->rxd_init) { in __vxge_hw_ring_reset()
2773 status = vxge_hw_ring_replenish(ring); in __vxge_hw_ring_reset()
2788 struct __vxge_hw_ring *ring = vp->vpath->ringh; in __vxge_hw_ring_delete() local
2790 __vxge_hw_ring_abort(ring); in __vxge_hw_ring_delete()
2792 if (ring->mempool) in __vxge_hw_ring_delete()
2793 __vxge_hw_mempool_destroy(ring->mempool); in __vxge_hw_ring_delete()
2796 __vxge_hw_channel_free(&ring->channel); in __vxge_hw_ring_delete()
2810 struct __vxge_hw_ring *ring; in __vxge_hw_ring_create() local
2827 config = &hldev->config.vp_config[vp_id].ring; in __vxge_hw_ring_create()
2832 ring = (struct __vxge_hw_ring *)__vxge_hw_channel_allocate(vp, in __vxge_hw_ring_create()
2837 if (ring == NULL) { in __vxge_hw_ring_create()
2842 vp->vpath->ringh = ring; in __vxge_hw_ring_create()
2843 ring->vp_id = vp_id; in __vxge_hw_ring_create()
2844 ring->vp_reg = vp->vpath->vp_reg; in __vxge_hw_ring_create()
2845 ring->common_reg = hldev->common_reg; in __vxge_hw_ring_create()
2846 ring->stats = &vp->vpath->sw_stats->ring_stats; in __vxge_hw_ring_create()
2847 ring->config = config; in __vxge_hw_ring_create()
2848 ring->callback = attr->callback; in __vxge_hw_ring_create()
2849 ring->rxd_init = attr->rxd_init; in __vxge_hw_ring_create()
2850 ring->rxd_term = attr->rxd_term; in __vxge_hw_ring_create()
2851 ring->buffer_mode = config->buffer_mode; in __vxge_hw_ring_create()
2852 ring->tim_rti_cfg1_saved = vp->vpath->tim_rti_cfg1_saved; in __vxge_hw_ring_create()
2853 ring->tim_rti_cfg3_saved = vp->vpath->tim_rti_cfg3_saved; in __vxge_hw_ring_create()
2854 ring->rxds_limit = config->rxds_limit; in __vxge_hw_ring_create()
2856 ring->rxd_size = vxge_hw_ring_rxd_size_get(config->buffer_mode); in __vxge_hw_ring_create()
2857 ring->rxd_priv_size = in __vxge_hw_ring_create()
2859 ring->per_rxd_space = attr->per_rxd_space; in __vxge_hw_ring_create()
2861 ring->rxd_priv_size = in __vxge_hw_ring_create()
2862 ((ring->rxd_priv_size + VXGE_CACHE_LINE_SIZE - 1) / in __vxge_hw_ring_create()
2867 ring->rxds_per_block = in __vxge_hw_ring_create()
2871 ring->rxdblock_priv_size = ring->rxd_priv_size * ring->rxds_per_block; in __vxge_hw_ring_create()
2872 ring->mempool = __vxge_hw_mempool_create(hldev, in __vxge_hw_ring_create()
2875 ring->rxdblock_priv_size, in __vxge_hw_ring_create()
2876 ring->config->ring_blocks, in __vxge_hw_ring_create()
2877 ring->config->ring_blocks, in __vxge_hw_ring_create()
2879 ring); in __vxge_hw_ring_create()
2880 if (ring->mempool == NULL) { in __vxge_hw_ring_create()
2885 status = __vxge_hw_channel_initialize(&ring->channel); in __vxge_hw_ring_create()
2898 if (ring->rxd_init) { in __vxge_hw_ring_create()
2899 status = vxge_hw_ring_replenish(ring); in __vxge_hw_ring_create()
2908 ring->stats->common_stats.usage_cnt = 0; in __vxge_hw_ring_create()
2937 device_config->vp_config[i].ring.enable = VXGE_HW_RING_DEFAULT; in vxge_hw_device_config_default_get()
2939 device_config->vp_config[i].ring.ring_blocks = in vxge_hw_device_config_default_get()
2942 device_config->vp_config[i].ring.buffer_mode = in vxge_hw_device_config_default_get()
2945 device_config->vp_config[i].ring.scatter_mode = in vxge_hw_device_config_default_get()
2948 device_config->vp_config[i].ring.rxds_limit = in vxge_hw_device_config_default_get()
3949 vxge_hw_vpath_check_leak(struct __vxge_hw_ring *ring) in vxge_hw_vpath_check_leak() argument
3954 if (ring == NULL) in vxge_hw_vpath_check_leak()
3957 rxd_new_count = readl(&ring->vp_reg->prc_rxd_doorbell); in vxge_hw_vpath_check_leak()
3958 rxd_spat = readq(&ring->vp_reg->prc_cfg6); in vxge_hw_vpath_check_leak()
4087 if (vp_config->ring.enable == VXGE_HW_RING_DISABLE) in __vxge_hw_vpath_prc_configure()
4100 if (vpath->vp_config->ring.scatter_mode != in __vxge_hw_vpath_prc_configure()
4105 switch (vpath->vp_config->ring.scatter_mode) { in __vxge_hw_vpath_prc_configure()
4235 if (vp_config->ring.enable == VXGE_HW_RING_ENABLE) { in __vxge_hw_vpath_mac_configure()
4304 if (config->ring.enable == VXGE_HW_RING_ENABLE) in __vxge_hw_vpath_tim_configure()
4420 if (config->ring.enable == VXGE_HW_RING_ENABLE) { in __vxge_hw_vpath_tim_configure()
4839 if (vpath->vp_config->ring.enable == VXGE_HW_RING_ENABLE) { in vxge_hw_vpath_open()
4913 struct __vxge_hw_ring *ring = vpath->ringh; in vxge_hw_vpath_rx_doorbell_init() local
4921 new_count = ring->config->ring_blocks * VXGE_HW_BLOCK_SIZE / 8; in vxge_hw_vpath_rx_doorbell_init()
4940 ring->rxds_limit = min(ring->rxds_limit, val64); in vxge_hw_vpath_rx_doorbell_init()
4941 if (ring->rxds_limit < 4) in vxge_hw_vpath_rx_doorbell_init()
4942 ring->rxds_limit = 4; in vxge_hw_vpath_rx_doorbell_init()