Lines Matching refs:trans_info

227 	channel->trans_info.map[index % channel->tre_ring.count] = trans;  in gsi_trans_map()
235 return channel->trans_info.map[index % channel->tre_ring.count]; in gsi_channel_trans_mapped()
241 struct gsi_trans_info *trans_info = &channel->trans_info; in gsi_channel_trans_complete() local
242 u16 trans_id = trans_info->completed_id; in gsi_channel_trans_complete()
244 if (trans_id == trans_info->pending_id) { in gsi_channel_trans_complete()
246 if (trans_id == trans_info->pending_id) in gsi_channel_trans_complete()
250 return &trans_info->trans[trans_id %= channel->tre_count]; in gsi_channel_trans_complete()
257 struct gsi_trans_info *trans_info = &channel->trans_info; in gsi_trans_move_committed() local
260 trans_info->allocated_id++; in gsi_trans_move_committed()
267 struct gsi_trans_info *trans_info = &channel->trans_info; in gsi_trans_move_pending() local
268 u16 trans_index = trans - &trans_info->trans[0]; in gsi_trans_move_pending()
272 delta = trans_index - trans_info->committed_id + 1; in gsi_trans_move_pending()
273 trans_info->committed_id += delta % channel->tre_count; in gsi_trans_move_pending()
280 struct gsi_trans_info *trans_info = &channel->trans_info; in gsi_trans_move_complete() local
281 u16 trans_index = trans - trans_info->trans; in gsi_trans_move_complete()
285 delta = trans_index - trans_info->pending_id + 1; in gsi_trans_move_complete()
287 trans_info->pending_id += delta; in gsi_trans_move_complete()
294 struct gsi_trans_info *trans_info = &channel->trans_info; in gsi_trans_move_polled() local
297 trans_info->completed_id++; in gsi_trans_move_polled()
302 gsi_trans_tre_reserve(struct gsi_trans_info *trans_info, u32 tre_count) in gsi_trans_tre_reserve() argument
304 int avail = atomic_read(&trans_info->tre_avail); in gsi_trans_tre_reserve()
311 } while (!atomic_try_cmpxchg(&trans_info->tre_avail, &avail, new)); in gsi_trans_tre_reserve()
318 gsi_trans_tre_release(struct gsi_trans_info *trans_info, u32 tre_count) in gsi_trans_tre_release() argument
320 atomic_add(tre_count, &trans_info->tre_avail); in gsi_trans_tre_release()
327 struct gsi_trans_info *trans_info; in gsi_channel_trans_idle() local
329 trans_info = &gsi->channel[channel_id].trans_info; in gsi_channel_trans_idle()
331 return atomic_read(&trans_info->tre_avail) == tre_max; in gsi_channel_trans_idle()
340 struct gsi_trans_info *trans_info; in gsi_channel_trans_alloc() local
347 trans_info = &channel->trans_info; in gsi_channel_trans_alloc()
350 if (!gsi_trans_tre_reserve(trans_info, tre_count)) in gsi_channel_trans_alloc()
353 trans_index = trans_info->free_id % channel->tre_count; in gsi_channel_trans_alloc()
354 trans = &trans_info->trans[trans_index]; in gsi_channel_trans_alloc()
364 trans->sgl = gsi_trans_pool_alloc(&trans_info->sg_pool, tre_count); in gsi_channel_trans_alloc()
371 trans_info->free_id++; in gsi_channel_trans_alloc()
379 struct gsi_trans_info *trans_info; in gsi_trans_free() local
387 trans_info = &trans->gsi->channel[trans->channel_id].trans_info; in gsi_trans_free()
389 trans_info->allocated_id++; in gsi_trans_free()
390 trans_info->committed_id++; in gsi_trans_free()
391 trans_info->pending_id++; in gsi_trans_free()
392 trans_info->completed_id++; in gsi_trans_free()
398 trans_info->polled_id++; in gsi_trans_free()
403 gsi_trans_tre_release(trans_info, trans->rsvd_count); in gsi_trans_free()
594 if (ring_db || !atomic_read(&channel->trans_info.tre_avail)) { in __gsi_trans_commit()
646 struct gsi_trans_info *trans_info = &channel->trans_info; in gsi_channel_trans_cancel_pending() local
647 u16 trans_id = trans_info->pending_id; in gsi_channel_trans_cancel_pending()
652 if (trans_id == trans_info->committed_id) in gsi_channel_trans_cancel_pending()
659 trans = &trans_info->trans[trans_id % channel->tre_count]; in gsi_channel_trans_cancel_pending()
661 } while (++trans_id != trans_info->committed_id); in gsi_channel_trans_cancel_pending()
664 trans_info->pending_id = trans_info->committed_id; in gsi_channel_trans_cancel_pending()
675 struct gsi_trans_info *trans_info; in gsi_trans_read_byte() local
678 trans_info = &channel->trans_info; in gsi_trans_read_byte()
681 if (!gsi_trans_tre_reserve(trans_info, 1)) in gsi_trans_read_byte()
700 gsi_trans_tre_release(&channel->trans_info, 1); in gsi_trans_read_byte_done()
708 struct gsi_trans_info *trans_info; in gsi_channel_trans_init() local
715 trans_info = &channel->trans_info; in gsi_channel_trans_init()
723 atomic_set(&trans_info->tre_avail, tre_max); in gsi_channel_trans_init()
733 trans_info->trans = kcalloc(tre_count, sizeof(*trans_info->trans), in gsi_channel_trans_init()
735 if (!trans_info->trans) in gsi_channel_trans_init()
737 trans_info->free_id = 0; /* all modulo channel->tre_count */ in gsi_channel_trans_init()
738 trans_info->allocated_id = 0; in gsi_channel_trans_init()
739 trans_info->committed_id = 0; in gsi_channel_trans_init()
740 trans_info->pending_id = 0; in gsi_channel_trans_init()
741 trans_info->completed_id = 0; in gsi_channel_trans_init()
742 trans_info->polled_id = 0; in gsi_channel_trans_init()
749 trans_info->map = kcalloc(tre_count, sizeof(*trans_info->map), in gsi_channel_trans_init()
751 if (!trans_info->map) { in gsi_channel_trans_init()
762 ret = gsi_trans_pool_init(&trans_info->sg_pool, in gsi_channel_trans_init()
772 kfree(trans_info->map); in gsi_channel_trans_init()
774 kfree(trans_info->trans); in gsi_channel_trans_init()
785 struct gsi_trans_info *trans_info = &channel->trans_info; in gsi_channel_trans_exit() local
787 gsi_trans_pool_exit(&trans_info->sg_pool); in gsi_channel_trans_exit()
788 kfree(trans_info->trans); in gsi_channel_trans_exit()
789 kfree(trans_info->map); in gsi_channel_trans_exit()