]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
IB/sdp: improve urgent data latency
authorAmiram Perlmutter <amip@mellanox.co.il>
Sun, 10 Sep 2006 07:43:22 +0000 (10:43 +0300)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:03:59 +0000 (05:03 -0700)
Signed-off-by: Amiram Perlmutter <amip@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp_main.c

index d962cdd23fe3ca86ee0fbff1d2e7bf2f965355ec..64e55199af693bf2da94692ce22370bc07e49c42 100644 (file)
@@ -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)