rxrpc: Move rxrpc_send_ACK() to output.c with rxrpc_send_ack_packet()
Move rxrpc_send_ACK() to output.c to so that it is with rxrpc_send_ack_packet() prior to merging the two. Signed-off-by: David Howells <dhowells@redhat.com> cc: Marc Dionne <marc.dionne@auristor.com> cc: "David S. Miller" <davem@davemloft.net> cc: Eric Dumazet <edumazet@google.com> cc: Jakub Kicinski <kuba@kernel.org> cc: Paolo Abeni <pabeni@redhat.com> cc: linux-afs@lists.infradead.org cc: netdev@vger.kernel.org
This commit is contained in:
parent
a1c9af4d44
commit
99afb28c67
|
@ -873,7 +873,6 @@ int rxrpc_user_charge_accept(struct rxrpc_sock *, unsigned long);
|
|||
*/
|
||||
void rxrpc_propose_ping(struct rxrpc_call *call, u32 serial,
|
||||
enum rxrpc_propose_ack_trace why);
|
||||
void rxrpc_send_ACK(struct rxrpc_call *, u8, rxrpc_serial_t, enum rxrpc_propose_ack_trace);
|
||||
void rxrpc_propose_delay_ACK(struct rxrpc_call *, rxrpc_serial_t,
|
||||
enum rxrpc_propose_ack_trace);
|
||||
void rxrpc_shrink_call_tx_buffer(struct rxrpc_call *);
|
||||
|
@ -1164,7 +1163,8 @@ static inline struct rxrpc_net *rxrpc_net(struct net *net)
|
|||
/*
|
||||
* output.c
|
||||
*/
|
||||
int rxrpc_send_ack_packet(struct rxrpc_call *call, struct rxrpc_txbuf *txb);
|
||||
void rxrpc_send_ACK(struct rxrpc_call *call, u8 ack_reason,
|
||||
rxrpc_serial_t serial, enum rxrpc_propose_ack_trace why);
|
||||
int rxrpc_send_abort_packet(struct rxrpc_call *);
|
||||
void rxrpc_send_conn_abort(struct rxrpc_connection *conn);
|
||||
void rxrpc_reject_packet(struct rxrpc_local *local, struct sk_buff *skb);
|
||||
|
|
|
@ -61,43 +61,6 @@ void rxrpc_propose_delay_ACK(struct rxrpc_call *call, rxrpc_serial_t serial,
|
|||
trace_rxrpc_propose_ack(call, why, RXRPC_ACK_DELAY, serial);
|
||||
}
|
||||
|
||||
/*
|
||||
* Queue an ACK for immediate transmission.
|
||||
*/
|
||||
void rxrpc_send_ACK(struct rxrpc_call *call, u8 ack_reason,
|
||||
rxrpc_serial_t serial, enum rxrpc_propose_ack_trace why)
|
||||
{
|
||||
struct rxrpc_txbuf *txb;
|
||||
|
||||
if (test_bit(RXRPC_CALL_DISCONNECTED, &call->flags))
|
||||
return;
|
||||
|
||||
rxrpc_inc_stat(call->rxnet, stat_tx_acks[ack_reason]);
|
||||
|
||||
txb = rxrpc_alloc_txbuf(call, RXRPC_PACKET_TYPE_ACK,
|
||||
rcu_read_lock_held() ? GFP_ATOMIC | __GFP_NOWARN : GFP_NOFS);
|
||||
if (!txb) {
|
||||
kleave(" = -ENOMEM");
|
||||
return;
|
||||
}
|
||||
|
||||
txb->ack_why = why;
|
||||
txb->wire.seq = 0;
|
||||
txb->wire.type = RXRPC_PACKET_TYPE_ACK;
|
||||
txb->flags |= RXRPC_SLOW_START_OK;
|
||||
txb->ack.bufferSpace = 0;
|
||||
txb->ack.maxSkew = 0;
|
||||
txb->ack.firstPacket = 0;
|
||||
txb->ack.previousPacket = 0;
|
||||
txb->ack.serial = htonl(serial);
|
||||
txb->ack.reason = ack_reason;
|
||||
txb->ack.nAcks = 0;
|
||||
|
||||
trace_rxrpc_send_ack(call, why, ack_reason, serial);
|
||||
rxrpc_send_ack_packet(call, txb);
|
||||
rxrpc_put_txbuf(txb, rxrpc_txbuf_put_ack_tx);
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle congestion being detected by the retransmit timeout.
|
||||
*/
|
||||
|
|
|
@ -185,7 +185,7 @@ static void rxrpc_cancel_rtt_probe(struct rxrpc_call *call,
|
|||
/*
|
||||
* Transmit an ACK packet.
|
||||
*/
|
||||
int rxrpc_send_ack_packet(struct rxrpc_call *call, struct rxrpc_txbuf *txb)
|
||||
static int rxrpc_send_ack_packet(struct rxrpc_call *call, struct rxrpc_txbuf *txb)
|
||||
{
|
||||
struct rxrpc_connection *conn;
|
||||
struct msghdr msg;
|
||||
|
@ -248,6 +248,43 @@ int rxrpc_send_ack_packet(struct rxrpc_call *call, struct rxrpc_txbuf *txb)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Queue an ACK for immediate transmission.
|
||||
*/
|
||||
void rxrpc_send_ACK(struct rxrpc_call *call, u8 ack_reason,
|
||||
rxrpc_serial_t serial, enum rxrpc_propose_ack_trace why)
|
||||
{
|
||||
struct rxrpc_txbuf *txb;
|
||||
|
||||
if (test_bit(RXRPC_CALL_DISCONNECTED, &call->flags))
|
||||
return;
|
||||
|
||||
rxrpc_inc_stat(call->rxnet, stat_tx_acks[ack_reason]);
|
||||
|
||||
txb = rxrpc_alloc_txbuf(call, RXRPC_PACKET_TYPE_ACK,
|
||||
rcu_read_lock_held() ? GFP_ATOMIC | __GFP_NOWARN : GFP_NOFS);
|
||||
if (!txb) {
|
||||
kleave(" = -ENOMEM");
|
||||
return;
|
||||
}
|
||||
|
||||
txb->ack_why = why;
|
||||
txb->wire.seq = 0;
|
||||
txb->wire.type = RXRPC_PACKET_TYPE_ACK;
|
||||
txb->flags |= RXRPC_SLOW_START_OK;
|
||||
txb->ack.bufferSpace = 0;
|
||||
txb->ack.maxSkew = 0;
|
||||
txb->ack.firstPacket = 0;
|
||||
txb->ack.previousPacket = 0;
|
||||
txb->ack.serial = htonl(serial);
|
||||
txb->ack.reason = ack_reason;
|
||||
txb->ack.nAcks = 0;
|
||||
|
||||
trace_rxrpc_send_ack(call, why, ack_reason, serial);
|
||||
rxrpc_send_ack_packet(call, txb);
|
||||
rxrpc_put_txbuf(txb, rxrpc_txbuf_put_ack_tx);
|
||||
}
|
||||
|
||||
/*
|
||||
* Send an ABORT call packet.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue