From 88378ab45c7205ff9e74bdfa769e8fb14e8eb81d Mon Sep 17 00:00:00 2001 From: Amiram Perlmutter Date: Sun, 10 Sep 2006 10:43:22 +0300 Subject: [PATCH] IB/sdp: improve urgent data latency Signed-off-by: Amiram Perlmutter --- drivers/infiniband/ulp/sdp/sdp_main.c | 55 ++++++++++++++------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index d962cdd23fe3..64e55199af69 100644 --- a/drivers/infiniband/ulp/sdp/sdp_main.c +++ b/drivers/infiniband/ulp/sdp/sdp_main.c @@ -817,6 +817,33 @@ static int sdp_getsockopt(struct sock *sk, int level, int optname, return 0; } +static inline int poll_recv_cq(struct sock *sk) +{ + int i; + if (sdp_sk(sk)->cq) { + for (i = 0; i < recv_poll; ++i) + if (!sdp_poll_cq(sdp_sk(sk), sdp_sk(sk)->cq)) { + ++recv_poll_hit; + return 0; + } + ++recv_poll_miss; + } + return 1; +} + +static inline void poll_send_cq(struct sock *sk) +{ + int i; + if (sdp_sk(sk)->cq) { + for (i = 0; i < send_poll; ++i) + if (!sdp_poll_cq(sdp_sk(sk), sdp_sk(sk)->cq)) { + ++send_poll_hit; + return; + } + ++send_poll_miss; + } +} + /* Like tcp_recv_urg */ /* * Handle reading urgent data. BSD has very simple semantics for @@ -829,6 +856,8 @@ static int sdp_recv_urg(struct sock *sk, long timeo, { struct sdp_sock *ssk = sdp_sk(sk); + poll_recv_cq(sk); + /* No URG data to read. */ if (sock_flag(sk, SOCK_URGINLINE) || !ssk->urg_data || ssk->urg_data == TCP_URG_READ) @@ -924,32 +953,6 @@ void sdp_push_one(struct sock *sk, unsigned int mss_now) { } -static inline int poll_recv_cq(struct sock *sk) -{ - int i; - if (sdp_sk(sk)->cq) { - for (i = 0; i < recv_poll; ++i) - if (!sdp_poll_cq(sdp_sk(sk), sdp_sk(sk)->cq)) { - ++recv_poll_hit; - return 0; - } - ++recv_poll_miss; - } - return 1; -} - -static inline void poll_send_cq(struct sock *sk) -{ - int i; - if (sdp_sk(sk)->cq) { - for (i = 0; i < send_poll; ++i) - if (!sdp_poll_cq(sdp_sk(sk), sdp_sk(sk)->cq)) { - ++send_poll_hit; - return; - } - ++send_poll_miss; - } -} /* Like tcp_sendmsg */ /* TODO: check locking */ #define TCP_PAGE(sk) (sk->sk_sndmsg_page) -- 2.50.1