Ping? On 23.03.22 09:58, Juergen Gross wrote: > The result field of struct vscsiif_response is lacking a detailed > definition. Today the Linux kernel internal scsi definitions are being > used, which is not a sane interface for a PV device driver. > > Add macros to change that by using today's values in the XEN namespace. > > Signed-off-by: Juergen Gross > --- > V2: > - put macro parameters in parentheses (Jan Beulich) > - correct XEN_VSCSIIF_RSLT_HOST() (Jan Beulich) > - more verbose result defines (Jan Beulich) > - add reset result defines (Jan Beulich) > --- > xen/include/public/io/vscsiif.h | 51 +++++++++++++++++++++++++++++++++ > 1 file changed, 51 insertions(+) > > diff --git a/xen/include/public/io/vscsiif.h b/xen/include/public/io/vscsiif.h > index c9ceb1884d..8553b17cc6 100644 > --- a/xen/include/public/io/vscsiif.h > +++ b/xen/include/public/io/vscsiif.h > @@ -315,6 +315,57 @@ struct vscsiif_response { > }; > typedef struct vscsiif_response vscsiif_response_t; > > +/* SCSI I/O status from vscsiif_response->rslt */ > +#define XEN_VSCSIIF_RSLT_STATUS(x) ((x) & 0x00ff) > + > +/* Host I/O status from vscsiif_response->rslt */ > +#define XEN_VSCSIIF_RSLT_HOST(x) (((x) & 0x00ff0000) >> 16) > +#define XEN_VSCSIIF_RSLT_HOST_OK 0 > +/* Couldn't connect before timeout */ > +#define XEN_VSCSIIF_RSLT_HOST_NO_CONNECT 1 > +/* Bus busy through timeout */ > +#define XEN_VSCSIIF_RSLT_HOST_BUS_BUSY 2 > +/* Timed out for other reason */ > +#define XEN_VSCSIIF_RSLT_HOST_TIME_OUT 3 > +/* Bad target */ > +#define XEN_VSCSIIF_RSLT_HOST_BAD_TARGET 4 > +/* Abort for some other reason */ > +#define XEN_VSCSIIF_RSLT_HOST_ABORT 5 > +/* Parity error */ > +#define XEN_VSCSIIF_RSLT_HOST_PARITY 6 > +/* Internal error */ > +#define XEN_VSCSIIF_RSLT_HOST_ERROR 7 > +/* Reset by somebody */ > +#define XEN_VSCSIIF_RSLT_HOST_RESET 8 > +/* Unexpected interrupt */ > +#define XEN_VSCSIIF_RSLT_HOST_BAD_INTR 9 > +/* Force command past mid-layer */ > +#define XEN_VSCSIIF_RSLT_HOST_PASSTHROUGH 10 > +/* Retry requested */ > +#define XEN_VSCSIIF_RSLT_HOST_SOFT_ERROR 11 > +/* Hidden retry requested */ > +#define XEN_VSCSIIF_RSLT_HOST_IMM_RETRY 12 > +/* Requeue command requested */ > +#define XEN_VSCSIIF_RSLT_HOST_REQUEUE 13 > +/* Transport error disrupted I/O */ > +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_DISRUPTED 14 > +/* Transport class fastfailed */ > +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_FAILFAST 15 > +/* Permanent target failure */ > +#define XEN_VSCSIIF_RSLT_HOST_TARGET_FAILURE 16 > +/* Permanent nexus failure on path */ > +#define XEN_VSCSIIF_RSLT_HOST_NEXUS_FAILURE 17 > +/* Space allocation on device failed */ > +#define XEN_VSCSIIF_RSLT_HOST_ALLOC_FAILURE 18 > +/* Medium error */ > +#define XEN_VSCSIIF_RSLT_HOST_MEDIUM_ERROR 19 > +/* Transport marginal errors */ > +#define XEN_VSCSIIF_RSLT_HOST_TRANSPORT_MARGINAL 20 > + > +/* Result values of reset operations */ > +#define XEN_VSCSIIF_RSLT_RESET_SUCCESS 0x2002 > +#define XEN_VSCSIIF_RSLT_RESET_FAILED 0x2003 > + > DEFINE_RING_TYPES(vscsiif, struct vscsiif_request, struct vscsiif_response); > >