Lines Matching refs:scb

152  * Add a lock for the scb pool, clean up all other cli/sti usage stuff
450 typedef struct scb { /* Command Control Block 5.4.1 */
468 struct scb *next; /* for lists of scbs */
602 static spinlock_t scbpool_lock; /* guards the scb free list and count */
810 Scb *scb, *p = NULL;
846 scb = scbfree;
857 return (scb);
861 static inline void free_scb(Scb * scb)
867 memset(scb, 0, sizeof(Scb));
868 scb->next = scbfree;
869 scbfree = scb;
924 dprintk(", scb is 0x%06lx", (long) scbptr);
963 case 2: /* Command complete, error logged in scb status (scsierr) */
1004 Scb *scb; /* for SCSI commands */
1055 scb = isa_bus_to_virt(scsi2int((unchar *) icmbs[icmb].scbptr));
1057 if (scb->op & ICB_OP_MASK) { /* an SCB is done */
1058 icb = (IcbAny *) scb;
1064 SCpnt = scb->SCpnt;
1066 host_error = scb->vue | (icmb_status << 8);
1067 scsi_error = scb->status;
1071 free_scb(scb);
1087 Scb *scb;
1099 scb = alloc_scbs(SCpnt->device->host, 1);
1100 scb->idlun = idlun;
1101 memcpy(scb->cdb, cdb, cdblen);
1102 scb->direc = 0x40; /* Disable direction check */
1104 scb->SCpnt = SCpnt; /* so we can find stuff later */
1105 SCpnt->host_scribble = (unchar *) scb;
1106 scb->host = host;
1115 sgb = scb->sgb;
1116 scb->op = 1;
1117 any2scsi(scb->dataptr, (int) sgb);
1118 any2scsi(scb->maxlen, nseg * sizeof(Sgb));
1125 scb->op = 0;
1128 any2scsi(scb->dataptr, isa_page_to_bus(sg_page(sg)) + sg->offset);
1130 any2scsi(scb->maxlen, scsi_bufflen(SCpnt));
1135 while (!mail_out(host, scb))
1158 mail_out(host, (struct scb *) &icb);
1288 mail_out(host, (struct scb *) &icb);