• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/scsi/aic94xx/

Lines Matching refs:ascb

358 		struct asd_ascb *ascb = seq->escb_arr[i];
359 struct empty_scb *escb = &ascb->scb->escb;
361 ascb->edb_index = z;
728 struct asd_ascb *ascb;
735 ascb = asd_tc_index_find(seq, (int)le16_to_cpu(dl->index));
737 if (unlikely(!ascb)) {
738 ASD_DPRINTK("BUG:sequencer:dl:no ascb?!\n");
740 } else if (ascb->scb->header.opcode == EMPTY_SCB) {
742 } else if (!ascb->uldd_timer && !del_timer(&ascb->timer)) {
746 list_del_init(&ascb->list);
750 ascb->tasklet_complete(ascb, dl);
1039 struct asd_ascb *ascb;
1042 ascb = kmem_cache_zalloc(asd_ascb_cache, gfp_flags);
1044 if (ascb) {
1045 ascb->dma_scb.size = sizeof(struct scb);
1046 ascb->dma_scb.vaddr = dma_pool_alloc(asd_ha->scb_pool,
1048 &ascb->dma_scb.dma_handle);
1049 if (!ascb->dma_scb.vaddr) {
1050 kmem_cache_free(asd_ascb_cache, ascb);
1053 memset(ascb->dma_scb.vaddr, 0, sizeof(struct scb));
1054 asd_init_ascb(asd_ha, ascb);
1057 ascb->tc_index = asd_tc_index_get(seq, ascb);
1059 if (ascb->tc_index == -1)
1062 ascb->scb->header.index = cpu_to_le16((u16)ascb->tc_index);
1065 return ascb;
1067 dma_pool_free(asd_ha->scb_pool, ascb->dma_scb.vaddr,
1068 ascb->dma_scb.dma_handle);
1069 kmem_cache_free(asd_ascb_cache, ascb);
1070 ASD_DPRINTK("no index for ascb\n");
1082 * a linked list in two ways: by their list field of the ascb struct
1097 struct asd_ascb *ascb = asd_ascb_alloc(asd_ha, gfp_flags);
1099 if (!ascb)
1102 first = ascb;
1107 list_add_tail(&ascb->list, &first->list);
1109 cpu_to_le64(((u64)ascb->dma_scb.dma_handle));
1119 * @ascb: pointer to the head of an ascb list
1135 struct asd_ascb *ascb)
1138 struct asd_ascb *last = list_entry(ascb->list.prev,
1141 struct asd_dma_tok t = ascb->dma_scb;
1143 memcpy(seq->next_scb.vaddr, ascb->scb, sizeof(*ascb->scb));
1144 ascb->dma_scb = seq->next_scb;
1145 ascb->scb = ascb->dma_scb.vaddr;
1163 struct asd_ascb *ascb;
1164 list_for_each_entry(ascb, list, list) {
1165 if (!ascb->uldd_timer) {
1166 ascb->timer.data = (unsigned long) ascb;
1167 ascb->timer.function = asd_ascb_timedout;
1168 ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT;
1169 add_timer(&ascb->timer);
1177 * @ascb: pointer to the first aSCB in the list
1194 int asd_post_ascb_list(struct asd_ha_struct *asd_ha, struct asd_ascb *ascb,
1214 asd_swap_head_scb(asd_ha, ascb);
1216 __list_add(&list, ascb->list.prev, &ascb->list);
1231 * @ascb: pointer to the first empty SCB in the list
1239 * ascb, this function exists to generalize this. More specifically,
1241 * memcpy() at swap head, as opposed to for each ascb sent (in the
1246 int asd_post_escb_list(struct asd_ha_struct *asd_ha, struct asd_ascb *ascb,
1252 asd_swap_head_scb(asd_ha, ascb);
1346 struct asd_ascb *ascb;
1362 asd_printk("no memory for control phy ascb list\n");
1367 ascb = ascb_list;
1369 asd_build_control_phy(ascb, i, ENABLE_PHY);
1370 ascb = list_entry(ascb->list.next, struct asd_ascb, list);