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) {
kprintf("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__, ntohl(sbp_status->orb_lo), sbp_status->src);
if (OCB_MATCH(ocb, sbp_status)) {
if (sbp_status->src == SRC_NO_NEXT) {