
#include <stdlib.h>#include <string.h>#include "vipl_priv.h"Go to the source code of this file.
Functions | |
| void | vip_process_send_desc (VIP_VI *vip_vi_ptr) |
| VIP_SEND_REQ * | vip_allocate_packet (VIP_GM *vip_gm_ptr, VIP_UINT32 length) |
| void | vip_send_data (VIP_SEND_REQ *vip_send_req_ptr) |
| static void | vip_flush_fifo_send (VIP_GM *vip_gm_ptr) |
| static void | vip_sent_report_callback_status (VIP_SEND_REQ *vip_send_req_ptr, gm_status_t status) |
| static void | vip_resume_callback (struct gm_port *port, void *context, gm_status_t status) |
| void | vip_sent_callback (struct gm_port *port, void *context, gm_status_t status) |
Definition in file vipl_priv_send.c.
|
|
||||||||||||
|
This function process the first descriptor in the VI send queue, checking too many things required by the VI specs and then posts one or more messages.
Definition at line 588 of file vipl_priv_send.c. References VIP_PVOID64::AddressBits, VIP_SEND_REQ::dest_gm_id, VIP_SEND_REQ::dest_port_id, VIP_SEND_REQ::length, VIP_GM::lock, VIP_SEND_REQ::next, VIP_SEND_REQ::ptr, VIP_GM::send_buf_free_cnt, VIP_GM::send_buffers_free, VIP_SEND_REQ::target_ptr, VIP_SEND_REQ::type, VI_GM_EAGER_LENGTH, VIP_ASSERT, VIP_ASSERT_MUTEX_LOCKED, VIP_DEBUG, VIP_DEBUG_LABEL, VIP_SEND_REQ::vip_desc_ptr, VIP_SEND_REQ::vip_gm_ptr, VIP_SEND_REQ::vip_nic_ptr, VIP_SEND_REQ_DMA, VIP_GM::vip_send_req_lookaside, VIP_SEND_REQ_MALLOC, VIP_SEND_REQ_NONE, and VIP_SEND_REQ::vip_vi_ptr. Referenced by vip_handle_3way_ok(), vip_handle_conn_accept(), vip_handle_conn_req(), vip_handle_matching_message(), vip_handle_put_ok(), vip_handle_put_req(), vip_process_send_desc(), vip_return_report(), vip_send_conn_request(), VipConnectAccept(), VipConnectPeerRequest(), VipConnectReject(), and VipConnectRequest(). |
|
|
This function process a send request and post effectively a send to GM. In case of lack of ressources (GM send tokens), the send request is queued to be processed later.
Definition at line 662 of file vipl_priv_send.c. References VIP_PVOID64::Address, VIP_PVOID64::AddressBits, VIP_SEND_REQ::dest_gm_id, VIP_SEND_REQ::dest_port_id, VIP_GM::gm_port, VIP_SEND_REQ::length, VIP_GM::lock, VIP_SEND_REQ::next, VIP_VI::pending_callbacks, VIP_SEND_REQ::ptr, VIP_VI::reliability, VIP_GM::send_fifo_head, VIP_GM::send_fifo_queued, VIP_GM::send_fifo_tail, VIP_GM::send_tokens, VIP_SEND_REQ::target_ptr, VIP_SEND_REQ::type, VI_GM_CTRL_GM_SIZE, VIP_ABORT, VIP_ASSERT, VIP_ASSERT_MUTEX_LOCKED, VIP_DEBUG, VIP_DEBUG_LABEL, VIP_SEND_REQ::vip_desc_ptr, VIP_SEND_REQ::vip_gm_ptr, VIP_SEND_REQ_MALLOC, VIP_SEND_REQ_NONE, VIP_SEND_REQ_OPMASK, VIP_SEND_REQ_RDMA_WRITE, VIP_SEND_REQ_RELIABLE, VIP_SEND_REQ_UNRELIABLE, vip_sent_callback(), VIP_SERVICE_UNRELIABLE, and VIP_SEND_REQ::vip_vi_ptr. Referenced by vip_handle_3way_ok(), vip_handle_conn_accept(), vip_handle_conn_req(), vip_handle_matching_message(), vip_handle_put_ok(), vip_handle_put_req(), vip_process_send_desc(), vip_return_report(), vip_send_conn_request(), VipConnectAccept(), VipConnectPeerRequest(), VipConnectReject(), and VipConnectRequest(). |
|
|
This function try to process queued send requests if ressources are available. In case of success, the send requests are removed from the queue, the processing is delayed again otherwise.
Definition at line 795 of file vipl_priv_send.c. References VIP_PVOID64::Address, VIP_PVOID64::AddressBits, VIP_SEND_REQ::dest_gm_id, VIP_SEND_REQ::dest_port_id, VIP_GM::gm_port, VIP_SEND_REQ::length, VIP_GM::lock, VIP_SEND_REQ::next, VIP_VI::pending_callbacks, VIP_SEND_REQ::ptr, VIP_VI::reliability, VIP_GM::send_buf_free_cnt, VIP_GM::send_buffers_free, VIP_GM::send_fifo_head, VIP_GM::send_fifo_queued, VIP_GM::send_fifo_tail, VIP_GM::send_tokens, VIP_SEND_REQ::target_ptr, VIP_SEND_REQ::type, VI_GM_CTRL_GM_SIZE, VIP_ABORT, VIP_ASSERT, VIP_ASSERT_MUTEX_LOCKED, VIP_DEBUG, VIP_DEBUG_LABEL, VIP_SEND_REQ::vip_desc_ptr, VIP_SEND_REQ::vip_gm_ptr, VIP_SEND_REQ_DMA, VIP_SEND_REQ_MALLOC, VIP_SEND_REQ_NONE, VIP_SEND_REQ_OPMASK, VIP_SEND_REQ_RDMA_WRITE, VIP_SEND_REQ_RELIABLE, VIP_SEND_REQ_UNRELIABLE, vip_sent_callback(), VIP_SERVICE_UNRELIABLE, and VIP_SEND_REQ::vip_vi_ptr. Referenced by vip_resume_callback(), and vip_sent_callback(). |
|
||||||||||||
|
This function generates an error message in case of failure in the completion of a message.
Definition at line 933 of file vipl_priv_send.c. References VIP_SEND_REQ::dest_gm_id, VIP_SEND_REQ::dest_port_id, VIP_GM::gm_id, VIP_GM::gm_port, VIP_GM::gm_port_id, VI_GM_PORT_CONN_MANAGER, VIP_DEBUG, VIP_DEBUG_LABEL, VIP_DEBUG_PROTECTED, and VIP_SEND_REQ::vip_gm_ptr. Referenced by vip_sent_callback(). |
|
||||||||||||||||
|
This function is called after GM has resuming sends on a connection that has experienced GM errors previously. GM's API really sucks, we have to do all of the dirty work.
Definition at line 981 of file vipl_priv_send.c. References VIP_PVOID64::Address, VIP_VI_QUEUE::count_to_process, VIP_DESCRIPTOR::CS, VIP_VI_QUEUE::current_desc, VIP_VI_QUEUE::current_mem, VIP_SEND_REQ::dest_gm_id, VIP_SEND_REQ::dest_port_id, VIP_NIC::lock, VIP_GM::lock, VIP_GM::max_send_tokens, VIP_CONTROL_SEGMENT::Next, VIP_CONTROL_SEGMENT::NextHandle, VIP_VI::pending_callbacks, VIP_SEND_REQ::ptr, VIP_VI::reliability, VIP_GM::send_buf_free_cnt, VIP_GM::send_buffers_free, VIP_GM::send_fifo_head, VIP_VI::send_queue, VIP_GM::send_tokens, VIP_VI::state, VIP_CONTROL_SEGMENT::Status, VIP_SEND_REQ::type, VIP_ABORT, VIP_ASSERT, VIP_ASSERT_MUTEX_LOCKED, VIP_DEBUG, VIP_DEBUG_LABEL, VIP_SEND_REQ::vip_desc_ptr, VIP_ERROR_CATASTROPHIC, VIP_ERROR_CONN_LOST, VIP_FALSE, vip_flush_fifo_send(), vip_generate_async_error(), VIP_SEND_REQ::vip_gm_ptr, VIP_INVALID_NIC_HANDLE, VIP_MUTEX_LOCK, VIP_MUTEX_UNLOCK, VIP_SEND_REQ::vip_nic_ptr, vip_notify_desc_completion(), vip_process_send_desc(), VIP_SEND_REQ_DMA, VIP_SEND_REQ_MALLOC, VIP_SEND_REQ_NONE, VIP_SEND_REQ_TYPEMASK, VIP_SERVICE_UNRELIABLE, VIP_STATE_CONNECT_PENDING, VIP_STATE_ERROR, VIP_STATUS_OP_MASK, VIP_STATUS_TRANSPORT_ERROR, VIP_TRUE, VIP_SEND_REQ::vip_vi_ptr, and vip_vi_transition_to_error_state(). Referenced by vip_sent_callback(). |
|
||||||||||||||||
|
This function is called after completion of a send by the GM layer. It checks for failures and update various related internal structures.
Definition at line 1125 of file vipl_priv_send.c. References VIP_SEND_REQ::dest_gm_id, VIP_SEND_REQ::dest_port_id, VIP_NIC::lock, VIP_GM::lock, VIP_GM::max_send_tokens, VIP_SEND_REQ::ptr, VIP_GM::send_buf_free_cnt, VIP_GM::send_buffers_free, VIP_GM::send_fifo_head, VIP_GM::send_tokens, VIP_SEND_REQ::type, VIP_ABORT, VIP_ASSERT, VIP_ASSERT_MUTEX_LOCKED, VIP_DEBUG, VIP_DEBUG_LABEL, VIP_SEND_REQ::vip_desc_ptr, VIP_FALSE, vip_flush_fifo_send(), VIP_SEND_REQ::vip_gm_ptr, VIP_INVALID_NIC_HANDLE, VIP_INVALID_VI_HANDLE, VIP_MUTEX_LOCK, VIP_MUTEX_UNLOCK, VIP_SEND_REQ::vip_nic_ptr, vip_notify_desc_completion(), vip_process_send_desc(), vip_resume_callback(), VIP_SEND_REQ_DMA, VIP_SEND_REQ_MALLOC, VIP_SEND_REQ_NONE, VIP_SEND_REQ_TYPEMASK, vip_sent_report_callback_status(), VIP_SERVICE_RELIABLE_RECEPTION, and VIP_SEND_REQ::vip_vi_ptr. Referenced by vip_flush_fifo_send(), and vip_send_data(). |
1.4.4.