.. | .. |
---|
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; |
---|