| .. | .. |
|---|
| 62 | 62 | static struct kmem_cache *rds_tcp_conn_slab; |
|---|
| 63 | 63 | |
|---|
| 64 | 64 | static int rds_tcp_skbuf_handler(struct ctl_table *ctl, int write, |
|---|
| 65 | | - void __user *buffer, size_t *lenp, |
|---|
| 66 | | - loff_t *fpos); |
|---|
| 65 | + void *buffer, size_t *lenp, loff_t *fpos); |
|---|
| 67 | 66 | |
|---|
| 68 | 67 | static int rds_tcp_min_sndbuf = SOCK_MIN_SNDBUF; |
|---|
| 69 | 68 | static int rds_tcp_min_rcvbuf = SOCK_MIN_RCVBUF; |
|---|
| .. | .. |
|---|
| 89 | 88 | }, |
|---|
| 90 | 89 | { } |
|---|
| 91 | 90 | }; |
|---|
| 92 | | - |
|---|
| 93 | | -/* doing it this way avoids calling tcp_sk() */ |
|---|
| 94 | | -void rds_tcp_nonagle(struct socket *sock) |
|---|
| 95 | | -{ |
|---|
| 96 | | - int val = 1; |
|---|
| 97 | | - |
|---|
| 98 | | - kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY, (void *)&val, |
|---|
| 99 | | - sizeof(val)); |
|---|
| 100 | | -} |
|---|
| 101 | 91 | |
|---|
| 102 | 92 | u32 rds_tcp_write_seq(struct rds_tcp_connection *tc) |
|---|
| 103 | 93 | { |
|---|
| .. | .. |
|---|
| 176 | 166 | */ |
|---|
| 177 | 167 | atomic_set(&cp->cp_state, RDS_CONN_RESETTING); |
|---|
| 178 | 168 | wait_event(cp->cp_waitq, !test_bit(RDS_IN_XMIT, &cp->cp_flags)); |
|---|
| 179 | | - lock_sock(osock->sk); |
|---|
| 180 | 169 | /* reset receive side state for rds_tcp_data_recv() for osock */ |
|---|
| 181 | 170 | cancel_delayed_work_sync(&cp->cp_send_w); |
|---|
| 182 | 171 | cancel_delayed_work_sync(&cp->cp_recv_w); |
|---|
| 172 | + lock_sock(osock->sk); |
|---|
| 183 | 173 | if (tc->t_tinc) { |
|---|
| 184 | 174 | rds_inc_put(&tc->t_tinc->ti_inc); |
|---|
| 185 | 175 | tc->t_tinc = NULL; |
|---|
| .. | .. |
|---|
| 267 | 257 | tsinfo.last_sent_nxt = tc->t_last_sent_nxt; |
|---|
| 268 | 258 | tsinfo.last_expected_una = tc->t_last_expected_una; |
|---|
| 269 | 259 | tsinfo.last_seen_una = tc->t_last_seen_una; |
|---|
| 260 | + tsinfo.tos = tc->t_cpath->cp_conn->c_tos; |
|---|
| 270 | 261 | |
|---|
| 271 | 262 | rds_info_copy(iter, &tsinfo, sizeof(tsinfo)); |
|---|
| 272 | 263 | } |
|---|
| .. | .. |
|---|
| 452 | 443 | |
|---|
| 453 | 444 | static void rds_tcp_exit(void); |
|---|
| 454 | 445 | |
|---|
| 446 | +static u8 rds_tcp_get_tos_map(u8 tos) |
|---|
| 447 | +{ |
|---|
| 448 | + /* all user tos mapped to default 0 for TCP transport */ |
|---|
| 449 | + return 0; |
|---|
| 450 | +} |
|---|
| 451 | + |
|---|
| 455 | 452 | struct rds_transport rds_tcp_transport = { |
|---|
| 456 | 453 | .laddr_check = rds_tcp_laddr_check, |
|---|
| 457 | 454 | .xmit_path_prepare = rds_tcp_xmit_path_prepare, |
|---|
| .. | .. |
|---|
| 466 | 463 | .inc_free = rds_tcp_inc_free, |
|---|
| 467 | 464 | .stats_info_copy = rds_tcp_stats_info_copy, |
|---|
| 468 | 465 | .exit = rds_tcp_exit, |
|---|
| 466 | + .get_tos_map = rds_tcp_get_tos_map, |
|---|
| 469 | 467 | .t_owner = THIS_MODULE, |
|---|
| 470 | 468 | .t_name = "tcp", |
|---|
| 471 | 469 | .t_type = RDS_TRANS_TCP, |
|---|
| .. | .. |
|---|
| 495 | 493 | struct net *net = sock_net(sk); |
|---|
| 496 | 494 | struct rds_tcp_net *rtn = net_generic(net, rds_tcp_netid); |
|---|
| 497 | 495 | |
|---|
| 498 | | - rds_tcp_nonagle(sock); |
|---|
| 496 | + tcp_sock_set_nodelay(sock->sk); |
|---|
| 499 | 497 | lock_sock(sk); |
|---|
| 500 | 498 | if (rtn->sndbuf_size > 0) { |
|---|
| 501 | 499 | sk->sk_sndbuf = rtn->sndbuf_size; |
|---|
| .. | .. |
|---|
| 543 | 541 | tbl = kmemdup(rds_tcp_sysctl_table, |
|---|
| 544 | 542 | sizeof(rds_tcp_sysctl_table), GFP_KERNEL); |
|---|
| 545 | 543 | if (!tbl) { |
|---|
| 546 | | - pr_warn("could not set allocate syctl table\n"); |
|---|
| 544 | + pr_warn("could not set allocate sysctl table\n"); |
|---|
| 547 | 545 | return -ENOMEM; |
|---|
| 548 | 546 | } |
|---|
| 549 | 547 | rtn->ctl_table = tbl; |
|---|
| .. | .. |
|---|
| 623 | 621 | if (rtn->rds_tcp_sysctl) |
|---|
| 624 | 622 | unregister_net_sysctl_table(rtn->rds_tcp_sysctl); |
|---|
| 625 | 623 | |
|---|
| 626 | | - if (net != &init_net && rtn->ctl_table) |
|---|
| 624 | + if (net != &init_net) |
|---|
| 627 | 625 | kfree(rtn->ctl_table); |
|---|
| 628 | 626 | } |
|---|
| 629 | 627 | |
|---|
| .. | .. |
|---|
| 668 | 666 | } |
|---|
| 669 | 667 | |
|---|
| 670 | 668 | static int rds_tcp_skbuf_handler(struct ctl_table *ctl, int write, |
|---|
| 671 | | - void __user *buffer, size_t *lenp, |
|---|
| 672 | | - loff_t *fpos) |
|---|
| 669 | + void *buffer, size_t *lenp, loff_t *fpos) |
|---|
| 673 | 670 | { |
|---|
| 674 | 671 | struct net *net = current->nsproxy->net_ns; |
|---|
| 675 | 672 | int err; |
|---|