NULL,
 };
 
+static inline bool nvme_discovery_ctrl(struct nvme_ctrl *ctrl)
+{
+       return ctrl->opts && ctrl->opts->discovery_nqn;
+}
+
 static bool nvme_validate_cntlid(struct nvme_subsystem *subsys,
                struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id)
 {
                }
 
                if ((id->cmic & NVME_CTRL_CMIC_MULTI_CTRL) ||
-                   (ctrl->opts && ctrl->opts->discovery_nqn))
+                   nvme_discovery_ctrl(ctrl))
                        continue;
 
                dev_err(ctrl->device,
                        goto out_free;
                }
 
-               if (!ctrl->opts->discovery_nqn && !ctrl->kas) {
+               if (!nvme_discovery_ctrl(ctrl) && !ctrl->kas) {
                        dev_err(ctrl->device,
                                "keep-alive support is mandatory for fabrics\n");
                        ret = -EINVAL;
        if (ret < 0)
                return ret;
 
-       if (!ctrl->identified) {
+       if (!ctrl->identified && !nvme_discovery_ctrl(ctrl)) {
                ret = nvme_hwmon_init(ctrl);
                if (ret < 0)
                        return ret;