Commit 4f546149 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

SUNRPC: Clean up xs_udp_data_receive()



Simplify the retry logic.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 550aebfe
Loading
Loading
Loading
Loading
+5 −12
Original line number Diff line number Diff line
@@ -1344,25 +1344,18 @@ static void xs_udp_data_receive(struct sock_xprt *transport)
	struct sock *sk;
	int err;

restart:
	mutex_lock(&transport->recv_mutex);
	sk = transport->inet;
	if (sk == NULL)
		goto out;
	clear_bit(XPRT_SOCK_DATA_READY, &transport->sock_state);
	for (;;) {
		skb = skb_recv_udp(sk, 0, 1, &err);
		if (skb != NULL) {
		if (skb == NULL)
			break;
		xs_udp_data_read_skb(&transport->xprt, sk, skb);
		consume_skb(skb);
			continue;
		}
		if (!test_and_clear_bit(XPRT_SOCK_DATA_READY, &transport->sock_state))
			break;
		if (need_resched()) {
			mutex_unlock(&transport->recv_mutex);
		cond_resched();
			goto restart;
		}
	}
out:
	mutex_unlock(&transport->recv_mutex);