]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sdp: make bzcopy poll timeout in jiffies instead of iterations count
authorAmir Vadai <amirv@mellanox.co.il>
Thu, 4 Jun 2009 10:52:34 +0000 (13:52 +0300)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:04:31 +0000 (05:04 -0700)
Signed-off-by: Amir Vadai <amirv@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp.h
drivers/infiniband/ulp/sdp/sdp_main.c

index 41a9f1c38ac933bf6a0b2237f95dc0313991be3b..5d3e7d727e2468e63ccec88e88dd43f3847e28d6 100644 (file)
@@ -10,8 +10,8 @@
 
 #undef SDPSTATS_ON
 #undef SDP_PROFILING
-#undef CONFIG_INFINIBAND_SDP_DEBUG_DATA
-#undef CONFIG_INFINIBAND_SDP_DEBUG
+//#undef CONFIG_INFINIBAND_SDP_DEBUG_DATA
+//#undef CONFIG_INFINIBAND_SDP_DEBUG
 
 #define SDPSTATS_ON
 //#define SDP_PROFILING
@@ -235,6 +235,9 @@ static inline void sdpstats_hist(u32 *h, u32 val, u32 maxidx, int is_log)
 #define SDP_OP_RECV 0x800000000LL
 #define SDP_OP_SEND 0x400000000LL
 
+/* how long (in jiffies) to block sender till tx completion*/
+#define SDP_BZCOPY_POLL_TIMEOUT (HZ / 10)
+
 #define BZCOPY_STATE(skb) (*(struct bzcopy_state **)(skb->cb))
 #ifndef MIN
 #define MIN(a, b) (a < b ? a : b)
index 55e1b127085c937b9c540d014377af38734ebc35..64511fea03cb6b7d9dc89585817afe16149e8a4f 100644 (file)
@@ -91,16 +91,6 @@ module_param_named(data_debug_level, sdp_data_debug_level, int, 0644);
 MODULE_PARM_DESC(data_debug_level, "Enable data path debug tracing if > 0.");
 #endif
 
-static int send_poll_hit;
-
-module_param_named(send_poll_hit, send_poll_hit, int, 0644);
-MODULE_PARM_DESC(send_poll_hit, "How many times send poll helped.");
-
-static int send_poll_miss;
-
-module_param_named(send_poll_miss, send_poll_miss, int, 0644);
-MODULE_PARM_DESC(send_poll_miss, "How many times send poll missed.");
-
 static int recv_poll_hit;
 
 module_param_named(recv_poll_hit, recv_poll_hit, int, 0644);
@@ -111,21 +101,11 @@ static int recv_poll_miss;
 module_param_named(recv_poll_miss, recv_poll_miss, int, 0644);
 MODULE_PARM_DESC(recv_poll_miss, "How many times recv poll missed.");
 
-static int send_poll = 100;
-
-module_param_named(send_poll, send_poll, int, 0644);
-MODULE_PARM_DESC(send_poll, "How many times to poll send.");
-
 static int recv_poll = 1000;
 
 module_param_named(recv_poll, recv_poll, int, 0644);
 MODULE_PARM_DESC(recv_poll, "How many times to poll recv.");
 
-static int send_poll_thresh = 8192;
-
-module_param_named(send_poll_thresh, send_poll_thresh, int, 0644);
-MODULE_PARM_DESC(send_poll_thresh, "Send message size thresh hold over which to start polling.");
-
 static unsigned int sdp_keepalive_time = SDP_KEEPALIVE_TIME;
 
 module_param_named(sdp_keepalive_time, sdp_keepalive_time, uint, 0644);
@@ -1143,19 +1123,6 @@ static inline int poll_recv_cq(struct sock *sk)
        return 1;
 }
 
-static inline void poll_send_cq(struct sock *sk)
-{
-       int i;
-       if (sdp_sk(sk)->tx_ring.cq) {
-               for (i = 0; i < send_poll; ++i)
-                       if (sdp_xmit_poll(sdp_sk(sk), 1)) {
-                               ++send_poll_hit;
-                               return;
-                       }
-               ++send_poll_miss;
-       }
-}
-
 /* Like tcp_recv_urg */
 /*
  *     Handle reading urgent data. BSD has very simple semantics for
@@ -1240,19 +1207,18 @@ static inline void skb_entail(struct sock *sk, struct sdp_sock *ssk,
 
 static inline struct bzcopy_state *sdp_bz_cleanup(struct bzcopy_state *bz)
 {
-       int i, max_retry;
+       int i;
        struct sdp_sock *ssk = (struct sdp_sock *)bz->ssk;
 
        /* Wait for in-flight sends; should be quick */
        if (bz->busy) {
                struct sock *sk = &ssk->isk.sk;
+               unsigned long timeout = jiffies + SDP_BZCOPY_POLL_TIMEOUT;
 
-               for (max_retry = 0; max_retry < 10000; max_retry++) {
-                       poll_send_cq(sk);
-
+               while (jiffies < timeout) {
+                       sdp_xmit_poll(sdp_sk(sk), 1);
                        if (!bz->busy)
                                break;
-
                        SDPSTATS_COUNTER_INC(bzcopy_poll_miss);
                }