Commit 17469ae0 authored by David Howells's avatar David Howells

rxrpc: Fix the names of the fields in the ACK trailer struct

From AFS-3.3 a trailer containing extra info was added to the ACK packet
format - but AF_RXRPC has the names of some of the fields mixed up compared
to other AFS implementations.

Rename the struct and the fields to make them match.
Signed-off-by: default avatarDavid 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
parent 41b8debb
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
EM(rxrpc_badmsg_bad_abort, "bad-abort") \ EM(rxrpc_badmsg_bad_abort, "bad-abort") \
EM(rxrpc_badmsg_bad_jumbo, "bad-jumbo") \ EM(rxrpc_badmsg_bad_jumbo, "bad-jumbo") \
EM(rxrpc_badmsg_short_ack, "short-ack") \ EM(rxrpc_badmsg_short_ack, "short-ack") \
EM(rxrpc_badmsg_short_ack_info, "short-ack-info") \ EM(rxrpc_badmsg_short_ack_trailer, "short-ack-trailer") \
EM(rxrpc_badmsg_short_hdr, "short-hdr") \ EM(rxrpc_badmsg_short_hdr, "short-hdr") \
EM(rxrpc_badmsg_unsupported_packet, "unsup-pkt") \ EM(rxrpc_badmsg_unsupported_packet, "unsup-pkt") \
EM(rxrpc_badmsg_zero_call, "zero-call") \ EM(rxrpc_badmsg_zero_call, "zero-call") \
......
...@@ -88,7 +88,7 @@ void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn, ...@@ -88,7 +88,7 @@ void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
struct rxrpc_ackpacket ack; struct rxrpc_ackpacket ack;
}; };
} __attribute__((packed)) pkt; } __attribute__((packed)) pkt;
struct rxrpc_ackinfo ack_info; struct rxrpc_acktrailer trailer;
size_t len; size_t len;
int ret, ioc; int ret, ioc;
u32 serial, mtu, call_id, padding; u32 serial, mtu, call_id, padding;
...@@ -122,8 +122,8 @@ void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn, ...@@ -122,8 +122,8 @@ void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
iov[0].iov_len = sizeof(pkt.whdr); iov[0].iov_len = sizeof(pkt.whdr);
iov[1].iov_base = &padding; iov[1].iov_base = &padding;
iov[1].iov_len = 3; iov[1].iov_len = 3;
iov[2].iov_base = &ack_info; iov[2].iov_base = &trailer;
iov[2].iov_len = sizeof(ack_info); iov[2].iov_len = sizeof(trailer);
serial = rxrpc_get_next_serial(conn); serial = rxrpc_get_next_serial(conn);
...@@ -158,14 +158,14 @@ void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn, ...@@ -158,14 +158,14 @@ void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
pkt.ack.serial = htonl(skb ? sp->hdr.serial : 0); pkt.ack.serial = htonl(skb ? sp->hdr.serial : 0);
pkt.ack.reason = skb ? RXRPC_ACK_DUPLICATE : RXRPC_ACK_IDLE; pkt.ack.reason = skb ? RXRPC_ACK_DUPLICATE : RXRPC_ACK_IDLE;
pkt.ack.nAcks = 0; pkt.ack.nAcks = 0;
ack_info.rxMTU = htonl(rxrpc_rx_mtu); trailer.maxMTU = htonl(rxrpc_rx_mtu);
ack_info.maxMTU = htonl(mtu); trailer.ifMTU = htonl(mtu);
ack_info.rwind = htonl(rxrpc_rx_window_size); trailer.rwind = htonl(rxrpc_rx_window_size);
ack_info.jumbo_max = htonl(rxrpc_rx_jumbo_max); trailer.jumbo_max = htonl(rxrpc_rx_jumbo_max);
pkt.whdr.flags |= RXRPC_SLOW_START_OK; pkt.whdr.flags |= RXRPC_SLOW_START_OK;
padding = 0; padding = 0;
iov[0].iov_len += sizeof(pkt.ack); iov[0].iov_len += sizeof(pkt.ack);
len += sizeof(pkt.ack) + 3 + sizeof(ack_info); len += sizeof(pkt.ack) + 3 + sizeof(trailer);
ioc = 3; ioc = 3;
trace_rxrpc_tx_ack(chan->call_debug_id, serial, trace_rxrpc_tx_ack(chan->call_debug_id, serial,
......
...@@ -670,14 +670,14 @@ static void rxrpc_complete_rtt_probe(struct rxrpc_call *call, ...@@ -670,14 +670,14 @@ static void rxrpc_complete_rtt_probe(struct rxrpc_call *call,
/* /*
* Process the extra information that may be appended to an ACK packet * Process the extra information that may be appended to an ACK packet
*/ */
static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb, static void rxrpc_input_ack_trailer(struct rxrpc_call *call, struct sk_buff *skb,
struct rxrpc_ackinfo *ackinfo) struct rxrpc_acktrailer *trailer)
{ {
struct rxrpc_skb_priv *sp = rxrpc_skb(skb); struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
struct rxrpc_peer *peer; struct rxrpc_peer *peer;
unsigned int mtu; unsigned int mtu;
bool wake = false; bool wake = false;
u32 rwind = ntohl(ackinfo->rwind); u32 rwind = ntohl(trailer->rwind);
if (rwind > RXRPC_TX_MAX_WINDOW) if (rwind > RXRPC_TX_MAX_WINDOW)
rwind = RXRPC_TX_MAX_WINDOW; rwind = RXRPC_TX_MAX_WINDOW;
...@@ -691,7 +691,7 @@ static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb, ...@@ -691,7 +691,7 @@ static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb,
if (call->cong_ssthresh > rwind) if (call->cong_ssthresh > rwind)
call->cong_ssthresh = rwind; call->cong_ssthresh = rwind;
mtu = min(ntohl(ackinfo->rxMTU), ntohl(ackinfo->maxMTU)); mtu = min(ntohl(trailer->maxMTU), ntohl(trailer->ifMTU));
peer = call->peer; peer = call->peer;
if (mtu < peer->maxdata) { if (mtu < peer->maxdata) {
...@@ -837,7 +837,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb) ...@@ -837,7 +837,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
struct rxrpc_ack_summary summary = { 0 }; struct rxrpc_ack_summary summary = { 0 };
struct rxrpc_ackpacket ack; struct rxrpc_ackpacket ack;
struct rxrpc_skb_priv *sp = rxrpc_skb(skb); struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
struct rxrpc_ackinfo info; struct rxrpc_acktrailer trailer;
rxrpc_serial_t ack_serial, acked_serial; rxrpc_serial_t ack_serial, acked_serial;
rxrpc_seq_t first_soft_ack, hard_ack, prev_pkt, since; rxrpc_seq_t first_soft_ack, hard_ack, prev_pkt, since;
int nr_acks, offset, ioffset; int nr_acks, offset, ioffset;
...@@ -917,11 +917,11 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb) ...@@ -917,11 +917,11 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
goto send_response; goto send_response;
} }
info.rxMTU = 0; trailer.maxMTU = 0;
ioffset = offset + nr_acks + 3; ioffset = offset + nr_acks + 3;
if (skb->len >= ioffset + sizeof(info) && if (skb->len >= ioffset + sizeof(trailer) &&
skb_copy_bits(skb, ioffset, &info, sizeof(info)) < 0) skb_copy_bits(skb, ioffset, &trailer, sizeof(trailer)) < 0)
return rxrpc_proto_abort(call, 0, rxrpc_badmsg_short_ack_info); return rxrpc_proto_abort(call, 0, rxrpc_badmsg_short_ack_trailer);
if (nr_acks > 0) if (nr_acks > 0)
skb_condense(skb); skb_condense(skb);
...@@ -950,8 +950,8 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb) ...@@ -950,8 +950,8 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
} }
/* Parse rwind and mtu sizes if provided. */ /* Parse rwind and mtu sizes if provided. */
if (info.rxMTU) if (trailer.maxMTU)
rxrpc_input_ackinfo(call, skb, &info); rxrpc_input_ack_trailer(call, skb, &trailer);
if (first_soft_ack == 0) if (first_soft_ack == 0)
return rxrpc_proto_abort(call, 0, rxrpc_eproto_ackr_zero); return rxrpc_proto_abort(call, 0, rxrpc_eproto_ackr_zero);
......
...@@ -83,7 +83,7 @@ static size_t rxrpc_fill_out_ack(struct rxrpc_connection *conn, ...@@ -83,7 +83,7 @@ static size_t rxrpc_fill_out_ack(struct rxrpc_connection *conn,
struct rxrpc_txbuf *txb, struct rxrpc_txbuf *txb,
u16 *_rwind) u16 *_rwind)
{ {
struct rxrpc_ackinfo ackinfo; struct rxrpc_acktrailer trailer;
unsigned int qsize, sack, wrap, to; unsigned int qsize, sack, wrap, to;
rxrpc_seq_t window, wtop; rxrpc_seq_t window, wtop;
int rsize; int rsize;
...@@ -126,16 +126,16 @@ static size_t rxrpc_fill_out_ack(struct rxrpc_connection *conn, ...@@ -126,16 +126,16 @@ static size_t rxrpc_fill_out_ack(struct rxrpc_connection *conn,
qsize = (window - 1) - call->rx_consumed; qsize = (window - 1) - call->rx_consumed;
rsize = max_t(int, call->rx_winsize - qsize, 0); rsize = max_t(int, call->rx_winsize - qsize, 0);
*_rwind = rsize; *_rwind = rsize;
ackinfo.rxMTU = htonl(rxrpc_rx_mtu); trailer.maxMTU = htonl(rxrpc_rx_mtu);
ackinfo.maxMTU = htonl(mtu); trailer.ifMTU = htonl(mtu);
ackinfo.rwind = htonl(rsize); trailer.rwind = htonl(rsize);
ackinfo.jumbo_max = htonl(jmax); trailer.jumbo_max = htonl(jmax);
*ackp++ = 0; *ackp++ = 0;
*ackp++ = 0; *ackp++ = 0;
*ackp++ = 0; *ackp++ = 0;
memcpy(ackp, &ackinfo, sizeof(ackinfo)); memcpy(ackp, &trailer, sizeof(trailer));
return txb->ack.nAcks + 3 + sizeof(ackinfo); return txb->ack.nAcks + 3 + sizeof(trailer);
} }
/* /*
......
...@@ -135,9 +135,9 @@ struct rxrpc_ackpacket { ...@@ -135,9 +135,9 @@ struct rxrpc_ackpacket {
/* /*
* ACK packets can have a further piece of information tagged on the end * ACK packets can have a further piece of information tagged on the end
*/ */
struct rxrpc_ackinfo { struct rxrpc_acktrailer {
__be32 rxMTU; /* maximum Rx MTU size (bytes) [AFS 3.3] */ __be32 maxMTU; /* maximum Rx MTU size (bytes) [AFS 3.3] */
__be32 maxMTU; /* maximum interface MTU size (bytes) [AFS 3.3] */ __be32 ifMTU; /* maximum interface MTU size (bytes) [AFS 3.3] */
__be32 rwind; /* Rx window size (packets) [AFS 3.4] */ __be32 rwind; /* Rx window size (packets) [AFS 3.4] */
__be32 jumbo_max; /* max packets to stick into a jumbo packet [AFS 3.5] */ __be32 jumbo_max; /* max packets to stick into a jumbo packet [AFS 3.5] */
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment