cmd.connect.kato = ctrl->opts->discovery_nqn ? 0 :
                cpu_to_le32((ctrl->kato + NVME_KATO_GRACE) * 1000);
 
+       if (ctrl->opts->disable_sqflow)
+               cmd.connect.cattr |= NVME_CONNECT_DISABLE_SQFLOW;
+
        data = kzalloc(sizeof(*data), GFP_KERNEL);
        if (!data)
                return -ENOMEM;
        cmd.connect.qid = cpu_to_le16(qid);
        cmd.connect.sqsize = cpu_to_le16(ctrl->sqsize);
 
+       if (ctrl->opts->disable_sqflow)
+               cmd.connect.cattr |= NVME_CONNECT_DISABLE_SQFLOW;
+
        data = kzalloc(sizeof(*data), GFP_KERNEL);
        if (!data)
                return -ENOMEM;
        { NVMF_OPT_HOST_TRADDR,         "host_traddr=%s"        },
        { NVMF_OPT_HOST_ID,             "hostid=%s"             },
        { NVMF_OPT_DUP_CONNECT,         "duplicate_connect"     },
+       { NVMF_OPT_DISABLE_SQFLOW,      "disable_sqflow"        },
        { NVMF_OPT_ERR,                 NULL                    }
 };
 
                case NVMF_OPT_DUP_CONNECT:
                        opts->duplicate_connect = true;
                        break;
+               case NVMF_OPT_DISABLE_SQFLOW:
+                       opts->disable_sqflow = true;
+                       break;
                default:
                        pr_warn("unknown parameter or missing value '%s' in ctrl creation request\n",
                                p);
 #define NVMF_REQUIRED_OPTS     (NVMF_OPT_TRANSPORT | NVMF_OPT_NQN)
 #define NVMF_ALLOWED_OPTS      (NVMF_OPT_QUEUE_SIZE | NVMF_OPT_NR_IO_QUEUES | \
                                 NVMF_OPT_KATO | NVMF_OPT_HOSTNQN | \
-                                NVMF_OPT_HOST_ID | NVMF_OPT_DUP_CONNECT)
+                                NVMF_OPT_HOST_ID | NVMF_OPT_DUP_CONNECT |\
+                                NVMF_OPT_DISABLE_SQFLOW)
 
 static struct nvme_ctrl *
 nvmf_create_ctrl(struct device *dev, const char *buf, size_t count)