rxrpc: Keep the skb private record of the Rx header in host byte order
authorDavid Howells <dhowells@redhat.com>
Fri, 4 Mar 2016 15:53:46 +0000 (15:53 +0000)
committerDavid Howells <dhowells@redhat.com>
Fri, 4 Mar 2016 15:53:46 +0000 (15:53 +0000)
commit0d12f8a4027d021c9cc942f09f38d28288020c5d
tree751f54f93f15d9c0146cf2e4243dbfc25fd1cc6d
parent4c198ad17a7253cc8ef3ff39bfe73d6b5e65ceef
rxrpc: Keep the skb private record of the Rx header in host byte order

Currently, a copy of the Rx packet header is copied into the the sk_buff
private data so that we can advance the pointer into the buffer,
potentially discarding the original.  At the moment, this copy is held in
network byte order, but this means we're doing a lot of unnecessary
translations.

The reasons it was done this way are that we need the values in network
byte order occasionally and we can use the copy, slightly modified, as part
of an iov array when sending an ack or an abort packet.

However, it seems more reasonable on review that it would be better kept in
host byte order and that we make up a new header when we want to send
another packet.

To this end, rename the original header struct to rxrpc_wire_header (with
BE fields) and institute a variant called rxrpc_host_header that has host
order fields.  Change the struct in the sk_buff private data into an
rxrpc_host_header and translate the values when filling it in.

This further allows us to keep values kept in various structures in host
byte order rather than network byte order and allows removal of some fields
that are byteswapped duplicates.

Signed-off-by: David Howells <dhowells@redhat.com>
18 files changed:
include/rxrpc/packet.h
net/rxrpc/af_rxrpc.c
net/rxrpc/ar-accept.c
net/rxrpc/ar-ack.c
net/rxrpc/ar-call.c
net/rxrpc/ar-connection.c
net/rxrpc/ar-connevent.c
net/rxrpc/ar-input.c
net/rxrpc/ar-internal.h
net/rxrpc/ar-local.c
net/rxrpc/ar-output.c
net/rxrpc/ar-peer.c
net/rxrpc/ar-proc.c
net/rxrpc/ar-recvmsg.c
net/rxrpc/ar-security.c
net/rxrpc/ar-skbuff.c
net/rxrpc/ar-transport.c
net/rxrpc/rxkad.c