skd: Simplify the code for deciding whether or not to send a FIT msg
authorBart Van Assche <bart.vanassche@wdc.com>
Thu, 17 Aug 2017 20:13:05 +0000 (13:13 -0700)
committerJens Axboe <axboe@kernel.dk>
Fri, 18 Aug 2017 14:45:29 +0000 (08:45 -0600)
Due to the previous patch it is guaranteed that the FIT msg contains
at least one request after the for-loop has finished. Use this to
simplify the code.

Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/skd_main.c

index cbebaf4b08781ba5e610f390ea1ca006e0940c04..3fc6ec9477c7c80576297a98c20c43792091bf47 100644 (file)
@@ -693,36 +693,17 @@ static void skd_request_fn(struct request_queue *q)
                /*
                 * If the FIT msg buffer is full send it.
                 */
-               if (skmsg->length >= SKD_N_FITMSG_BYTES ||
-                   fmh->num_protocol_cmds_coalesced >= skd_max_req_per_msg) {
+               if (fmh->num_protocol_cmds_coalesced >= skd_max_req_per_msg) {
                        skd_send_fitmsg(skdev, skmsg);
                        skmsg = NULL;
                        fmh = NULL;
                }
        }
 
-       /*
-        * Is a FIT msg in progress? If it is empty put the buffer back
-        * on the free list. If it is non-empty send what we got.
-        * This minimizes latency when there are fewer requests than
-        * what fits in a FIT msg.
-        */
-       if (skmsg != NULL) {
-               /* Bigger than just a FIT msg header? */
-               if (skmsg->length > sizeof(struct fit_msg_hdr)) {
-                       dev_dbg(&skdev->pdev->dev, "sending msg=%p, len %d\n",
-                               skmsg, skmsg->length);
-                       skd_send_fitmsg(skdev, skmsg);
-               } else {
-                       /*
-                        * The FIT msg is empty. It means we got started
-                        * on the msg, but the requests were rejected.
-                        */
-                       skmsg->state = SKD_MSG_STATE_IDLE;
-                       skmsg->id += SKD_ID_INCR;
-                       skmsg->next = skdev->skmsg_free_list;
-                       skdev->skmsg_free_list = skmsg;
-               }
+       /* If the FIT msg buffer is not empty send what we got. */
+       if (skmsg) {
+               WARN_ON_ONCE(!fmh->num_protocol_cmds_coalesced);
+               skd_send_fitmsg(skdev, skmsg);
                skmsg = NULL;
                fmh = NULL;
        }