Commit 2e482655 authored by Alistair Francis's avatar Alistair Francis Committed by Keith Busch
Browse files

nvme: Use non zero KATO for persistent discovery connections



The NVMe Base Specification 2.1 states that:

"""
A host requests an explicit persistent connection ... by specifying a
non-zero Keep Alive Timer value in the Connect command.
"""

As such if we are starting a persistent connection to a discovery
controller and the KATO is currently 0 we need to update KATO to a non
zero value to avoid continuous timeouts on the target.

Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
parent 20015410
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -4991,8 +4991,14 @@ void nvme_start_ctrl(struct nvme_ctrl *ctrl)
	 * checking that they started once before, hence are reconnecting back.
	 */
	if (test_bit(NVME_CTRL_STARTED_ONCE, &ctrl->flags) &&
	    nvme_discovery_ctrl(ctrl))
	    nvme_discovery_ctrl(ctrl)) {
		if (!ctrl->kato) {
			nvme_stop_keep_alive(ctrl);
			ctrl->kato = NVME_DEFAULT_KATO;
			nvme_start_keep_alive(ctrl);
		}
		nvme_change_uevent(ctrl, "NVME_EVENT=rediscover");
	}

	if (ctrl->queue_count > 1) {
		nvme_queue_scan(ctrl);