ring_info
int hv_ringbuffer_init(struct hv_ring_buffer_info *ring_info,
void hv_ringbuffer_cleanup(struct hv_ring_buffer_info *ring_info);
return (u64)ring_info->ring_buffer->write_index << 32;
struct hv_ring_buffer_info *ring_info,
void *ring_buffer = hv_get_ring_buffer(ring_info);
u32 ring_buffer_size = hv_get_ring_buffersize(ring_info);
int hv_ringbuffer_get_debuginfo(struct hv_ring_buffer_info *ring_info,
mutex_lock(&ring_info->ring_buffer_mutex);
if (!ring_info->ring_buffer) {
mutex_unlock(&ring_info->ring_buffer_mutex);
hv_get_ringbuffer_availbytes(ring_info,
debug_info->current_read_index = ring_info->ring_buffer->read_index;
debug_info->current_write_index = ring_info->ring_buffer->write_index;
= ring_info->ring_buffer->interrupt_mask;
mutex_unlock(&ring_info->ring_buffer_mutex);
int hv_ringbuffer_init(struct hv_ring_buffer_info *ring_info,
ring_info->ring_buffer = (struct hv_ring_buffer *)
if (!ring_info->ring_buffer)
memset(ring_info->ring_buffer, 0, HV_HYP_PAGE_SIZE);
ring_info->ring_buffer->read_index =
ring_info->ring_buffer->write_index = 0;
ring_info->ring_buffer->feature_bits.value = 1;
ring_info->ring_size = page_cnt << PAGE_SHIFT;
ring_info->ring_size_div10_reciprocal =
reciprocal_value(ring_info->ring_size / 10);
ring_info->ring_datasize = ring_info->ring_size -
ring_info->priv_read_index = 0;
ring_info->pkt_buffer = kzalloc(max_pkt_size, GFP_KERNEL);
if (!ring_info->pkt_buffer)
ring_info->pkt_buffer_size = max_pkt_size;
spin_lock_init(&ring_info->ring_lock);
void hv_ringbuffer_cleanup(struct hv_ring_buffer_info *ring_info)
mutex_lock(&ring_info->ring_buffer_mutex);
vunmap(ring_info->ring_buffer);
ring_info->ring_buffer = NULL;
mutex_unlock(&ring_info->ring_buffer_mutex);
kfree(ring_info->pkt_buffer);
ring_info->pkt_buffer = NULL;
ring_info->pkt_buffer_size = 0;
hv_get_next_write_location(struct hv_ring_buffer_info *ring_info)
u32 next = ring_info->ring_buffer->write_index;
hv_set_next_write_location(struct hv_ring_buffer_info *ring_info,
ring_info->ring_buffer->write_index = next_write_location;
hv_get_ring_buffersize(const struct hv_ring_buffer_info *ring_info)
return ring_info->ring_datasize;
hv_get_ring_bufferindices(struct hv_ring_buffer_info *ring_info)
struct ring_info *rip;
struct ring_info *ringp;
struct ring_info *ringp;
struct ring_info *ringp;
struct ring_info rx_std_skbuff[RX_STD_RING_ENTRIES];
struct ring_info rx_mini_skbuff[RX_MINI_RING_ENTRIES];
struct ring_info rx_jumbo_skbuff[RX_JUMBO_RING_ENTRIES];
struct ring_info *rp;
size = B44_RX_RING_SIZE * sizeof(struct ring_info);
size = B44_TX_RING_SIZE * sizeof(struct ring_info);
struct ring_info *rp = &bp->tx_buffers[cons];
struct ring_info *src_map, *map;
struct ring_info *src_map, *dest_map;
struct ring_info *rp = &bp->rx_buffers[cons];
struct ring_info *rx_buffers;
struct ring_info *tx_buffers;
(sizeof(struct ring_info) * TG3_RX_STD_RING_SIZE(tp))
(sizeof(struct ring_info) * TG3_RX_JMB_RING_SIZE(tp))
static void tg3_rx_data_free(struct tg3 *tp, struct ring_info *ri, u32 map_sz)
struct ring_info *map;
struct ring_info *src_map, *dest_map;
struct ring_info *ri;
cpycnt * sizeof(struct ring_info));
cpycnt * sizeof(struct ring_info));
struct ring_info *rx_std_buffers;
struct ring_info *rx_jmb_buffers;
memset(&de->rx_skb, 0, sizeof(struct ring_info) * DE_RX_RING_SIZE);
memset(&de->tx_skb, 0, sizeof(struct ring_info) * DE_TX_RING_SIZE);
struct ring_info tx_skb[DE_TX_RING_SIZE];
struct ring_info rx_skb[DE_RX_RING_SIZE];
struct ring_info tx_buffers[TX_RING_SIZE];
struct ring_info rx_buffers[RX_RING_SIZE];
prefetch(&txring->ring_info);
ring->ring_info = kzalloc_objs(struct pasemi_mac_buffer, RX_RING_SIZE);
if (!ring->ring_info)
kfree(ring->ring_info);
ring->ring_info = kzalloc_objs(struct pasemi_mac_buffer, TX_RING_SIZE);
if (!ring->ring_info)
kfree(ring->ring_info);
info = &txring->ring_info[(i+1) & (TX_RING_SIZE-1)];
dmas[j] = txring->ring_info[(i+1+j) &
kfree(txring->ring_info);
kfree(rx_ring(mac)->ring_info);
struct pasemi_mac_buffer *ring_info;
struct pasemi_mac_buffer *ring_info;
#define TX_DESC_INFO(tx, num) ((tx)->ring_info[(num) & (TX_RING_SIZE-1)])
#define RX_DESC_INFO(rx, num) ((rx)->ring_info[(num) & (RX_RING_SIZE-1)])
struct ring_info *tx_skb = tp->tx_skb + entry;
struct ring_info *tx_skb = tp->tx_skb + entry;
struct ring_info tx_skb[NUM_TX_DESC]; /* Tx data buffers */
int hv_ringbuffer_get_debuginfo(struct hv_ring_buffer_info *ring_info,
hv_get_ring_buffer(const struct hv_ring_buffer_info *ring_info)
return ring_info->ring_buffer->buffer;
struct catpt_ring_info ring_info;
input.ring_info = *rinfo;