sbp_status
sbp_scsi_status(struct sbp_status *sbp_status, struct sbp_ocb *ocb)
sbp_cmd_status = (struct sbp_cmd_status *)sbp_status->data;
sbp_status->len);
if (sbp_status->len <= 1)
else if (sbp_status->len <= 4)
struct sbp_status *sbp_status;
sbp_status = (struct sbp_status *)xfer->recv.payload;
switch (sbp_status->src) {
if (OCB_MATCH(ocb, sbp_status)) {
ocb = sbp_dequeue_ocb(sdev, sbp_status);
ntohl(sbp_status->orb_lo));
status_valid0 = (sbp_status->src < 2
&& sbp_status->resp == ORB_RES_CMPL
&& sbp_status->dead == 0);
status_valid = (status_valid0 && sbp_status->status == 0);
sbp_status->src, sbp_status->resp, sbp_status->dead,
sbp_status->len, sbp_status->status,
ntohs(sbp_status->orb_hi), ntohl(sbp_status->orb_lo));
status = sbp_status->status;
switch (sbp_status->resp) {
printf("unknown respose code %d\n", sbp_status->resp);
if (sbp_status->dead) {
if (sbp_status->len > 1) {
sbp_scsi_status(sbp_status, ocb);
if (sbp_status->resp != ORB_RES_CMPL) {
static struct sbp_ocb * sbp_dequeue_ocb (struct sbp_dev *, struct sbp_status *);
sbp_dequeue_ocb(struct sbp_dev *sdev, struct sbp_status *sbp_status)
__func__, sdev->bustgtlun, ntohl(sbp_status->orb_lo), sbp_status->src);
if (OCB_MATCH(ocb, sbp_status)) {
if (sbp_status->src == SRC_NO_NEXT) {
sbp_status->src == SRC_NO_NEXT)
struct sbp_status status;
struct sbp_status *sbp_status;
sbp_status = &orbi->status;
sbp_status->resp = 0; /* XXX */
sbp_status->status = 0; /* XXX */
sbp_status->dead = 0; /* XXX */
sbp_status->len = 1;
sbp_cmd_status = (struct sbp_cmd_status *)&sbp_status->data[0];
sbp_status->len = 4;
sbp_status->len = 5;
sbp_status->len = 5;
sbp_status->status);