summaryrefslogtreecommitdiff
path: root/sys/scsi
diff options
context:
space:
mode:
authorKenneth R Westerback <krw@cvs.openbsd.org>2020-09-12 15:54:52 +0000
committerKenneth R Westerback <krw@cvs.openbsd.org>2020-09-12 15:54:52 +0000
commit7c9904f6a86d5e2369b0d4dbb1c7efd2db001f14 (patch)
tree1928b58ffc264c63647c8e5706d94093f6cdc3fe /sys/scsi
parent53931b9a6a5b6ccd1d251ae2a72bb19097e86f5c (diff)
No need to ask for extra INQUIRY data, all available data is already cached in
scsi_link's inqdata.
Diffstat (limited to 'sys/scsi')
-rw-r--r--sys/scsi/safte.c41
-rw-r--r--sys/scsi/safte.h10
2 files changed, 6 insertions, 45 deletions
diff --git a/sys/scsi/safte.c b/sys/scsi/safte.c
index ec2ba51504f..bdc14f75f21 100644
--- a/sys/scsi/safte.c
+++ b/sys/scsi/safte.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: safte.c,v 1.62 2020/06/30 18:43:37 krw Exp $ */
+/* $OpenBSD: safte.c,v 1.63 2020/09/12 15:54:51 krw Exp $ */
/*
* Copyright (c) 2005 David Gwynne <dlg@openbsd.org>
@@ -108,12 +108,9 @@ int64_t safte_temp2uK(u_int8_t, int);
int
safte_match(struct device *parent, void *match, void *aux)
{
- struct scsi_inquiry_data *inqbuf;
struct scsi_attach_args *sa = aux;
struct scsi_inquiry_data *inq = &sa->sa_sc_link->inqdata;
- struct scsi_xfer *xs;
struct safte_inq *si;
- int error, flags = 0, length;
if (inq == NULL)
return 0;
@@ -128,43 +125,13 @@ safte_match(struct device *parent, void *match, void *aux)
SID_RESPONSE_FORMAT(inq) != 2)
return 0;
- length = inq->additional_length + SAFTE_EXTRA_OFFSET;
- if (length < SAFTE_INQ_LEN)
- return 0;
- if (length > sizeof(*inqbuf))
- length = sizeof(*inqbuf);
-
- inqbuf = dma_alloc(sizeof(*inqbuf), PR_NOWAIT | PR_ZERO);
- if (inqbuf == NULL)
+ if (inq->additional_length < SID_SCSI2_ALEN + sizeof(*si))
return 0;
- memset(inqbuf->extra, ' ', sizeof(inqbuf->extra));
-
- if (cold)
- SET(flags, SCSI_AUTOCONF);
- xs = scsi_xs_get(sa->sa_sc_link, flags | SCSI_DATA_IN);
- if (xs == NULL)
- goto fail;
-
- xs->retries = 2;
- xs->timeout = 10000;
-
- scsi_init_inquiry(xs, 0, 0, inqbuf, length);
-
- error = scsi_xs_sync(xs);
- scsi_xs_put(xs);
-
- if (error)
- goto fail;
-
- si = (struct safte_inq *)&inqbuf->extra;
- if (memcmp(si->ident, SAFTE_IDENT, sizeof(si->ident)) == 0) {
- dma_free(inqbuf, sizeof(*inqbuf));
+ si = (struct safte_inq *)&inq->extra;
+ if (memcmp(si->ident, SAFTE_IDENT, sizeof(si->ident)) == 0)
return 2;
- }
-fail:
- dma_free(inqbuf, sizeof(*inqbuf));
return 0;
}
diff --git a/sys/scsi/safte.h b/sys/scsi/safte.h
index f91f2afb339..d346110543b 100644
--- a/sys/scsi/safte.h
+++ b/sys/scsi/safte.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: safte.h,v 1.8 2019/09/27 23:07:42 krw Exp $ */
+/* $OpenBSD: safte.h,v 1.9 2020/09/12 15:54:51 krw Exp $ */
/*
* Copyright (c) 2005 David Gwynne <dlg@openbsd.org>
@@ -19,19 +19,13 @@
#ifndef _SCSI_SAFTE_H
#define _SCSI_SAFTE_H
-#define SAFTE_EXTRA_OFFSET 0x05
/* scsi_inquiry_data.extra */
struct safte_inq {
u_int8_t uniqueid[7];
u_int8_t chanid;
u_int8_t ident[6];
#define SAFTE_IDENT "SAF-TE"
- u_int8_t revision[4];
-#ifdef notyet
- u_int8_t reserved[2];
-#endif /* notyet */
-} __packed;
-#define SAFTE_INQ_LEN 54
+};
struct safte_readbuf_cmd {
u_int8_t opcode; /* READ_BUFFER */