session_t *s;
transport_proto_vft_t *transport_vft;
transport_connection_t *tc;
+ transport_send_params_t sp;
u32 max_dequeue;
- u32 snd_space;
u32 left_to_snd;
- u32 tx_offset;
u32 max_len_to_snd;
u16 deq_per_first_buf;
u16 deq_per_buf;
- u16 snd_mss;
u16 n_segs_per_evt;
u8 n_bufs_per_seg;
CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
/** Session manager is enabled */
u8 is_enabled;
+ /** Enable session manager at startup */
+ u8 session_enable_asap;
/** vpp fifo event queue configured length */
u32 configured_event_queue_length;
return elt;
}
-always_inline u8
-session_is_valid (u32 si, u8 thread_index)
-{
- session_t *s;
- s = pool_elt_at_index (session_main.wrk[thread_index].sessions, si);
- if (s->session_state == SESSION_STATE_CLOSED)
- return 1;
-
- if (s->thread_index != thread_index || s->session_index != si)
- return 0;
- return 1;
-}
-
session_t *session_alloc (u32 thread_index);
void session_free (session_t * s);
void session_free_w_fifos (session_t * s);
+u8 session_is_valid (u32 si, u8 thread_index);
always_inline session_t *
session_get (u32 si, u32 thread_index)
void *rpc_args);
void session_add_self_custom_tx_evt (transport_connection_t * tc,
u8 has_prio);
+void sesssion_reschedule_tx (transport_connection_t * tc);
transport_connection_t *session_get_transport (session_t * s);
void session_get_endpoint (session_t * s, transport_endpoint_t * tep,
u8 is_lcl);
transport_rx_fifo_size (transport_connection_t * tc)
{
session_t *s = session_get (tc->s_index, tc->thread_index);
- return s->rx_fifo->nitems;
+ return svm_fifo_size (s->rx_fifo);
}
always_inline u32
transport_tx_fifo_size (transport_connection_t * tc)
{
session_t *s = session_get (tc->s_index, tc->thread_index);
- return s->tx_fifo->nitems;
+ return svm_fifo_size (s->tx_fifo);
}
always_inline u8
static inline session_worker_t *
session_main_get_worker_if_valid (u32 thread_index)
{
- if (pool_is_free_index (session_main.wrk, thread_index))
+ if (thread_index > vec_len (session_main.wrk))
return 0;
return &session_main.wrk[thread_index];
}
void session_node_enable_disable (u8 is_en);
clib_error_t *vnet_session_enable_disable (vlib_main_t * vm, u8 is_en);
+session_t *session_alloc_for_connection (transport_connection_t * tc);
+
#endif /* __included_session_h__ */
/*