tcp: add tcp_sock_set_nodelay
Add a helper to directly set the TCP_NODELAY sockopt from kernel space without going through a fake uaccess. Cleanup the callers to avoid pointless wrappers now that this is a simple function call. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Sagi Grimberg <sagi@grimberg.me> Acked-by: Jason Gunthorpe <jgg@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
这个提交包含在:
@@ -1441,14 +1441,6 @@ static void o2net_rx_until_empty(struct work_struct *work)
|
||||
sc_put(sc);
|
||||
}
|
||||
|
||||
static int o2net_set_nodelay(struct socket *sock)
|
||||
{
|
||||
int val = 1;
|
||||
|
||||
return kernel_setsockopt(sock, SOL_TCP, TCP_NODELAY,
|
||||
(void *)&val, sizeof(val));
|
||||
}
|
||||
|
||||
static int o2net_set_usertimeout(struct socket *sock)
|
||||
{
|
||||
int user_timeout = O2NET_TCP_USER_TIMEOUT;
|
||||
@@ -1636,11 +1628,7 @@ static void o2net_start_connect(struct work_struct *work)
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = o2net_set_nodelay(sc->sc_sock);
|
||||
if (ret) {
|
||||
mlog(ML_ERROR, "setting TCP_NODELAY failed with %d\n", ret);
|
||||
goto out;
|
||||
}
|
||||
tcp_sock_set_nodelay(sc->sc_sock->sk);
|
||||
|
||||
ret = o2net_set_usertimeout(sock);
|
||||
if (ret) {
|
||||
@@ -1832,11 +1820,7 @@ static int o2net_accept_one(struct socket *sock, int *more)
|
||||
*more = 1;
|
||||
new_sock->sk->sk_allocation = GFP_ATOMIC;
|
||||
|
||||
ret = o2net_set_nodelay(new_sock);
|
||||
if (ret) {
|
||||
mlog(ML_ERROR, "setting TCP_NODELAY failed with %d\n", ret);
|
||||
goto out;
|
||||
}
|
||||
tcp_sock_set_nodelay(new_sock->sk);
|
||||
|
||||
ret = o2net_set_usertimeout(new_sock);
|
||||
if (ret) {
|
||||
|
在新工单中引用
屏蔽一个用户