Lines Matching refs:fibptr

106 	struct fib *fibptr = NULL;  in aac_fib_vector_assign()  local
108 for (i = 0, fibptr = &dev->fibs[i]; in aac_fib_vector_assign()
110 i++, fibptr++) { in aac_fib_vector_assign()
114 fibptr->vector_no = 0; in aac_fib_vector_assign()
116 fibptr->vector_no = vector; in aac_fib_vector_assign()
134 struct fib *fibptr; in aac_fib_setup() local
167 for (i = 0, fibptr = &dev->fibs[i]; in aac_fib_setup()
169 i++, fibptr++) in aac_fib_setup()
171 fibptr->flags = 0; in aac_fib_setup()
172 fibptr->size = sizeof(struct fib); in aac_fib_setup()
173 fibptr->dev = dev; in aac_fib_setup()
174 fibptr->hw_fib_va = hw_fib; in aac_fib_setup()
175 fibptr->data = (void *) fibptr->hw_fib_va->data; in aac_fib_setup()
176 fibptr->next = fibptr+1; /* Forward chain the fibs */ in aac_fib_setup()
177 init_completion(&fibptr->event_wait); in aac_fib_setup()
178 spin_lock_init(&fibptr->event_lock); in aac_fib_setup()
182 fibptr->hw_fib_pa = hw_fib_pa; in aac_fib_setup()
183 fibptr->hw_sgl_pa = hw_fib_pa + in aac_fib_setup()
189 fibptr->hw_error_pa = hw_fib_pa + in aac_fib_setup()
225 struct fib *fibptr; in aac_fib_alloc_tag() local
227 fibptr = &dev->fibs[scsi_cmd_to_rq(scmd)->tag]; in aac_fib_alloc_tag()
232 fibptr->hw_fib_va->header.XferState = 0; in aac_fib_alloc_tag()
233 fibptr->type = FSAFS_NTC_FIB_CONTEXT; in aac_fib_alloc_tag()
234 fibptr->callback_data = NULL; in aac_fib_alloc_tag()
235 fibptr->callback = NULL; in aac_fib_alloc_tag()
236 fibptr->flags = 0; in aac_fib_alloc_tag()
238 return fibptr; in aac_fib_alloc_tag()
251 struct fib * fibptr; in aac_fib_alloc() local
254 fibptr = dev->free_fib; in aac_fib_alloc()
255 if(!fibptr){ in aac_fib_alloc()
257 return fibptr; in aac_fib_alloc()
259 dev->free_fib = fibptr->next; in aac_fib_alloc()
264 fibptr->type = FSAFS_NTC_FIB_CONTEXT; in aac_fib_alloc()
265 fibptr->size = sizeof(struct fib); in aac_fib_alloc()
270 fibptr->hw_fib_va->header.XferState = 0; in aac_fib_alloc()
271 fibptr->flags = 0; in aac_fib_alloc()
272 fibptr->callback = NULL; in aac_fib_alloc()
273 fibptr->callback_data = NULL; in aac_fib_alloc()
275 return fibptr; in aac_fib_alloc()
285 void aac_fib_free(struct fib *fibptr) in aac_fib_free() argument
289 if (fibptr->done == 2) in aac_fib_free()
292 spin_lock_irqsave(&fibptr->dev->fib_lock, flags); in aac_fib_free()
293 if (unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT)) in aac_fib_free()
295 if (!(fibptr->flags & FIB_CONTEXT_FLAG_NATIVE_HBA) && in aac_fib_free()
296 fibptr->hw_fib_va->header.XferState != 0) { in aac_fib_free()
298 (void*)fibptr, in aac_fib_free()
299 le32_to_cpu(fibptr->hw_fib_va->header.XferState)); in aac_fib_free()
301 fibptr->next = fibptr->dev->free_fib; in aac_fib_free()
302 fibptr->dev->free_fib = fibptr; in aac_fib_free()
303 spin_unlock_irqrestore(&fibptr->dev->fib_lock, flags); in aac_fib_free()
313 void aac_fib_init(struct fib *fibptr) in aac_fib_init() argument
315 struct hw_fib *hw_fib = fibptr->hw_fib_va; in aac_fib_init()
319 hw_fib->header.Size = cpu_to_le16(fibptr->dev->max_fib_size); in aac_fib_init()
321 hw_fib->header.u.ReceiverFibAddress = cpu_to_le32(fibptr->hw_fib_pa); in aac_fib_init()
322 hw_fib->header.SenderSize = cpu_to_le16(fibptr->dev->max_fib_size); in aac_fib_init()
333 static void fib_dealloc(struct fib * fibptr) in fib_dealloc() argument
335 struct hw_fib *hw_fib = fibptr->hw_fib_va; in fib_dealloc()
421 …ev, u32 * index, u32 qid, struct hw_fib * hw_fib, int wait, struct fib * fibptr, unsigned long *no… in aac_queue_get() argument
454 entry->addr = cpu_to_le32(fibptr->hw_fib_pa); in aac_queue_get()
483 int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size, in aac_fib_send() argument
487 struct aac_dev * dev = fibptr->dev; in aac_fib_send()
488 struct hw_fib * hw_fib = fibptr->hw_fib_va; in aac_fib_send()
510 fibptr->flags = 0; in aac_fib_send()
528 cpu_to_le32(((u32)(fibptr - dev->fibs)) << 2); in aac_fib_send()
534 cpu_to_le32((((u32)(fibptr - dev->fibs)) << 2) + 1); in aac_fib_send()
563 fibptr->callback = callback; in aac_fib_send()
564 fibptr->callback_data = callback_data; in aac_fib_send()
565 fibptr->flags = FIB_CONTEXT_FLAG; in aac_fib_send()
568 fibptr->done = 0; in aac_fib_send()
574 …bCommand = %d.\n", le32_to_cpu(((struct aac_query_mount *)fib_data(fibptr))->command))); in aac_fib_send()
576 dprintk((KERN_DEBUG " hw_fib va being sent=%p\n",fibptr->hw_fib_va)); in aac_fib_send()
577 dprintk((KERN_DEBUG " hw_fib pa being sent=%lx\n",(ulong)fibptr->hw_fib_pa)); in aac_fib_send()
578 dprintk((KERN_DEBUG " fib being sent=%p\n",fibptr)); in aac_fib_send()
594 spin_lock_irqsave(&fibptr->event_lock, flags); in aac_fib_send()
599 spin_unlock_irqrestore(&fibptr->event_lock, flags); in aac_fib_send()
602 list_add_tail(&fibptr->fiblink, &dev->sync_fib_list); in aac_fib_send()
605 dev->sync_fib = fibptr; in aac_fib_send()
608 (u32)fibptr->hw_fib_pa, 0, 0, 0, 0, 0, in aac_fib_send()
612 fibptr->flags |= FIB_CONTEXT_FLAG_WAIT; in aac_fib_send()
613 if (wait_for_completion_interruptible(&fibptr->event_wait)) { in aac_fib_send()
614 fibptr->flags &= ~FIB_CONTEXT_FLAG_WAIT; in aac_fib_send()
622 if (aac_adapter_deliver(fibptr) != 0) { in aac_fib_send()
625 spin_unlock_irqrestore(&fibptr->event_lock, flags); in aac_fib_send()
639 spin_unlock_irqrestore(&fibptr->event_lock, flags); in aac_fib_send()
649 while (!try_wait_for_completion(&fibptr->event_wait)) { in aac_fib_send()
679 } else if (wait_for_completion_interruptible(&fibptr->event_wait)) { in aac_fib_send()
684 spin_lock_irqsave(&fibptr->event_lock, flags); in aac_fib_send()
685 if (fibptr->done == 0) { in aac_fib_send()
686 fibptr->done = 2; /* Tell interrupt we aborted */ in aac_fib_send()
687 spin_unlock_irqrestore(&fibptr->event_lock, flags); in aac_fib_send()
690 spin_unlock_irqrestore(&fibptr->event_lock, flags); in aac_fib_send()
691 BUG_ON(fibptr->done == 0); in aac_fib_send()
693 if(unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT)) in aac_fib_send()
707 int aac_hba_send(u8 command, struct fib *fibptr, fib_callback callback, in aac_hba_send() argument
710 struct aac_dev *dev = fibptr->dev; in aac_hba_send()
715 fibptr->hw_fib_va; in aac_hba_send()
717 fibptr->flags = (FIB_CONTEXT_FLAG | FIB_CONTEXT_FLAG_NATIVE_HBA); in aac_hba_send()
720 fibptr->callback = callback; in aac_hba_send()
721 fibptr->callback_data = callback_data; in aac_hba_send()
731 cpu_to_le32((((u32)(fibptr - dev->fibs)) << 2) + 1); in aac_hba_send()
732 fibptr->flags |= FIB_CONTEXT_FLAG_SCSI_CMD; in aac_hba_send()
745 spin_lock_irqsave(&fibptr->event_lock, flags); in aac_hba_send()
748 if (aac_adapter_deliver(fibptr) != 0) { in aac_hba_send()
750 spin_unlock_irqrestore(&fibptr->event_lock, flags); in aac_hba_send()
761 spin_unlock_irqrestore(&fibptr->event_lock, flags); in aac_hba_send()
766 fibptr->flags |= FIB_CONTEXT_FLAG_WAIT; in aac_hba_send()
767 if (wait_for_completion_interruptible(&fibptr->event_wait)) in aac_hba_send()
768 fibptr->done = 2; in aac_hba_send()
769 fibptr->flags &= ~(FIB_CONTEXT_FLAG_WAIT); in aac_hba_send()
771 spin_lock_irqsave(&fibptr->event_lock, flags); in aac_hba_send()
772 if ((fibptr->done == 0) || (fibptr->done == 2)) { in aac_hba_send()
773 fibptr->done = 2; /* Tell interrupt we aborted */ in aac_hba_send()
774 spin_unlock_irqrestore(&fibptr->event_lock, flags); in aac_hba_send()
777 spin_unlock_irqrestore(&fibptr->event_lock, flags); in aac_hba_send()
778 WARN_ON(fibptr->done == 0); in aac_hba_send()
780 if (unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT)) in aac_hba_send()
871 int aac_fib_adapter_complete(struct fib *fibptr, unsigned short size) in aac_fib_adapter_complete() argument
873 struct hw_fib * hw_fib = fibptr->hw_fib_va; in aac_fib_adapter_complete()
874 struct aac_dev * dev = fibptr->dev; in aac_fib_adapter_complete()
943 int aac_fib_complete(struct fib *fibptr) in aac_fib_complete() argument
945 struct hw_fib * hw_fib = fibptr->hw_fib_va; in aac_fib_complete()
947 if (fibptr->flags & FIB_CONTEXT_FLAG_NATIVE_HBA) { in aac_fib_complete()
948 fib_dealloc(fibptr); in aac_fib_complete()
957 if (hw_fib->header.XferState == 0 || fibptr->done == 2) in aac_fib_complete()
977 fib_dealloc(fibptr); in aac_fib_complete()
985 fib_dealloc(fibptr); in aac_fib_complete()
987 fib_dealloc(fibptr); in aac_fib_complete()
1062 static void aac_handle_aif(struct aac_dev * dev, struct fib * fibptr) in aac_handle_aif() argument
1064 struct hw_fib * hw_fib = fibptr->hw_fib_va; in aac_handle_aif()
1960 static void aac_handle_sa_aif(struct aac_dev *dev, struct fib *fibptr) in aac_handle_sa_aif() argument
1965 if (fibptr->hbacmd_size & SA_AIF_HOTPLUG) in aac_handle_sa_aif()
1967 else if (fibptr->hbacmd_size & SA_AIF_HARDWARE) in aac_handle_sa_aif()
1969 else if (fibptr->hbacmd_size & SA_AIF_PDEV_CHANGE) in aac_handle_sa_aif()
1971 else if (fibptr->hbacmd_size & SA_AIF_LDEV_CHANGE) in aac_handle_sa_aif()
1973 else if (fibptr->hbacmd_size & SA_AIF_BPSTAT_CHANGE) in aac_handle_sa_aif()
1975 else if (fibptr->hbacmd_size & SA_AIF_BPCFG_CHANGE) in aac_handle_sa_aif()
2289 struct fib *fibptr; in aac_send_wellness_command() local
2293 fibptr = aac_fib_alloc(dev); in aac_send_wellness_command()
2294 if (!fibptr) in aac_send_wellness_command()
2302 aac_fib_init(fibptr); in aac_send_wellness_command()
2307 srbcmd = (struct aac_srb *)fib_data(fibptr); in aac_send_wellness_command()
2330 ret = aac_fib_send(ScsiPortCommand64, fibptr, sizeof(struct aac_srb), in aac_send_wellness_command()
2340 aac_fib_complete(fibptr); in aac_send_wellness_command()
2352 aac_fib_free(fibptr); in aac_send_wellness_command()
2388 struct fib *fibptr; in aac_send_hosttime() local
2391 fibptr = aac_fib_alloc(dev); in aac_send_hosttime()
2392 if (!fibptr) in aac_send_hosttime()
2395 aac_fib_init(fibptr); in aac_send_hosttime()
2396 info = (__le32 *)fib_data(fibptr); in aac_send_hosttime()
2398 ret = aac_fib_send(SendHostTime, fibptr, sizeof(*info), FsaNormal, in aac_send_hosttime()
2406 aac_fib_complete(fibptr); in aac_send_hosttime()
2413 aac_fib_free(fibptr); in aac_send_hosttime()