|
@@ -63,6 +63,7 @@ static int rxrpc_call_seq_show(struct seq_file *seq, void *v)
|
|
|
struct rxrpc_peer *peer;
|
|
|
struct rxrpc_call *call;
|
|
|
struct rxrpc_net *rxnet = rxrpc_net(seq_file_net(seq));
|
|
|
+ unsigned long timeout = 0, nowj;
|
|
|
rxrpc_seq_t tx_hard_ack, rx_hard_ack;
|
|
|
char lbuff[50], rbuff[50];
|
|
|
|
|
@@ -71,7 +72,7 @@ static int rxrpc_call_seq_show(struct seq_file *seq, void *v)
|
|
|
"Proto Local "
|
|
|
" Remote "
|
|
|
" SvID ConnID CallID End Use State Abort "
|
|
|
- " UserID\n");
|
|
|
+ " UserID TxSeq TW RxSeq RW RxTimo\n");
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -94,11 +95,17 @@ static int rxrpc_call_seq_show(struct seq_file *seq, void *v)
|
|
|
else
|
|
|
strcpy(rbuff, "no_connection");
|
|
|
|
|
|
+ if (call->state != RXRPC_CALL_SERVER_PREALLOC) {
|
|
|
+ timeout = READ_ONCE(call->expect_rx_by);
|
|
|
+ nowj = jiffies;
|
|
|
+ timeout -= jiffies;
|
|
|
+ }
|
|
|
+
|
|
|
tx_hard_ack = READ_ONCE(call->tx_hard_ack);
|
|
|
rx_hard_ack = READ_ONCE(call->rx_hard_ack);
|
|
|
seq_printf(seq,
|
|
|
"UDP %-47.47s %-47.47s %4x %08x %08x %s %3u"
|
|
|
- " %-8.8s %08x %lx %08x %02x %08x %02x\n",
|
|
|
+ " %-8.8s %08x %lx %08x %02x %08x %02x %06lx\n",
|
|
|
lbuff,
|
|
|
rbuff,
|
|
|
call->service_id,
|
|
@@ -110,7 +117,8 @@ static int rxrpc_call_seq_show(struct seq_file *seq, void *v)
|
|
|
call->abort_code,
|
|
|
call->user_call_ID,
|
|
|
tx_hard_ack, READ_ONCE(call->tx_top) - tx_hard_ack,
|
|
|
- rx_hard_ack, READ_ONCE(call->rx_top) - rx_hard_ack);
|
|
|
+ rx_hard_ack, READ_ONCE(call->rx_top) - rx_hard_ack,
|
|
|
+ timeout);
|
|
|
|
|
|
return 0;
|
|
|
}
|