Commit 85f32278 authored by David Howells's avatar David Howells

rxrpc: Replace conn->trans->{local,peer} with conn->params.{local,peer}

Replace accesses of conn->trans->{local,peer} with
conn->params.{local,peer} thus making it easier for a future commit to
remove the rxrpc_transport struct.

This also reduces the number of memory accesses involved.
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent 19ffa01c
...@@ -545,7 +545,7 @@ static void rxrpc_extract_ackinfo(struct rxrpc_call *call, struct sk_buff *skb, ...@@ -545,7 +545,7 @@ static void rxrpc_extract_ackinfo(struct rxrpc_call *call, struct sk_buff *skb,
mtu = min(ntohl(ackinfo.rxMTU), ntohl(ackinfo.maxMTU)); mtu = min(ntohl(ackinfo.rxMTU), ntohl(ackinfo.maxMTU));
peer = call->conn->trans->peer; peer = call->conn->params.peer;
if (mtu < peer->maxdata) { if (mtu < peer->maxdata) {
spin_lock_bh(&peer->lock); spin_lock_bh(&peer->lock);
peer->maxdata = mtu; peer->maxdata = mtu;
...@@ -836,8 +836,8 @@ void rxrpc_process_call(struct work_struct *work) ...@@ -836,8 +836,8 @@ void rxrpc_process_call(struct work_struct *work)
/* there's a good chance we're going to have to send a message, so set /* there's a good chance we're going to have to send a message, so set
* one up in advance */ * one up in advance */
msg.msg_name = &call->conn->trans->peer->srx.transport; msg.msg_name = &call->conn->params.peer->srx.transport;
msg.msg_namelen = call->conn->trans->peer->srx.transport_len; msg.msg_namelen = call->conn->params.peer->srx.transport_len;
msg.msg_control = NULL; msg.msg_control = NULL;
msg.msg_controllen = 0; msg.msg_controllen = 0;
msg.msg_flags = 0; msg.msg_flags = 0;
...@@ -1151,8 +1151,8 @@ void rxrpc_process_call(struct work_struct *work) ...@@ -1151,8 +1151,8 @@ void rxrpc_process_call(struct work_struct *work)
ack.maxSkew = htons(atomic_read(&call->conn->hi_serial) - ack.maxSkew = htons(atomic_read(&call->conn->hi_serial) -
ntohl(ack.serial)); ntohl(ack.serial));
send_ACK: send_ACK:
mtu = call->conn->trans->peer->if_mtu; mtu = call->conn->params.peer->if_mtu;
mtu -= call->conn->trans->peer->hdrsize; mtu -= call->conn->params.peer->hdrsize;
ackinfo.maxMTU = htonl(mtu); ackinfo.maxMTU = htonl(mtu);
ackinfo.rwind = htonl(rxrpc_rx_window_size); ackinfo.rwind = htonl(rxrpc_rx_window_size);
...@@ -1206,7 +1206,7 @@ void rxrpc_process_call(struct work_struct *work) ...@@ -1206,7 +1206,7 @@ void rxrpc_process_call(struct work_struct *work)
len += iov[1].iov_len; len += iov[1].iov_len;
} }
ret = kernel_sendmsg(call->conn->trans->local->socket, ret = kernel_sendmsg(call->conn->params.local->socket,
&msg, iov, ioc, len); &msg, iov, ioc, len);
if (ret < 0) { if (ret < 0) {
_debug("sendmsg failed: %d", ret); _debug("sendmsg failed: %d", ret);
......
...@@ -122,7 +122,7 @@ static void rxrpc_call_hash_add(struct rxrpc_call *call) ...@@ -122,7 +122,7 @@ static void rxrpc_call_hash_add(struct rxrpc_call *call)
key = rxrpc_call_hashfunc(call->in_clientflag, call->cid, key = rxrpc_call_hashfunc(call->in_clientflag, call->cid,
call->call_id, call->epoch, call->call_id, call->epoch,
call->service_id, call->family, call->service_id, call->family,
call->conn->trans->local, addr_size, call->conn->params.local, addr_size,
call->peer_ip.ipv6_addr); call->peer_ip.ipv6_addr);
/* Store the full key in the call */ /* Store the full key in the call */
call->hash_key = key; call->hash_key = key;
...@@ -320,11 +320,11 @@ static struct rxrpc_call *rxrpc_alloc_client_call( ...@@ -320,11 +320,11 @@ static struct rxrpc_call *rxrpc_alloc_client_call(
switch (call->family) { switch (call->family) {
case AF_INET: case AF_INET:
call->peer_ip.ipv4_addr = call->peer_ip.ipv4_addr =
trans->peer->srx.transport.sin.sin_addr.s_addr; call->conn->params.peer->srx.transport.sin.sin_addr.s_addr;
break; break;
case AF_INET6: case AF_INET6:
memcpy(call->peer_ip.ipv6_addr, memcpy(call->peer_ip.ipv6_addr,
trans->peer->srx.transport.sin6.sin6_addr.in6_u.u6_addr8, call->conn->params.peer->srx.transport.sin6.sin6_addr.in6_u.u6_addr8,
sizeof(call->peer_ip.ipv6_addr)); sizeof(call->peer_ip.ipv6_addr));
break; break;
} }
...@@ -334,9 +334,9 @@ static struct rxrpc_call *rxrpc_alloc_client_call( ...@@ -334,9 +334,9 @@ static struct rxrpc_call *rxrpc_alloc_client_call(
/* Add the new call to the hashtable */ /* Add the new call to the hashtable */
rxrpc_call_hash_add(call); rxrpc_call_hash_add(call);
spin_lock(&call->conn->trans->peer->lock); spin_lock(&call->conn->params.peer->lock);
hlist_add_head(&call->error_link, &call->conn->trans->peer->error_targets); hlist_add_head(&call->error_link, &call->conn->params.peer->error_targets);
spin_unlock(&call->conn->trans->peer->lock); spin_unlock(&call->conn->params.peer->lock);
call->lifetimer.expires = jiffies + rxrpc_max_call_lifetime; call->lifetimer.expires = jiffies + rxrpc_max_call_lifetime;
add_timer(&call->lifetimer); add_timer(&call->lifetimer);
...@@ -517,9 +517,9 @@ struct rxrpc_call *rxrpc_incoming_call(struct rxrpc_sock *rx, ...@@ -517,9 +517,9 @@ struct rxrpc_call *rxrpc_incoming_call(struct rxrpc_sock *rx,
atomic_inc(&conn->usage); atomic_inc(&conn->usage);
write_unlock_bh(&conn->lock); write_unlock_bh(&conn->lock);
spin_lock(&conn->trans->peer->lock); spin_lock(&conn->params.peer->lock);
hlist_add_head(&call->error_link, &conn->trans->peer->error_targets); hlist_add_head(&call->error_link, &conn->params.peer->error_targets);
spin_unlock(&conn->trans->peer->lock); spin_unlock(&conn->params.peer->lock);
write_lock_bh(&rxrpc_call_lock); write_lock_bh(&rxrpc_call_lock);
list_add_tail(&call->link, &rxrpc_calls); list_add_tail(&call->link, &rxrpc_calls);
...@@ -527,15 +527,15 @@ struct rxrpc_call *rxrpc_incoming_call(struct rxrpc_sock *rx, ...@@ -527,15 +527,15 @@ struct rxrpc_call *rxrpc_incoming_call(struct rxrpc_sock *rx,
/* Record copies of information for hashtable lookup */ /* Record copies of information for hashtable lookup */
call->family = rx->family; call->family = rx->family;
call->local = conn->trans->local; call->local = conn->params.local;
switch (call->family) { switch (call->family) {
case AF_INET: case AF_INET:
call->peer_ip.ipv4_addr = call->peer_ip.ipv4_addr =
conn->trans->peer->srx.transport.sin.sin_addr.s_addr; conn->params.peer->srx.transport.sin.sin_addr.s_addr;
break; break;
case AF_INET6: case AF_INET6:
memcpy(call->peer_ip.ipv6_addr, memcpy(call->peer_ip.ipv6_addr,
conn->trans->peer->srx.transport.sin6.sin6_addr.in6_u.u6_addr8, conn->params.peer->srx.transport.sin6.sin6_addr.in6_u.u6_addr8,
sizeof(call->peer_ip.ipv6_addr)); sizeof(call->peer_ip.ipv6_addr));
break; break;
default: default:
...@@ -813,9 +813,9 @@ static void rxrpc_cleanup_call(struct rxrpc_call *call) ...@@ -813,9 +813,9 @@ static void rxrpc_cleanup_call(struct rxrpc_call *call)
} }
if (call->conn) { if (call->conn) {
spin_lock(&call->conn->trans->peer->lock); spin_lock(&call->conn->params.peer->lock);
hlist_del_init(&call->error_link); hlist_del_init(&call->error_link);
spin_unlock(&call->conn->trans->peer->lock); spin_unlock(&call->conn->params.peer->lock);
write_lock_bh(&call->conn->lock); write_lock_bh(&call->conn->lock);
rb_erase(&call->conn_node, &call->conn->calls); rb_erase(&call->conn_node, &call->conn->calls);
......
...@@ -88,8 +88,8 @@ static int rxrpc_abort_connection(struct rxrpc_connection *conn, ...@@ -88,8 +88,8 @@ static int rxrpc_abort_connection(struct rxrpc_connection *conn,
rxrpc_abort_calls(conn, RXRPC_CALL_LOCALLY_ABORTED, abort_code); rxrpc_abort_calls(conn, RXRPC_CALL_LOCALLY_ABORTED, abort_code);
msg.msg_name = &conn->trans->peer->srx.transport; msg.msg_name = &conn->params.peer->srx.transport;
msg.msg_namelen = conn->trans->peer->srx.transport_len; msg.msg_namelen = conn->params.peer->srx.transport_len;
msg.msg_control = NULL; msg.msg_control = NULL;
msg.msg_controllen = 0; msg.msg_controllen = 0;
msg.msg_flags = 0; msg.msg_flags = 0;
...@@ -118,7 +118,7 @@ static int rxrpc_abort_connection(struct rxrpc_connection *conn, ...@@ -118,7 +118,7 @@ static int rxrpc_abort_connection(struct rxrpc_connection *conn,
whdr.serial = htonl(serial); whdr.serial = htonl(serial);
_proto("Tx CONN ABORT %%%u { %d }", serial, conn->local_abort); _proto("Tx CONN ABORT %%%u { %d }", serial, conn->local_abort);
ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len); ret = kernel_sendmsg(conn->params.local->socket, &msg, iov, 2, len);
if (ret < 0) { if (ret < 0) {
_debug("sendmsg failed: %d", ret); _debug("sendmsg failed: %d", ret);
return -EAGAIN; return -EAGAIN;
......
...@@ -560,7 +560,7 @@ static void rxrpc_post_packet_to_call(struct rxrpc_call *call, ...@@ -560,7 +560,7 @@ static void rxrpc_post_packet_to_call(struct rxrpc_call *call,
dead_call: dead_call:
if (sp->hdr.type != RXRPC_PACKET_TYPE_ABORT) { if (sp->hdr.type != RXRPC_PACKET_TYPE_ABORT) {
skb->priority = RX_CALL_DEAD; skb->priority = RX_CALL_DEAD;
rxrpc_reject_packet(call->conn->trans->local, skb); rxrpc_reject_packet(call->conn->params.local, skb);
goto unlock; goto unlock;
} }
free_unlock: free_unlock:
......
...@@ -583,7 +583,7 @@ static int rxrpc_send_data(struct rxrpc_sock *rx, ...@@ -583,7 +583,7 @@ static int rxrpc_send_data(struct rxrpc_sock *rx,
goto maybe_error; goto maybe_error;
} }
max = call->conn->trans->peer->maxdata; max = call->conn->params.peer->maxdata;
max -= call->conn->security_size; max -= call->conn->security_size;
max &= ~(call->conn->size_align - 1UL); max &= ~(call->conn->size_align - 1UL);
......
...@@ -46,7 +46,7 @@ static void rxrpc_call_seq_stop(struct seq_file *seq, void *v) ...@@ -46,7 +46,7 @@ static void rxrpc_call_seq_stop(struct seq_file *seq, void *v)
static int rxrpc_call_seq_show(struct seq_file *seq, void *v) static int rxrpc_call_seq_show(struct seq_file *seq, void *v)
{ {
struct rxrpc_transport *trans; struct rxrpc_connection *conn;
struct rxrpc_call *call; struct rxrpc_call *call;
char lbuff[4 + 4 + 4 + 4 + 5 + 1], rbuff[4 + 4 + 4 + 4 + 5 + 1]; char lbuff[4 + 4 + 4 + 4 + 5 + 1], rbuff[4 + 4 + 4 + 4 + 5 + 1];
...@@ -59,15 +59,15 @@ static int rxrpc_call_seq_show(struct seq_file *seq, void *v) ...@@ -59,15 +59,15 @@ static int rxrpc_call_seq_show(struct seq_file *seq, void *v)
} }
call = list_entry(v, struct rxrpc_call, link); call = list_entry(v, struct rxrpc_call, link);
trans = call->conn->trans; conn = call->conn;
sprintf(lbuff, "%pI4:%u", sprintf(lbuff, "%pI4:%u",
&trans->local->srx.transport.sin.sin_addr, &conn->params.local->srx.transport.sin.sin_addr,
ntohs(trans->local->srx.transport.sin.sin_port)); ntohs(conn->params.local->srx.transport.sin.sin_port));
sprintf(rbuff, "%pI4:%u", sprintf(rbuff, "%pI4:%u",
&trans->peer->srx.transport.sin.sin_addr, &conn->params.peer->srx.transport.sin.sin_addr,
ntohs(trans->peer->srx.transport.sin.sin_port)); ntohs(conn->params.peer->srx.transport.sin.sin_port));
seq_printf(seq, seq_printf(seq,
"UDP %-22.22s %-22.22s %4x %08x %08x %s %3u" "UDP %-22.22s %-22.22s %4x %08x %08x %s %3u"
...@@ -129,7 +129,6 @@ static void rxrpc_connection_seq_stop(struct seq_file *seq, void *v) ...@@ -129,7 +129,6 @@ static void rxrpc_connection_seq_stop(struct seq_file *seq, void *v)
static int rxrpc_connection_seq_show(struct seq_file *seq, void *v) static int rxrpc_connection_seq_show(struct seq_file *seq, void *v)
{ {
struct rxrpc_connection *conn; struct rxrpc_connection *conn;
struct rxrpc_transport *trans;
char lbuff[4 + 4 + 4 + 4 + 5 + 1], rbuff[4 + 4 + 4 + 4 + 5 + 1]; char lbuff[4 + 4 + 4 + 4 + 5 + 1], rbuff[4 + 4 + 4 + 4 + 5 + 1];
if (v == &rxrpc_connections) { if (v == &rxrpc_connections) {
...@@ -142,15 +141,14 @@ static int rxrpc_connection_seq_show(struct seq_file *seq, void *v) ...@@ -142,15 +141,14 @@ static int rxrpc_connection_seq_show(struct seq_file *seq, void *v)
} }
conn = list_entry(v, struct rxrpc_connection, link); conn = list_entry(v, struct rxrpc_connection, link);
trans = conn->trans;
sprintf(lbuff, "%pI4:%u", sprintf(lbuff, "%pI4:%u",
&trans->local->srx.transport.sin.sin_addr, &conn->params.local->srx.transport.sin.sin_addr,
ntohs(trans->local->srx.transport.sin.sin_port)); ntohs(conn->params.local->srx.transport.sin.sin_port));
sprintf(rbuff, "%pI4:%u", sprintf(rbuff, "%pI4:%u",
&trans->peer->srx.transport.sin.sin_addr, &conn->params.peer->srx.transport.sin.sin_addr,
ntohs(trans->peer->srx.transport.sin.sin_port)); ntohs(conn->params.peer->srx.transport.sin.sin_port));
seq_printf(seq, seq_printf(seq,
"UDP %-22.22s %-22.22s %4x %08x %08x %s %3u" "UDP %-22.22s %-22.22s %4x %08x %08x %s %3u"
......
...@@ -147,9 +147,9 @@ int rxrpc_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, ...@@ -147,9 +147,9 @@ int rxrpc_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
if (!continue_call) { if (!continue_call) {
if (msg->msg_name) { if (msg->msg_name) {
size_t len = size_t len =
sizeof(call->conn->trans->peer->srx); sizeof(call->conn->params.peer->srx);
memcpy(msg->msg_name, memcpy(msg->msg_name,
&call->conn->trans->peer->srx, len); &call->conn->params.peer->srx, len);
msg->msg_namelen = len; msg->msg_namelen = len;
} }
sock_recv_timestamp(msg, &rx->sk, skb); sock_recv_timestamp(msg, &rx->sk, skb);
......
...@@ -602,8 +602,8 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn) ...@@ -602,8 +602,8 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn)
challenge.min_level = htonl(0); challenge.min_level = htonl(0);
challenge.__padding = 0; challenge.__padding = 0;
msg.msg_name = &conn->trans->peer->srx.transport.sin; msg.msg_name = &conn->params.peer->srx.transport.sin;
msg.msg_namelen = sizeof(conn->trans->peer->srx.transport.sin); msg.msg_namelen = sizeof(conn->params.peer->srx.transport.sin);
msg.msg_control = NULL; msg.msg_control = NULL;
msg.msg_controllen = 0; msg.msg_controllen = 0;
msg.msg_flags = 0; msg.msg_flags = 0;
...@@ -630,7 +630,7 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn) ...@@ -630,7 +630,7 @@ static int rxkad_issue_challenge(struct rxrpc_connection *conn)
whdr.serial = htonl(serial); whdr.serial = htonl(serial);
_proto("Tx CHALLENGE %%%u", serial); _proto("Tx CHALLENGE %%%u", serial);
ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 2, len); ret = kernel_sendmsg(conn->params.local->socket, &msg, iov, 2, len);
if (ret < 0) { if (ret < 0) {
_debug("sendmsg failed: %d", ret); _debug("sendmsg failed: %d", ret);
return -EAGAIN; return -EAGAIN;
...@@ -657,8 +657,8 @@ static int rxkad_send_response(struct rxrpc_connection *conn, ...@@ -657,8 +657,8 @@ static int rxkad_send_response(struct rxrpc_connection *conn,
_enter(""); _enter("");
msg.msg_name = &conn->trans->peer->srx.transport.sin; msg.msg_name = &conn->params.peer->srx.transport.sin;
msg.msg_namelen = sizeof(conn->trans->peer->srx.transport.sin); msg.msg_namelen = sizeof(conn->params.peer->srx.transport.sin);
msg.msg_control = NULL; msg.msg_control = NULL;
msg.msg_controllen = 0; msg.msg_controllen = 0;
msg.msg_flags = 0; msg.msg_flags = 0;
...@@ -684,7 +684,7 @@ static int rxkad_send_response(struct rxrpc_connection *conn, ...@@ -684,7 +684,7 @@ static int rxkad_send_response(struct rxrpc_connection *conn,
whdr.serial = htonl(serial); whdr.serial = htonl(serial);
_proto("Tx RESPONSE %%%u", serial); _proto("Tx RESPONSE %%%u", serial);
ret = kernel_sendmsg(conn->trans->local->socket, &msg, iov, 3, len); ret = kernel_sendmsg(conn->params.local->socket, &msg, iov, 3, len);
if (ret < 0) { if (ret < 0) {
_debug("sendmsg failed: %d", ret); _debug("sendmsg failed: %d", ret);
return -EAGAIN; return -EAGAIN;
......
...@@ -113,7 +113,7 @@ int rxrpc_init_client_conn_security(struct rxrpc_connection *conn) ...@@ -113,7 +113,7 @@ int rxrpc_init_client_conn_security(struct rxrpc_connection *conn)
int rxrpc_init_server_conn_security(struct rxrpc_connection *conn) int rxrpc_init_server_conn_security(struct rxrpc_connection *conn)
{ {
const struct rxrpc_security *sec; const struct rxrpc_security *sec;
struct rxrpc_local *local = conn->trans->local; struct rxrpc_local *local = conn->params.local;
struct rxrpc_sock *rx; struct rxrpc_sock *rx;
struct key *key; struct key *key;
key_ref_t kref; key_ref_t kref;
......
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