Skip to content

Commit 30df927

Browse files
committed
rxrpc: Separate call retransmission from other conn events
Call the rxrpc_conn_retransmit_call() directly from rxrpc_input_packet() rather than calling it via connection event handling. Signed-off-by: David Howells <[email protected]> cc: Marc Dionne <[email protected]> cc: [email protected]
1 parent 5040011 commit 30df927

File tree

3 files changed

+8
-30
lines changed

3 files changed

+8
-30
lines changed

net/rxrpc/ar-internal.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,8 @@ void rxrpc_clean_up_local_conns(struct rxrpc_local *);
897897
/*
898898
* conn_event.c
899899
*/
900+
void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn, struct sk_buff *skb,
901+
unsigned int channel);
900902
void rxrpc_process_connection(struct work_struct *);
901903
void rxrpc_process_delayed_final_acks(struct rxrpc_connection *, bool);
902904
int rxrpc_input_conn_packet(struct rxrpc_connection *conn, struct sk_buff *skb);

net/rxrpc/conn_event.c

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
/*
2020
* Retransmit terminal ACK or ABORT of the previous call.
2121
*/
22-
static void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
23-
struct sk_buff *skb,
24-
unsigned int channel)
22+
void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
23+
struct sk_buff *skb,
24+
unsigned int channel)
2525
{
2626
struct rxrpc_skb_priv *sp = skb ? rxrpc_skb(skb) : NULL;
2727
struct rxrpc_channel *chan;
@@ -292,24 +292,6 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,
292292
_enter("{%d},{%u,%%%u},", conn->debug_id, sp->hdr.type, sp->hdr.serial);
293293

294294
switch (sp->hdr.type) {
295-
case RXRPC_PACKET_TYPE_DATA:
296-
case RXRPC_PACKET_TYPE_ACK:
297-
rxrpc_conn_retransmit_call(conn, skb,
298-
sp->hdr.cid & RXRPC_CHANNELMASK);
299-
return 0;
300-
301-
case RXRPC_PACKET_TYPE_BUSY:
302-
/* Just ignore BUSY packets for now. */
303-
return 0;
304-
305-
case RXRPC_PACKET_TYPE_ABORT:
306-
conn->error = -ECONNABORTED;
307-
conn->abort_code = skb->priority;
308-
conn->state = RXRPC_CONN_REMOTELY_ABORTED;
309-
set_bit(RXRPC_CONN_DONT_REUSE, &conn->flags);
310-
rxrpc_abort_calls(conn, RXRPC_CALL_REMOTELY_ABORTED, sp->hdr.serial);
311-
return -ECONNABORTED;
312-
313295
case RXRPC_PACKET_TYPE_CHALLENGE:
314296
return conn->security->respond_to_challenge(conn, skb,
315297
_abort_code);
@@ -504,18 +486,12 @@ int rxrpc_input_conn_packet(struct rxrpc_connection *conn, struct sk_buff *skb)
504486

505487
if (conn->state >= RXRPC_CONN_REMOTELY_ABORTED) {
506488
_leave(" = -ECONNABORTED [%u]", conn->state);
507-
return -ECONNABORTED;
489+
return 0;
508490
}
509491

510492
_enter("{%d},{%u,%%%u},", conn->debug_id, sp->hdr.type, sp->hdr.serial);
511493

512494
switch (sp->hdr.type) {
513-
case RXRPC_PACKET_TYPE_DATA:
514-
case RXRPC_PACKET_TYPE_ACK:
515-
rxrpc_conn_retransmit_call(conn, skb,
516-
sp->hdr.cid & RXRPC_CHANNELMASK);
517-
return 0;
518-
519495
case RXRPC_PACKET_TYPE_BUSY:
520496
/* Just ignore BUSY packets for now. */
521497
return 0;
@@ -526,7 +502,7 @@ int rxrpc_input_conn_packet(struct rxrpc_connection *conn, struct sk_buff *skb)
526502
conn->state = RXRPC_CONN_REMOTELY_ABORTED;
527503
set_bit(RXRPC_CONN_DONT_REUSE, &conn->flags);
528504
rxrpc_abort_calls(conn, RXRPC_CALL_REMOTELY_ABORTED, sp->hdr.serial);
529-
return -ECONNABORTED;
505+
return 0;
530506

531507
case RXRPC_PACKET_TYPE_CHALLENGE:
532508
case RXRPC_PACKET_TYPE_RESPONSE:

net/rxrpc/io_thread.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ static int rxrpc_input_packet_on_conn(struct rxrpc_connection *conn,
358358
sp->hdr.seq,
359359
sp->hdr.serial,
360360
sp->hdr.flags);
361-
rxrpc_input_conn_packet(conn, skb);
361+
rxrpc_conn_retransmit_call(conn, skb, channel);
362362
return 0;
363363
}
364364

0 commit comments

Comments
 (0)