tag | line | file | source code |
scb | 140 | drivers/net/apricot.c | struct i596_scb *scb; |
scb | 152 | drivers/net/apricot.c | struct i596_scb scb; |
scb | 201 | drivers/net/apricot.c | lp->scb.rfd = (struct i596_rfd *)I596_NULL; |
scb | 222 | drivers/net/apricot.c | rfd->next = lp->scb.rfd; |
scb | 223 | drivers/net/apricot.c | lp->scb.rfd = rfd; |
scb | 227 | drivers/net/apricot.c | lp->rx_tail->next = lp->scb.rfd; |
scb | 236 | drivers/net/apricot.c | struct i596_rfd *rfd = lp->scb.rfd; |
scb | 242 | drivers/net/apricot.c | lp->scb.rfd = rfd->next; |
scb | 244 | drivers/net/apricot.c | rfd = lp->scb.rfd; |
scb | 267 | drivers/net/apricot.c | lp->iscp.scb = &(lp->scb); |
scb | 271 | drivers/net/apricot.c | lp->cmd_head = lp->scb.cmd = (struct i596_cmd *) I596_NULL; |
scb | 283 | drivers/net/apricot.c | dev->name, lp->scb.status, lp->scb.command); |
scb | 287 | drivers/net/apricot.c | lp->scb.command = 0; |
scb | 301 | drivers/net/apricot.c | while (lp->scb.status, lp->scb.command) |
scb | 305 | drivers/net/apricot.c | dev->name, lp->scb.status, lp->scb.command); |
scb | 309 | drivers/net/apricot.c | lp->scb.command = RX_START; |
scb | 313 | drivers/net/apricot.c | while (lp->scb.status, lp->scb.command) |
scb | 317 | drivers/net/apricot.c | lp->scb.status, lp->scb.command); |
scb | 332 | drivers/net/apricot.c | while ((lp->scb.rfd->stat) & STAT_C) |
scb | 334 | drivers/net/apricot.c | if (i596_debug >2) print_eth(lp->scb.rfd->data); |
scb | 336 | drivers/net/apricot.c | if ((lp->scb.rfd->stat) & STAT_OK) |
scb | 339 | drivers/net/apricot.c | int pkt_len = lp->scb.rfd->count & 0x3fff; |
scb | 352 | drivers/net/apricot.c | memcpy(skb_put(skb,pkt_len), lp->scb.rfd->data, pkt_len); |
scb | 363 | drivers/net/apricot.c | if ((lp->scb.rfd->stat) & 0x0001) lp->stats.collisions++; |
scb | 364 | drivers/net/apricot.c | if ((lp->scb.rfd->stat) & 0x0080) lp->stats.rx_length_errors++; |
scb | 365 | drivers/net/apricot.c | if ((lp->scb.rfd->stat) & 0x0100) lp->stats.rx_over_errors++; |
scb | 366 | drivers/net/apricot.c | if ((lp->scb.rfd->stat) & 0x0200) lp->stats.rx_fifo_errors++; |
scb | 367 | drivers/net/apricot.c | if ((lp->scb.rfd->stat) & 0x0400) lp->stats.rx_frame_errors++; |
scb | 368 | drivers/net/apricot.c | if ((lp->scb.rfd->stat) & 0x0800) lp->stats.rx_crc_errors++; |
scb | 369 | drivers/net/apricot.c | if ((lp->scb.rfd->stat) & 0x1000) lp->stats.rx_length_errors++; |
scb | 372 | drivers/net/apricot.c | lp->scb.rfd->stat = 0; |
scb | 374 | drivers/net/apricot.c | lp->rx_tail = lp->scb.rfd; |
scb | 375 | drivers/net/apricot.c | lp->scb.rfd = lp->scb.rfd->next; |
scb | 430 | drivers/net/apricot.c | while (lp->scb.status, lp->scb.command) |
scb | 434 | drivers/net/apricot.c | lp->scb.status, lp->scb.command); |
scb | 438 | drivers/net/apricot.c | lp->scb.cmd = lp->cmd_head; |
scb | 448 | drivers/net/apricot.c | while (lp->scb.status, lp->scb.command) |
scb | 452 | drivers/net/apricot.c | lp->scb.status, lp->scb.command); |
scb | 459 | drivers/net/apricot.c | lp->scb.command = CUC_ABORT|RX_ABORT; |
scb | 465 | drivers/net/apricot.c | while ((lp->scb.status, lp->scb.command) || lp->scb.command) |
scb | 469 | drivers/net/apricot.c | lp->scb.status, lp->scb.command); |
scb | 502 | drivers/net/apricot.c | while (lp->scb.status, lp->scb.command) |
scb | 506 | drivers/net/apricot.c | lp->scb.status, lp->scb.command); |
scb | 510 | drivers/net/apricot.c | lp->scb.cmd = cmd; |
scb | 511 | drivers/net/apricot.c | lp->scb.command = CUC_START; |
scb | 517 | drivers/net/apricot.c | lp->cmd_head = lp->scb.cmd; |
scb | 595 | drivers/net/apricot.c | lp->scb.command = CUC_START|RX_START; |
scb | 738 | drivers/net/apricot.c | lp->scb.command = 0; |
scb | 739 | drivers/net/apricot.c | lp->scb.cmd = (struct i596_cmd *) I596_NULL; |
scb | 740 | drivers/net/apricot.c | lp->scb.rfd = (struct i596_rfd *)I596_NULL; |
scb | 770 | drivers/net/apricot.c | while (lp->scb.status, lp->scb.command) |
scb | 773 | drivers/net/apricot.c | printk("%s: i596 interrupt, timeout status %4.4x command %4.4x.\n", dev->name, lp->scb.status, lp->scb.command); |
scb | 776 | drivers/net/apricot.c | status = lp->scb.status; |
scb | 871 | drivers/net/apricot.c | lp->scb.cmd = lp->cmd_head; |
scb | 892 | drivers/net/apricot.c | while (lp->scb.status, lp->scb.command) |
scb | 895 | drivers/net/apricot.c | printk("%s: i596 interrupt, timeout status %4.4x command %4.4x.\n", dev->name, lp->scb.status, lp->scb.command); |
scb | 898 | drivers/net/apricot.c | lp->scb.command = ack_cmd; |
scb | 923 | drivers/net/apricot.c | dev->name, lp->scb.status); |
scb | 925 | drivers/net/apricot.c | lp->scb.command = CUC_ABORT|RX_ABORT; |
scb | 930 | drivers/net/apricot.c | while (lp->scb.status, lp->scb.command) |
scb | 934 | drivers/net/apricot.c | dev->name, lp->scb.status, lp->scb.command); |
scb | 166 | drivers/net/ni52.c | if(!p->scb->cmd_cuc) break; \ |
scb | 169 | drivers/net/ni52.c | printk("%s: scb_cmd timed out: %04x,%04x .. disabling i82586!!\n",dev->name,p->scb->cmd_cuc,p->scb->cus); \ |
scb | 174 | drivers/net/ni52.c | if(!p->scb->cmd_ruc) break; \ |
scb | 177 | drivers/net/ni52.c | printk("%s: scb_cmd (ruc) timed out: %04x,%04x .. disabling i82586!!\n",dev->name,p->scb->cmd_ruc,p->scb->rus); \ |
scb | 220 | drivers/net/ni52.c | volatile struct scb_struct *scb; /* volatile is important */ |
scb | 331 | drivers/net/ni52.c | p->scb = (struct scb_struct *) (dev->mem_start); |
scb | 339 | drivers/net/ni52.c | p->iscp->scb_offset = make16(p->scb); |
scb | 352 | drivers/net/ni52.c | memset((char *)p->scb,0,sizeof(struct scb_struct)); |
scb | 546 | drivers/net/ni52.c | ptr = (void *) ((char *)p->scb + sizeof(struct scb_struct)); |
scb | 576 | drivers/net/ni52.c | p->scb->cbl_offset = make16(cfg_cmd); |
scb | 577 | drivers/net/ni52.c | p->scb->cmd_ruc = 0; |
scb | 579 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_START; /* cmd.-unit start */ |
scb | 601 | drivers/net/ni52.c | p->scb->cbl_offset = make16(ias_cmd); |
scb | 603 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_START; /* cmd.-unit start */ |
scb | 623 | drivers/net/ni52.c | p->scb->cbl_offset = make16(tdr_cmd); |
scb | 624 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_START; /* cmd.-unit start */ |
scb | 638 | drivers/net/ni52.c | p->scb->cmd_cuc = p->scb->cus & STAT_MASK; |
scb | 670 | drivers/net/ni52.c | p->scb->cbl_offset = make16(mc_cmd); |
scb | 671 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_START; |
scb | 741 | drivers/net/ni52.c | p->scb->cbl_offset = make16(p->nop_cmds[0]); |
scb | 742 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_START; |
scb | 753 | drivers/net/ni52.c | p->scb->cmd_cuc = p->scb->cus & STAT_MASK; |
scb | 802 | drivers/net/ni52.c | p->scb->rfa_offset = make16(p->rfd_first); |
scb | 833 | drivers/net/ni52.c | while((stat=p->scb->cus & STAT_MASK)) |
scb | 835 | drivers/net/ni52.c | p->scb->cmd_cuc = stat; |
scb | 844 | drivers/net/ni52.c | if(p->scb->rus & RU_SUSPEND) /* special case: RU_SUSPEND */ |
scb | 847 | drivers/net/ni52.c | p->scb->cmd_ruc = RUC_RESUME; |
scb | 853 | drivers/net/ni52.c | printk("%s: Receiver-Unit went 'NOT READY': %04x/%02x.\n",dev->name,(int) stat,(int) p->scb->rus); |
scb | 865 | drivers/net/ni52.c | printk("%s: oops! CU has left active state. stat: %04x/%02x.\n",dev->name,(int) stat,(int) p->scb->cus); |
scb | 873 | drivers/net/ni52.c | if(p->scb->cmd_cuc) /* timed out? */ |
scb | 959 | drivers/net/ni52.c | p->scb->rfa_offset = make16(p->rfd_top); |
scb | 968 | drivers/net/ni52.c | p->scb->cmd_ruc = RUC_RESUME; |
scb | 1000 | drivers/net/ni52.c | printk("\nerrs: %04x %04x stat: %04x\n",(int)p->scb->rsc_errs,(int)p->scb->ovrn_errs,(int)p->scb->status); |
scb | 1001 | drivers/net/ni52.c | printk("\nerrs: %04x %04x rus: %02x, cus: %02x\n",(int)p->scb->rsc_errs,(int)p->scb->ovrn_errs,(int)p->scb->rus,(int)p->scb->cus); |
scb | 1021 | drivers/net/ni52.c | p->scb->cmd_ruc = RUC_ABORT; /* usually the RU is in the 'no resource'-state .. abort it now. */ |
scb | 1029 | drivers/net/ni52.c | printk("%s: Receive-Unit restarted. Status: %04x\n",dev->name,p->scb->rus); |
scb | 1096 | drivers/net/ni52.c | p->scb->rfa_offset = make16(p->rfd_first); |
scb | 1097 | drivers/net/ni52.c | p->scb->cmd_ruc = RUC_START; |
scb | 1121 | drivers/net/ni52.c | if(p->scb->cus & CU_ACTIVE) /* COMMAND-UNIT active? */ |
scb | 1128 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_ABORT; |
scb | 1131 | drivers/net/ni52.c | p->scb->cbl_offset = make16(p->nop_cmds[p->nop_point]); |
scb | 1132 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_START; |
scb | 1142 | drivers/net/ni52.c | printk("%s: xmitter timed out, try to restart! stat: %02x\n",dev->name,p->scb->cus); |
scb | 1186 | drivers/net/ni52.c | if(p->scb->cus & CU_ACTIVE) |
scb | 1189 | drivers/net/ni52.c | printk("%s: stat: %04x %04x\n",dev->name,p->scb->cus,p->xmit_cmds[0]->cmd_status); |
scb | 1198 | drivers/net/ni52.c | if( (p->scb->cus & CU_STATUS) == CU_SUSPEND) |
scb | 1199 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_RESUME; |
scb | 1202 | drivers/net/ni52.c | p->scb->cbl_offset = make16(p->xmit_cmds[0]); |
scb | 1203 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_START; |
scb | 1211 | drivers/net/ni52.c | if( (p->scb->cus & CU_ACTIVE)) /* test it, because CU sometimes doesn't start immediately */ |
scb | 1269 | drivers/net/ni52.c | crc = p->scb->crc_errs; /* get error-statistic from the ni82586 */ |
scb | 1270 | drivers/net/ni52.c | p->scb->crc_errs = 0; |
scb | 1271 | drivers/net/ni52.c | aln = p->scb->aln_errs; |
scb | 1272 | drivers/net/ni52.c | p->scb->aln_errs = 0; |
scb | 1273 | drivers/net/ni52.c | rsc = p->scb->rsc_errs; |
scb | 1274 | drivers/net/ni52.c | p->scb->rsc_errs = 0; |
scb | 1275 | drivers/net/ni52.c | ovrn = p->scb->ovrn_errs; |
scb | 1276 | drivers/net/ni52.c | p->scb->ovrn_errs = 0; |
scb | 1355 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_ABORT; |
scb | 1365 | drivers/net/ni52.c | p->scb->cbl_offset = make16(dump_cmd); |
scb | 1366 | drivers/net/ni52.c | p->scb->cmd_cuc = CUC_START; |
scb | 541 | drivers/net/wavelan.c | scb_t scb; |
scb | 588 | drivers/net/wavelan.c | memset(&scb, 0x00, sizeof(scb)); |
scb | 589 | drivers/net/wavelan.c | scb.scb_command = SCB_CMD_RESET; |
scb | 590 | drivers/net/wavelan.c | scb.scb_cbl_offset = OFFSET_CU; |
scb | 591 | drivers/net/wavelan.c | scb.scb_rfa_offset = OFFSET_RU; |
scb | 592 | drivers/net/wavelan.c | obram_write(ioaddr, OFFSET_SCB, (unsigned char *)&scb, sizeof(scb)); |
scb | 616 | drivers/net/wavelan.c | obram_read(ioaddr, OFFSET_SCB, (unsigned char *)&scb, sizeof(scb)); |
scb | 618 | drivers/net/wavelan.c | if (scb.scb_status == (SCB_ST_CX | SCB_ST_CNA)) |
scb | 626 | drivers/net/wavelan.c | printk("%s: wavelan_hardware_reset(): status: expected 0x%02x, got 0x%02x.\n", dev->name, SCB_ST_CX | SCB_ST_CNA, scb.scb_status); |
scb | 2337 | drivers/net/wavelan.c | scb_t scb; |
scb | 2339 | drivers/net/wavelan.c | obram_read(ioaddr, OFFSET_SCB, (unsigned char *)&scb, sizeof(scb)); |
scb | 2347 | drivers/net/wavelan.c | (scb.scb_status & (SCB_ST_CX | SCB_ST_FR | SCB_ST_CNA | SCB_ST_RNR)) >> 12, |
scb | 2348 | drivers/net/wavelan.c | (scb.scb_status & SCB_ST_CX) ? "cmd completion interrupt," : "", |
scb | 2349 | drivers/net/wavelan.c | (scb.scb_status & SCB_ST_FR) ? "frame received," : "", |
scb | 2350 | drivers/net/wavelan.c | (scb.scb_status & SCB_ST_CNA) ? "cmd unit not active," : "", |
scb | 2351 | drivers/net/wavelan.c | (scb.scb_status & SCB_ST_RNR) ? "rcv unit not ready," : "" |
scb | 2356 | drivers/net/wavelan.c | (scb.scb_status & SCB_ST_CUS) >> 8, |
scb | 2357 | drivers/net/wavelan.c | ((scb.scb_status & SCB_ST_CUS) == SCB_ST_CUS_IDLE) ? "idle" : "", |
scb | 2358 | drivers/net/wavelan.c | ((scb.scb_status & SCB_ST_CUS) == SCB_ST_CUS_SUSP) ? "suspended" : "", |
scb | 2359 | drivers/net/wavelan.c | ((scb.scb_status & SCB_ST_CUS) == SCB_ST_CUS_ACTV) ? "active" : "" |
scb | 2364 | drivers/net/wavelan.c | (scb.scb_status & SCB_ST_RUS) >> 4, |
scb | 2365 | drivers/net/wavelan.c | ((scb.scb_status & SCB_ST_RUS) == SCB_ST_RUS_IDLE) ? "idle" : "", |
scb | 2366 | drivers/net/wavelan.c | ((scb.scb_status & SCB_ST_RUS) == SCB_ST_RUS_SUSP) ? "suspended" : "", |
scb | 2367 | drivers/net/wavelan.c | ((scb.scb_status & SCB_ST_RUS) == SCB_ST_RUS_NRES) ? "no resources" : "", |
scb | 2368 | drivers/net/wavelan.c | ((scb.scb_status & SCB_ST_RUS) == SCB_ST_RUS_RDY) ? "ready" : "" |
scb | 2375 | drivers/net/wavelan.c | (scb.scb_command & (SCB_CMD_ACK_CX | SCB_CMD_ACK_FR | SCB_CMD_ACK_CNA | SCB_CMD_ACK_RNR)) >> 12, |
scb | 2376 | drivers/net/wavelan.c | (scb.scb_command & SCB_CMD_ACK_CX) ? "ack cmd completion," : "", |
scb | 2377 | drivers/net/wavelan.c | (scb.scb_command & SCB_CMD_ACK_FR) ? "ack frame received," : "", |
scb | 2378 | drivers/net/wavelan.c | (scb.scb_command & SCB_CMD_ACK_CNA) ? "ack CU not active," : "", |
scb | 2379 | drivers/net/wavelan.c | (scb.scb_command & SCB_CMD_ACK_RNR) ? "ack RU not ready," : "" |
scb | 2384 | drivers/net/wavelan.c | (scb.scb_command & SCB_CMD_CUC) >> 8, |
scb | 2385 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_CUC) == SCB_CMD_CUC_NOP) ? "nop" : "", |
scb | 2386 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_CUC) == SCB_CMD_CUC_GO) ? "start cbl_offset" : "", |
scb | 2387 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_CUC) == SCB_CMD_CUC_RES) ? "resume execution" : "", |
scb | 2388 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_CUC) == SCB_CMD_CUC_SUS) ? "suspend execution" : "", |
scb | 2389 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_CUC) == SCB_CMD_CUC_ABT) ? "abort execution" : "" |
scb | 2394 | drivers/net/wavelan.c | (scb.scb_command & SCB_CMD_RUC) >> 4, |
scb | 2395 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_RUC) == SCB_CMD_RUC_NOP) ? "nop" : "", |
scb | 2396 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_RUC) == SCB_CMD_RUC_GO) ? "start rfa_offset" : "", |
scb | 2397 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_RUC) == SCB_CMD_RUC_RES) ? "resume reception" : "", |
scb | 2398 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_RUC) == SCB_CMD_RUC_SUS) ? "suspend reception" : "", |
scb | 2399 | drivers/net/wavelan.c | ((scb.scb_command & SCB_CMD_RUC) == SCB_CMD_RUC_ABT) ? "abort reception" : "" |
scb | 2402 | drivers/net/wavelan.c | printk(" cbl_offset 0x%x", scb.scb_cbl_offset); |
scb | 2403 | drivers/net/wavelan.c | printk(" rfa_offset 0x%x", scb.scb_rfa_offset); |
scb | 2405 | drivers/net/wavelan.c | printk(" crcerrs %d", scb.scb_crcerrs); |
scb | 2406 | drivers/net/wavelan.c | printk(" alnerrs %d", scb.scb_alnerrs); |
scb | 2407 | drivers/net/wavelan.c | printk(" rscerrs %d", scb.scb_rscerrs); |
scb | 2408 | drivers/net/wavelan.c | printk(" ovrnerrs %d", scb.scb_ovrnerrs); |
scb | 793 | drivers/scsi/aic7xxx.c | debug_scb(struct aic7xxx_scb *scb) |
scb | 796 | drivers/scsi/aic7xxx.c | scb->control, scb->target_channel_lun, scb->SG_segment_count, |
scb | 797 | drivers/scsi/aic7xxx.c | (scb->SG_list_pointer[3] << 24) | (scb->SG_list_pointer[2] << 16) | |
scb | 798 | drivers/scsi/aic7xxx.c | (scb->SG_list_pointer[1] << 8) | scb->SG_list_pointer[0], |
scb | 799 | drivers/scsi/aic7xxx.c | (scb->SCSI_cmd_pointer[3] << 24) | (scb->SCSI_cmd_pointer[2] << 16) | |
scb | 800 | drivers/scsi/aic7xxx.c | (scb->SCSI_cmd_pointer[1] << 8) | scb->SCSI_cmd_pointer[0], |
scb | 801 | drivers/scsi/aic7xxx.c | scb->SCSI_cmd_length); |
scb | 803 | drivers/scsi/aic7xxx.c | (scb->RESERVED[1] << 8) | scb->RESERVED[0], scb->target_status, |
scb | 804 | drivers/scsi/aic7xxx.c | scb->residual_SG_segment_count, scb->residual_data_count); |
scb | 806 | drivers/scsi/aic7xxx.c | (scb->data_pointer[3] << 24) | (scb->data_pointer[2] << 16) | |
scb | 807 | drivers/scsi/aic7xxx.c | (scb->data_pointer[1] << 8) | scb->data_pointer[0], |
scb | 808 | drivers/scsi/aic7xxx.c | scb->data_count, scb->next_waiting); |
scb | 810 | drivers/scsi/aic7xxx.c | (unsigned long) scb->next, (unsigned long) scb->cmd, scb->state, |
scb | 811 | drivers/scsi/aic7xxx.c | scb->position); |
scb | 1129 | drivers/scsi/aic7xxx.c | aic7xxx_putscb(struct aic7xxx_host *p, struct aic7xxx_scb *scb) |
scb | 1135 | drivers/scsi/aic7xxx.c | outb(scb->position, SCBPTR + base); |
scb | 1148 | drivers/scsi/aic7xxx.c | outsb(SCBARRAY + base, scb, SCB_PIO_TRANSFER_SIZE); |
scb | 1152 | drivers/scsi/aic7xxx.c | outsl(SCBARRAY + base, scb, (SCB_PIO_TRANSFER_SIZE + 3) / 4); |
scb | 1167 | drivers/scsi/aic7xxx.c | aic7xxx_getscb(struct aic7xxx_host *p, struct aic7xxx_scb *scb) |
scb | 1175 | drivers/scsi/aic7xxx.c | insb(SCBARRAY + base, scb, SCB_PIO_TRANSFER_SIZE); |
scb | 1190 | drivers/scsi/aic7xxx.c | aic7xxx_match_scb(struct aic7xxx_scb *scb, int target, char channel) |
scb | 1192 | drivers/scsi/aic7xxx.c | int targ = (scb->target_channel_lun >> 4) & 0x0F; |
scb | 1193 | drivers/scsi/aic7xxx.c | char chan = (scb->target_channel_lun & SELBUSB) ? 'B' : 'A'; |
scb | 1273 | drivers/scsi/aic7xxx.c | aic7xxx_done(struct aic7xxx_host *p, struct aic7xxx_scb *scb) |
scb | 1276 | drivers/scsi/aic7xxx.c | Scsi_Cmnd *cmd = scb->cmd; |
scb | 1293 | drivers/scsi/aic7xxx.c | scb->state = SCB_FREE; |
scb | 1294 | drivers/scsi/aic7xxx.c | scb->next = p->free_scb; |
scb | 1295 | drivers/scsi/aic7xxx.c | p->free_scb = scb; |
scb | 1296 | drivers/scsi/aic7xxx.c | scb->cmd = NULL; |
scb | 1312 | drivers/scsi/aic7xxx.c | struct aic7xxx_scb *scb, |
scb | 1325 | drivers/scsi/aic7xxx.c | head = scb->position; |
scb | 1331 | drivers/scsi/aic7xxx.c | outb(scb->position, SCBPTR + base); |
scb | 1333 | drivers/scsi/aic7xxx.c | head = scb->position; |
scb | 1342 | drivers/scsi/aic7xxx.c | outb(scb->position, SCB_NEXT_WAITING + base); |
scb | 1343 | drivers/scsi/aic7xxx.c | outb(scb->position, SCBPTR + base); |
scb | 1360 | drivers/scsi/aic7xxx.c | aic7xxx_abort_waiting_scb(struct aic7xxx_host *p, struct aic7xxx_scb *scb, |
scb | 1364 | drivers/scsi/aic7xxx.c | int target = (scb->target_channel_lun >> 4) & 0x0F; |
scb | 1365 | drivers/scsi/aic7xxx.c | char channel = (scb->target_channel_lun & SELBUSB) ? 'B' : 'A'; |
scb | 1373 | drivers/scsi/aic7xxx.c | outb(scb->position, SCBPTR + base); |
scb | 1404 | drivers/scsi/aic7xxx.c | if (inb(WAITING_SCBT + base) == scb->position) |
scb | 1415 | drivers/scsi/aic7xxx.c | scb->state |= SCB_ABORTED; |
scb | 1416 | drivers/scsi/aic7xxx.c | scb->cmd->result = (DID_RESET << 16); |
scb | 1417 | drivers/scsi/aic7xxx.c | aic7xxx_done(p, scb); |
scb | 1439 | drivers/scsi/aic7xxx.c | struct aic7xxx_scb *scb; |
scb | 1463 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[saved_queue[i]]); |
scb | 1464 | drivers/scsi/aic7xxx.c | if (aic7xxx_match_scb(scb, target, channel)) |
scb | 1469 | drivers/scsi/aic7xxx.c | scb->state |= SCB_ABORTED; |
scb | 1470 | drivers/scsi/aic7xxx.c | scb->cmd->result = (DID_RESET << 16); |
scb | 1471 | drivers/scsi/aic7xxx.c | aic7xxx_done(p, scb); |
scb | 1472 | drivers/scsi/aic7xxx.c | outb(scb->position, SCBPTR + base); |
scb | 1498 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[next]); |
scb | 1502 | drivers/scsi/aic7xxx.c | if (aic7xxx_match_scb(scb, target, channel)) |
scb | 1504 | drivers/scsi/aic7xxx.c | next = aic7xxx_abort_waiting_scb(p, scb, prev, timedout_scb); |
scb | 1509 | drivers/scsi/aic7xxx.c | outb(scb->position, SCBPTR + base); |
scb | 1524 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[i]); |
scb | 1525 | drivers/scsi/aic7xxx.c | if ((scb->state & SCB_ACTIVE) && aic7xxx_match_scb(scb, target, channel)) |
scb | 1531 | drivers/scsi/aic7xxx.c | outb(scb->position, SCBPTR + base); |
scb | 1533 | drivers/scsi/aic7xxx.c | scb->state |= SCB_ABORTED; |
scb | 1534 | drivers/scsi/aic7xxx.c | scb->cmd->result = (DID_RESET << 16); |
scb | 1535 | drivers/scsi/aic7xxx.c | aic7xxx_done(p, scb); |
scb | 1687 | drivers/scsi/aic7xxx.c | struct aic7xxx_scb *scb; |
scb | 1808 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[scb_index]); |
scb | 1812 | drivers/scsi/aic7xxx.c | scb->cmd->device->tagged_supported = 0; |
scb | 1813 | drivers/scsi/aic7xxx.c | scb->cmd->device->tagged_queue = 0; |
scb | 2018 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[scb_index]); |
scb | 2020 | drivers/scsi/aic7xxx.c | if (!(scb->state & SCB_ACTIVE) || (scb->cmd == NULL)) |
scb | 2024 | drivers/scsi/aic7xxx.c | intstat, scb_index, scb->state, (unsigned int) scb->cmd); |
scb | 2028 | drivers/scsi/aic7xxx.c | cmd = scb->cmd; |
scb | 2029 | drivers/scsi/aic7xxx.c | aic7xxx_getscb(p, scb); |
scb | 2030 | drivers/scsi/aic7xxx.c | aic7xxx_status(cmd) = scb->target_status; |
scb | 2032 | drivers/scsi/aic7xxx.c | cmd->result |= scb->target_status; |
scb | 2034 | drivers/scsi/aic7xxx.c | switch (status_byte(scb->target_status)) |
scb | 2047 | drivers/scsi/aic7xxx.c | tcl = scb->target_channel_lun; |
scb | 2053 | drivers/scsi/aic7xxx.c | memcpy((void *) scb->sense_cmd, (void *) generic_sense, |
scb | 2056 | drivers/scsi/aic7xxx.c | scb->sense_cmd[1] = (cmd->lun << 5); |
scb | 2057 | drivers/scsi/aic7xxx.c | scb->sense_cmd[4] = sizeof(cmd->sense_buffer); |
scb | 2059 | drivers/scsi/aic7xxx.c | scb->sense_sg.address = (char *) &cmd->sense_buffer; |
scb | 2060 | drivers/scsi/aic7xxx.c | scb->sense_sg.length = sizeof(cmd->sense_buffer); |
scb | 2061 | drivers/scsi/aic7xxx.c | req_buf = &scb->sense_sg; |
scb | 2063 | drivers/scsi/aic7xxx.c | control = scb->control; |
scb | 2065 | drivers/scsi/aic7xxx.c | memset(scb, 0, SCB_PIO_TRANSFER_SIZE); |
scb | 2066 | drivers/scsi/aic7xxx.c | scb->control = control & DISCENB; |
scb | 2067 | drivers/scsi/aic7xxx.c | scb->target_channel_lun = tcl; |
scb | 2068 | drivers/scsi/aic7xxx.c | addr = scb->sense_cmd; |
scb | 2069 | drivers/scsi/aic7xxx.c | scb->SCSI_cmd_length = COMMAND_SIZE(scb->sense_cmd[0]); |
scb | 2070 | drivers/scsi/aic7xxx.c | memcpy(scb->SCSI_cmd_pointer, &addr, |
scb | 2071 | drivers/scsi/aic7xxx.c | sizeof(scb->SCSI_cmd_pointer)); |
scb | 2072 | drivers/scsi/aic7xxx.c | scb->SG_segment_count = 1; |
scb | 2073 | drivers/scsi/aic7xxx.c | memcpy(scb->SG_list_pointer, &req_buf, |
scb | 2074 | drivers/scsi/aic7xxx.c | sizeof(scb->SG_list_pointer)); |
scb | 2075 | drivers/scsi/aic7xxx.c | scb->data_count = scb->sense_sg.length; |
scb | 2076 | drivers/scsi/aic7xxx.c | memcpy(scb->data_pointer, &(scb->sense_sg.address), 4); |
scb | 2078 | drivers/scsi/aic7xxx.c | aic7xxx_putscb(p, scb); |
scb | 2086 | drivers/scsi/aic7xxx.c | aic7xxx_add_waiting_scb(base, scb, LIST_HEAD); |
scb | 2115 | drivers/scsi/aic7xxx.c | scb->target_status); |
scb | 2127 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[scb_index]); |
scb | 2128 | drivers/scsi/aic7xxx.c | if (!(scb->state & SCB_ACTIVE) || (scb->cmd == NULL)) |
scb | 2132 | drivers/scsi/aic7xxx.c | intstat, scb_index, scb->state, (unsigned int) scb->cmd); |
scb | 2136 | drivers/scsi/aic7xxx.c | cmd = scb->cmd; |
scb | 2149 | drivers/scsi/aic7xxx.c | actual = aic7xxx_length(cmd, scb->residual_SG_segment_count); |
scb | 2162 | drivers/scsi/aic7xxx.c | aic7xxx_status(cmd) = scb->target_status; |
scb | 2170 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[scb_index]); |
scb | 2171 | drivers/scsi/aic7xxx.c | if (!(scb->state & SCB_ACTIVE) || (scb->cmd == NULL)) |
scb | 2175 | drivers/scsi/aic7xxx.c | intstat, scb_index, scb->state, (unsigned int) scb->cmd); |
scb | 2179 | drivers/scsi/aic7xxx.c | cmd = scb->cmd; |
scb | 2189 | drivers/scsi/aic7xxx.c | aic7xxx_done(p, scb); |
scb | 2195 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[scb_index]); |
scb | 2196 | drivers/scsi/aic7xxx.c | if (!(scb->state & SCB_ACTIVE) || (scb->cmd == NULL)) |
scb | 2200 | drivers/scsi/aic7xxx.c | intstat, scb_index, scb->state, (unsigned int) scb->cmd); |
scb | 2209 | drivers/scsi/aic7xxx.c | if (scb->state & SCB_DEVICE_RESET) |
scb | 2228 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[scb_index]); |
scb | 2231 | drivers/scsi/aic7xxx.c | scsi_id, scb_index, scb->state); |
scb | 2233 | drivers/scsi/aic7xxx.c | if (scb->state & SCB_DEVICE_RESET) |
scb | 2267 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[scb_index]); |
scb | 2268 | drivers/scsi/aic7xxx.c | if (!(scb->state & SCB_ACTIVE) || (scb->cmd == NULL)) |
scb | 2272 | drivers/scsi/aic7xxx.c | intstat, scb_index, scb->state, (unsigned int) scb->cmd); |
scb | 2280 | drivers/scsi/aic7xxx.c | cmd = scb->cmd; |
scb | 2360 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[scb_index]); |
scb | 2361 | drivers/scsi/aic7xxx.c | if (!(scb->state & SCB_ACTIVE) || (scb->cmd == NULL)) |
scb | 2372 | drivers/scsi/aic7xxx.c | scb = NULL; |
scb | 2376 | drivers/scsi/aic7xxx.c | cmd = scb->cmd; |
scb | 2433 | drivers/scsi/aic7xxx.c | aic7xxx_done(p, scb); |
scb | 2436 | drivers/scsi/aic7xxx.c | scb->position, scb->state, (unsigned int) scb->cmd); |
scb | 2468 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[complete]); |
scb | 2469 | drivers/scsi/aic7xxx.c | if (!(scb->state & SCB_ACTIVE) || (scb->cmd == NULL)) |
scb | 2474 | drivers/scsi/aic7xxx.c | scb->state, (unsigned int) scb->cmd, scb->position); |
scb | 2478 | drivers/scsi/aic7xxx.c | cmd = scb->cmd; |
scb | 2489 | drivers/scsi/aic7xxx.c | scb->state, (unsigned int) scb->cmd, (unsigned int) p->free_scb); |
scb | 2502 | drivers/scsi/aic7xxx.c | aic7xxx_done(p, scb); |
scb | 2504 | drivers/scsi/aic7xxx.c | if (scb != &p->scb_array[scb->position]) |
scb | 2506 | drivers/scsi/aic7xxx.c | printk("aic7xxx: (complete) Address mismatch, pos(%d).\n", scb->position); |
scb | 2509 | drivers/scsi/aic7xxx.c | scb->state, (unsigned int) scb->cmd, (unsigned int) p->free_scb); |
scb | 4021 | drivers/scsi/aic7xxx.c | struct aic7xxx_scb *scb) |
scb | 4043 | drivers/scsi/aic7xxx.c | scb->control |= TAG_ENB; |
scb | 4049 | drivers/scsi/aic7xxx.c | scb->control |= DISCENB; |
scb | 4054 | drivers/scsi/aic7xxx.c | scb->control |= NEEDWDTR; |
scb | 4064 | drivers/scsi/aic7xxx.c | scb->control |= NEEDSDTR; |
scb | 4076 | drivers/scsi/aic7xxx.c | scb->target_channel_lun = ((cmd->target << 4) & 0xF0) | |
scb | 4091 | drivers/scsi/aic7xxx.c | scb->SCSI_cmd_length = cmd->cmd_len; |
scb | 4092 | drivers/scsi/aic7xxx.c | memcpy(scb->SCSI_cmd_pointer, &addr, sizeof(scb->SCSI_cmd_pointer)); |
scb | 4096 | drivers/scsi/aic7xxx.c | scb->SG_segment_count = cmd->use_sg; |
scb | 4097 | drivers/scsi/aic7xxx.c | memcpy(scb->SG_list_pointer, &cmd->request_buffer, |
scb | 4098 | drivers/scsi/aic7xxx.c | sizeof(scb->SG_list_pointer)); |
scb | 4100 | drivers/scsi/aic7xxx.c | memcpy(scb->data_pointer, &(sg[0].address), sizeof(scb->data_pointer)); |
scb | 4101 | drivers/scsi/aic7xxx.c | scb->data_count = sg[0].length; |
scb | 4104 | drivers/scsi/aic7xxx.c | cmd->use_sg, aic7xxx_length(cmd, 0), scb->data_count); |
scb | 4120 | drivers/scsi/aic7xxx.c | scb->SG_segment_count = 0; |
scb | 4121 | drivers/scsi/aic7xxx.c | memset(scb->SG_list_pointer, 0, sizeof(scb->SG_list_pointer)); |
scb | 4122 | drivers/scsi/aic7xxx.c | memset(scb->data_pointer, 0, sizeof(scb->data_pointer)); |
scb | 4123 | drivers/scsi/aic7xxx.c | scb->data_count = 0; |
scb | 4127 | drivers/scsi/aic7xxx.c | scb->SG_segment_count = 1; |
scb | 4128 | drivers/scsi/aic7xxx.c | scb->sg.address = (char *) cmd->request_buffer; |
scb | 4129 | drivers/scsi/aic7xxx.c | scb->sg.length = cmd->request_bufflen; |
scb | 4130 | drivers/scsi/aic7xxx.c | addr = &scb->sg; |
scb | 4131 | drivers/scsi/aic7xxx.c | memcpy(scb->SG_list_pointer, &addr, sizeof(scb->SG_list_pointer)); |
scb | 4132 | drivers/scsi/aic7xxx.c | scb->data_count = scb->sg.length; |
scb | 4133 | drivers/scsi/aic7xxx.c | memcpy(scb->data_pointer, &cmd->request_buffer, sizeof(scb->data_pointer)); |
scb | 4150 | drivers/scsi/aic7xxx.c | struct aic7xxx_scb *scb; |
scb | 4196 | drivers/scsi/aic7xxx.c | scb = p->free_scb; |
scb | 4197 | drivers/scsi/aic7xxx.c | if (scb != NULL) |
scb | 4199 | drivers/scsi/aic7xxx.c | p->free_scb = scb->next; /* remove and update head of list */ |
scb | 4207 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[scb->position]); |
scb | 4208 | drivers/scsi/aic7xxx.c | scb->control = 0; |
scb | 4209 | drivers/scsi/aic7xxx.c | scb->state = SCB_ACTIVE; |
scb | 4224 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[p->numscb]); |
scb | 4225 | drivers/scsi/aic7xxx.c | memset(scb, 0, sizeof(*scb)); |
scb | 4227 | drivers/scsi/aic7xxx.c | scb->position = p->numscb; |
scb | 4229 | drivers/scsi/aic7xxx.c | scb->state = SCB_ACTIVE; |
scb | 4233 | drivers/scsi/aic7xxx.c | scb->cmd = cmd; |
scb | 4234 | drivers/scsi/aic7xxx.c | aic7xxx_position(cmd) = scb->position; |
scb | 4236 | drivers/scsi/aic7xxx.c | debug_scb(scb); |
scb | 4243 | drivers/scsi/aic7xxx.c | aic7xxx_buildscb(p, cmd, scb); |
scb | 4246 | drivers/scsi/aic7xxx.c | if (scb != &p->scb_array[scb->position]) |
scb | 4252 | drivers/scsi/aic7xxx.c | scb->position, (unsigned int) scb->cmd, |
scb | 4253 | drivers/scsi/aic7xxx.c | scb->state, (unsigned int) p->free_scb); |
scb | 4269 | drivers/scsi/aic7xxx.c | aic7xxx_putscb(p, scb); |
scb | 4270 | drivers/scsi/aic7xxx.c | outb(scb->position, QINFIFO + p->base); |
scb | 4287 | drivers/scsi/aic7xxx.c | (long) cmd, (long) scb->cmd, scb->position); |
scb | 4305 | drivers/scsi/aic7xxx.c | aic7xxx_abort_scb(struct aic7xxx_host *p, struct aic7xxx_scb *scb, |
scb | 4311 | drivers/scsi/aic7xxx.c | char channel = scb->target_channel_lun & SELBUSB ? 'B': 'A'; |
scb | 4321 | drivers/scsi/aic7xxx.c | scb->position, (scb->state & SCB_ABORTED)); |
scb | 4329 | drivers/scsi/aic7xxx.c | if (scb->state & SCB_ABORTED) |
scb | 4334 | drivers/scsi/aic7xxx.c | found = aic7xxx_reset_channel(p, channel, scb->position); |
scb | 4361 | drivers/scsi/aic7xxx.c | outb(scb->position, SCBPTR + base); |
scb | 4365 | drivers/scsi/aic7xxx.c | printk ("aic7xxx: (abort_scb) scb %d is disconnected.\n", scb->position); |
scb | 4367 | drivers/scsi/aic7xxx.c | scb->state |= (SCB_DEVICE_RESET | SCB_ABORTED); |
scb | 4368 | drivers/scsi/aic7xxx.c | scb->SG_segment_count = 0; |
scb | 4369 | drivers/scsi/aic7xxx.c | memset(scb->SG_list_pointer, 0, sizeof(scb->SG_list_pointer)); |
scb | 4370 | drivers/scsi/aic7xxx.c | memset(scb->data_pointer, 0, sizeof(scb->data_pointer)); |
scb | 4371 | drivers/scsi/aic7xxx.c | scb->data_count = 0; |
scb | 4372 | drivers/scsi/aic7xxx.c | aic7xxx_putscb(p, scb); |
scb | 4373 | drivers/scsi/aic7xxx.c | aic7xxx_error(scb->cmd) = errcode; |
scb | 4375 | drivers/scsi/aic7xxx.c | aic7xxx_add_waiting_scb(base, scb, LIST_SECOND); |
scb | 4398 | drivers/scsi/aic7xxx.c | aic7xxx_reset_channel(p, channel, scb->position); |
scb | 4412 | drivers/scsi/aic7xxx.c | if (active_scbp->target_channel_lun != scb->target_channel_lun) |
scb | 4422 | drivers/scsi/aic7xxx.c | aic7xxx_error(scb->cmd) = errcode; |
scb | 4436 | drivers/scsi/aic7xxx.c | aic7xxx_reset_channel(p, channel, scb->position); |
scb | 4454 | drivers/scsi/aic7xxx.c | struct aic7xxx_scb *scb; |
scb | 4460 | drivers/scsi/aic7xxx.c | scb = &(p->scb_array[aic7xxx_position(cmd)]); |
scb | 4466 | drivers/scsi/aic7xxx.c | printk ("aic7xxx: (abort_reset) scb state 0x%x\n", scb->state); |
scb | 4469 | drivers/scsi/aic7xxx.c | if (scb->state & SCB_ACTIVE) |
scb | 4471 | drivers/scsi/aic7xxx.c | if (scb->state & SCB_IMMED) |
scb | 4478 | drivers/scsi/aic7xxx.c | aic7xxx_done(p, scb); |
scb | 4485 | drivers/scsi/aic7xxx.c | scb_status = aic7xxx_abort_scb(p, scb, errcode); |
scb | 354 | drivers/scsi/wd7000.c | struct scb *next; /* for lists of scbs */ |
scb | 608 | drivers/scsi/wd7000.c | register Scb *scb, *p; |
scb | 644 | drivers/scsi/wd7000.c | scb = scbfree; freescbs -= needed; |
scb | 652 | drivers/scsi/wd7000.c | return scb; |
scb | 656 | drivers/scsi/wd7000.c | static inline void free_scb( Scb *scb ) |
scb | 663 | drivers/scsi/wd7000.c | memset(scb, 0, sizeof(Scb)); |
scb | 664 | drivers/scsi/wd7000.c | scb->next = scbfree; scbfree = scb; |
scb | 815 | drivers/scsi/wd7000.c | register Scb *scb; /* for SCSI commands */ |
scb | 871 | drivers/scsi/wd7000.c | scb = (struct scb *) scsi2int((unchar *)icmbs[icmb].scbptr); |
scb | 873 | drivers/scsi/wd7000.c | if (!(scb->op & ICB_OP_MASK)) { /* an SCB is done */ |
scb | 874 | drivers/scsi/wd7000.c | SCpnt = scb->SCpnt; |
scb | 876 | drivers/scsi/wd7000.c | host_error = scb->vue | (icmb_status << 8); |
scb | 877 | drivers/scsi/wd7000.c | scsi_error = scb->status; |
scb | 881 | drivers/scsi/wd7000.c | free_scb(scb); |
scb | 886 | drivers/scsi/wd7000.c | icb = (IcbAny *) scb; |
scb | 900 | drivers/scsi/wd7000.c | register Scb *scb; |
scb | 911 | drivers/scsi/wd7000.c | scb = alloc_scbs(1); |
scb | 912 | drivers/scsi/wd7000.c | scb->idlun = idlun; |
scb | 913 | drivers/scsi/wd7000.c | memcpy(scb->cdb, cdb, cdblen); |
scb | 914 | drivers/scsi/wd7000.c | scb->direc = 0x40; /* Disable direction check */ |
scb | 916 | drivers/scsi/wd7000.c | scb->SCpnt = SCpnt; /* so we can find stuff later */ |
scb | 917 | drivers/scsi/wd7000.c | SCpnt->host_scribble = (unchar *) scb; |
scb | 918 | drivers/scsi/wd7000.c | scb->host = host; |
scb | 931 | drivers/scsi/wd7000.c | sgb = scb->sgb; |
scb | 932 | drivers/scsi/wd7000.c | scb->op = 1; |
scb | 933 | drivers/scsi/wd7000.c | any2scsi(scb->dataptr, (int) sgb); |
scb | 934 | drivers/scsi/wd7000.c | any2scsi(scb->maxlen, SCpnt->use_sg * sizeof (Sgb) ); |
scb | 941 | drivers/scsi/wd7000.c | scb->op = 0; |
scb | 942 | drivers/scsi/wd7000.c | any2scsi(scb->dataptr, (int) SCpnt->request_buffer); |
scb | 943 | drivers/scsi/wd7000.c | any2scsi(scb->maxlen, SCpnt->request_bufflen); |
scb | 945 | drivers/scsi/wd7000.c | while (!mail_out(host, scb)) /* keep trying */; |
scb | 976 | drivers/scsi/wd7000.c | mail_out(host, (struct scb *) &icb); |
scb | 1088 | drivers/scsi/wd7000.c | mail_out(host, (struct scb *) &icb); |