History

rxrpc: Move DATA transmission into call processor work item

Move DATA transmission into the call processor work item. In a future patch, this will be called from the I/O thread rather than being itsown work item. This will allow DATA transmission to be driven directly by incoming ACKs, pokes and timers as those are processed. The Tx queue is also split: The queue of packets prepared by sendmsg is now places in call->tx_sendmsg and the packet dispatcher decants the packets into call->tx_buffer as space becomes available in the transmission window. This allows sendmsg to run ahead of the available space to try and prevent an underflow in transmission.

David Howells committed 4 years ago

Commit cf37b591 parent f3441d47 files · +161 −80Browse files

Showing the changes to include/trace (1 of 7 files). Show all

Unified · Split

include/trace/events/rxrpc.h+5−1
@@ -183,6 +183,7 @@ · 182 unmodified lines
183 EM(rxrpc_call_queue_requeue, "QUE requeue ") \183 EM(rxrpc_call_queue_requeue, "QUE requeue ") \
184 EM(rxrpc_call_queue_resend, "QUE resend ") \184 EM(rxrpc_call_queue_resend, "QUE resend ") \
185 EM(rxrpc_call_queue_timer, "QUE timer ") \185 EM(rxrpc_call_queue_timer, "QUE timer ") \
186 EM(rxrpc_call_queue_tx_data, "QUE tx-data ") \
186 EM(rxrpc_call_see_accept, "SEE accept ") \187 EM(rxrpc_call_see_accept, "SEE accept ") \
187 EM(rxrpc_call_see_activate_client, "SEE act-clnt") \188 EM(rxrpc_call_see_activate_client, "SEE act-clnt") \
188 EM(rxrpc_call_see_connect_failed, "SEE con-fail") \189 EM(rxrpc_call_see_connect_failed, "SEE con-fail") \
@@ -738,6 +739,7 @@ TRACE_EVENT(rxrpc_txqueue, · 549 unmodified lines
738 __field(rxrpc_seq_t, acks_hard_ack )739 __field(rxrpc_seq_t, acks_hard_ack )
739 __field(rxrpc_seq_t, tx_bottom )740 __field(rxrpc_seq_t, tx_bottom )
740 __field(rxrpc_seq_t, tx_top )741 __field(rxrpc_seq_t, tx_top )
742 __field(rxrpc_seq_t, tx_prepared )
741 __field(int, tx_winsize )743 __field(int, tx_winsize )
742 ),744 ),
743 745
@@ -747,16 +749,18 @@ TRACE_EVENT(rxrpc_txqueue, · 3 unmodified lines
747 __entry->acks_hard_ack = call->acks_hard_ack;749 __entry->acks_hard_ack = call->acks_hard_ack;
748 __entry->tx_bottom = call->tx_bottom;750 __entry->tx_bottom = call->tx_bottom;
749 __entry->tx_top = call->tx_top;751 __entry->tx_top = call->tx_top;
752 __entry->tx_prepared = call->tx_prepared;
750 __entry->tx_winsize = call->tx_winsize;753 __entry->tx_winsize = call->tx_winsize;
751 ),754 ),
752 755
753 TP_printk("c=%08x %s f=%08x h=%08x n=%u/%u/%u",756 TP_printk("c=%08x %s f=%08x h=%08x n=%u/%u/%u/%u",
754 __entry->call,757 __entry->call,
755 __print_symbolic(__entry->why, rxrpc_txqueue_traces),758 __print_symbolic(__entry->why, rxrpc_txqueue_traces),
756 __entry->tx_bottom,759 __entry->tx_bottom,
757 __entry->acks_hard_ack,760 __entry->acks_hard_ack,
758 __entry->tx_top - __entry->tx_bottom,761 __entry->tx_top - __entry->tx_bottom,
759 __entry->tx_top - __entry->acks_hard_ack,762 __entry->tx_top - __entry->acks_hard_ack,
763 __entry->tx_prepared - __entry->tx_bottom,
760 __entry->tx_winsize)764 __entry->tx_winsize)
761 );765 );
762 766