|
@@ -915,23 +915,22 @@ splice_read_end:
|
|
return copied ? : err;
|
|
return copied ? : err;
|
|
}
|
|
}
|
|
|
|
|
|
-unsigned int tls_sw_poll(struct file *file, struct socket *sock,
|
|
|
|
- struct poll_table_struct *wait)
|
|
|
|
|
|
+__poll_t tls_sw_poll_mask(struct socket *sock, __poll_t events)
|
|
{
|
|
{
|
|
- unsigned int ret;
|
|
|
|
struct sock *sk = sock->sk;
|
|
struct sock *sk = sock->sk;
|
|
struct tls_context *tls_ctx = tls_get_ctx(sk);
|
|
struct tls_context *tls_ctx = tls_get_ctx(sk);
|
|
struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx);
|
|
struct tls_sw_context_rx *ctx = tls_sw_ctx_rx(tls_ctx);
|
|
|
|
+ __poll_t mask;
|
|
|
|
|
|
- /* Grab POLLOUT and POLLHUP from the underlying socket */
|
|
|
|
- ret = ctx->sk_poll(file, sock, wait);
|
|
|
|
|
|
+ /* Grab EPOLLOUT and EPOLLHUP from the underlying socket */
|
|
|
|
+ mask = ctx->sk_poll_mask(sock, events);
|
|
|
|
|
|
- /* Clear POLLIN bits, and set based on recv_pkt */
|
|
|
|
- ret &= ~(POLLIN | POLLRDNORM);
|
|
|
|
|
|
+ /* Clear EPOLLIN bits, and set based on recv_pkt */
|
|
|
|
+ mask &= ~(EPOLLIN | EPOLLRDNORM);
|
|
if (ctx->recv_pkt)
|
|
if (ctx->recv_pkt)
|
|
- ret |= POLLIN | POLLRDNORM;
|
|
|
|
|
|
+ mask |= EPOLLIN | EPOLLRDNORM;
|
|
|
|
|
|
- return ret;
|
|
|
|
|
|
+ return mask;
|
|
}
|
|
}
|
|
|
|
|
|
static int tls_read_size(struct strparser *strp, struct sk_buff *skb)
|
|
static int tls_read_size(struct strparser *strp, struct sk_buff *skb)
|
|
@@ -1188,7 +1187,7 @@ int tls_set_sw_offload(struct sock *sk, struct tls_context *ctx, int tx)
|
|
sk->sk_data_ready = tls_data_ready;
|
|
sk->sk_data_ready = tls_data_ready;
|
|
write_unlock_bh(&sk->sk_callback_lock);
|
|
write_unlock_bh(&sk->sk_callback_lock);
|
|
|
|
|
|
- sw_ctx_rx->sk_poll = sk->sk_socket->ops->poll;
|
|
|
|
|
|
+ sw_ctx_rx->sk_poll_mask = sk->sk_socket->ops->poll_mask;
|
|
|
|
|
|
strp_check_rcv(&sw_ctx_rx->strp);
|
|
strp_check_rcv(&sw_ctx_rx->strp);
|
|
}
|
|
}
|