diff options
Diffstat (limited to 'net/rds/send.c')
-rw-r--r-- | net/rds/send.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/rds/send.c b/net/rds/send.c index c555e121b908..166dd578c1cc 100644 --- a/net/rds/send.c +++ b/net/rds/send.c | |||
@@ -1277,12 +1277,13 @@ int rds_sendmsg(struct socket *sock, struct msghdr *msg, size_t payload_len) | |||
1277 | 1277 | ||
1278 | /* rds_conn_create has a spinlock that runs with IRQ off. | 1278 | /* rds_conn_create has a spinlock that runs with IRQ off. |
1279 | * Caching the conn in the socket helps a lot. */ | 1279 | * Caching the conn in the socket helps a lot. */ |
1280 | if (rs->rs_conn && ipv6_addr_equal(&rs->rs_conn->c_faddr, &daddr)) { | 1280 | if (rs->rs_conn && ipv6_addr_equal(&rs->rs_conn->c_faddr, &daddr) && |
1281 | rs->rs_tos == rs->rs_conn->c_tos) { | ||
1281 | conn = rs->rs_conn; | 1282 | conn = rs->rs_conn; |
1282 | } else { | 1283 | } else { |
1283 | conn = rds_conn_create_outgoing(sock_net(sock->sk), | 1284 | conn = rds_conn_create_outgoing(sock_net(sock->sk), |
1284 | &rs->rs_bound_addr, &daddr, | 1285 | &rs->rs_bound_addr, &daddr, |
1285 | rs->rs_transport, 0, | 1286 | rs->rs_transport, rs->rs_tos, |
1286 | sock->sk->sk_allocation, | 1287 | sock->sk->sk_allocation, |
1287 | scope_id); | 1288 | scope_id); |
1288 | if (IS_ERR(conn)) { | 1289 | if (IS_ERR(conn)) { |