Lines Matching defs:fibptr

103 	struct fib *fibptr;
135 for (i = 0, fibptr = &dev->fibs[i];
137 i++, fibptr++)
139 fibptr->dev = dev;
140 fibptr->hw_fib_va = hw_fib;
141 fibptr->data = (void *) fibptr->hw_fib_va->data;
142 fibptr->next = fibptr+1; /* Forward chain the fibs */
143 sema_init(&fibptr->event_wait, 0);
144 spin_lock_init(&fibptr->event_lock);
147 fibptr->hw_fib_pa = hw_fib_pa;
174 struct fib * fibptr;
177 fibptr = dev->free_fib;
178 if(!fibptr){
180 return fibptr;
182 dev->free_fib = fibptr->next;
187 fibptr->type = FSAFS_NTC_FIB_CONTEXT;
188 fibptr->size = sizeof(struct fib);
193 fibptr->hw_fib_va->header.XferState = 0;
194 fibptr->flags = 0;
195 fibptr->callback = NULL;
196 fibptr->callback_data = NULL;
198 return fibptr;
203 * @fibptr: fib to free up
208 void aac_fib_free(struct fib *fibptr)
212 spin_lock_irqsave(&fibptr->event_lock, flagsv);
213 if (fibptr->done == 2) {
214 spin_unlock_irqrestore(&fibptr->event_lock, flagsv);
217 spin_unlock_irqrestore(&fibptr->event_lock, flagsv);
219 spin_lock_irqsave(&fibptr->dev->fib_lock, flags);
220 if (unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT))
222 if (fibptr->hw_fib_va->header.XferState != 0) {
223 printk(KERN_WARNING "aac_fib_free, XferState != 0, fibptr = 0x%p, XferState = 0x%x\n",
224 (void*)fibptr,
225 le32_to_cpu(fibptr->hw_fib_va->header.XferState));
227 fibptr->next = fibptr->dev->free_fib;
228 fibptr->dev->free_fib = fibptr;
229 spin_unlock_irqrestore(&fibptr->dev->fib_lock, flags);
234 * @fibptr: The fib to initialize
239 void aac_fib_init(struct fib *fibptr)
241 struct hw_fib *hw_fib = fibptr->hw_fib_va;
244 hw_fib->header.Size = cpu_to_le16(fibptr->dev->max_fib_size);
247 hw_fib->header.ReceiverFibAddress = cpu_to_le32(fibptr->hw_fib_pa);
248 hw_fib->header.SenderSize = cpu_to_le16(fibptr->dev->max_fib_size);
253 * @fibptr: fib to deallocate
259 static void fib_dealloc(struct fib * fibptr)
261 struct hw_fib *hw_fib = fibptr->hw_fib_va;
339 * @fibptr: Driver fib object to go with fib
348 int aac_queue_get(struct aac_dev * dev, u32 * index, u32 qid, struct hw_fib * hw_fib, int wait, struct fib * fibptr, unsigned long *nonotify)
381 entry->addr = cpu_to_le32(fibptr->hw_fib_pa);
396 * @fibptr: The fib
410 int aac_fib_send(u16 command, struct fib *fibptr, unsigned long size,
414 struct aac_dev * dev = fibptr->dev;
415 struct hw_fib * hw_fib = fibptr->hw_fib_va;
435 fibptr->flags = 0;
452 hw_fib->header.SenderFibAddress = cpu_to_le32(((u32)(fibptr - dev->fibs)) << 2);
453 hw_fib->header.SenderData = (u32)(fibptr - dev->fibs);
463 fibptr->hw_fib_va->header.Flags = 0; /* 0 the flags field - internal only*/
482 fibptr->callback = callback;
483 fibptr->callback_data = callback_data;
484 fibptr->flags = FIB_CONTEXT_FLAG;
487 fibptr->done = 0;
493 dprintk((KERN_DEBUG " SubCommand = %d.\n", le32_to_cpu(((struct aac_query_mount *)fib_data(fibptr))->command)));
495 dprintk((KERN_DEBUG " hw_fib va being sent=%p\n",fibptr->hw_fib_va));
496 dprintk((KERN_DEBUG " hw_fib pa being sent=%lx\n",(ulong)fibptr->hw_fib_pa));
497 dprintk((KERN_DEBUG " fib being sent=%p\n",fibptr));
513 spin_lock_irqsave(&fibptr->event_lock, flags);
518 spin_unlock_irqrestore(&fibptr->event_lock, flags);
521 list_add_tail(&fibptr->fiblink, &dev->sync_fib_list);
524 dev->sync_fib = fibptr;
527 (u32)fibptr->hw_fib_pa, 0, 0, 0, 0, 0,
531 fibptr->flags |= FIB_CONTEXT_FLAG_WAIT;
532 if (down_interruptible(&fibptr->event_wait)) {
533 fibptr->flags &= ~FIB_CONTEXT_FLAG_WAIT;
541 if (aac_adapter_deliver(fibptr) != 0) {
544 spin_unlock_irqrestore(&fibptr->event_lock, flags);
558 spin_unlock_irqrestore(&fibptr->event_lock, flags);
568 while (down_trylock(&fibptr->event_wait)) {
593 } else if (down_interruptible(&fibptr->event_wait)) {
598 spin_lock_irqsave(&fibptr->event_lock, flags);
599 if (fibptr->done == 0) {
600 fibptr->done = 2; /* Tell interrupt we aborted */
601 spin_unlock_irqrestore(&fibptr->event_lock, flags);
604 spin_unlock_irqrestore(&fibptr->event_lock, flags);
605 BUG_ON(fibptr->done == 0);
607 if(unlikely(fibptr->flags & FIB_CONTEXT_FLAG_TIMED_OUT))
696 * @fibptr: fib to complete
703 int aac_fib_adapter_complete(struct fib *fibptr, unsigned short size)
705 struct hw_fib * hw_fib = fibptr->hw_fib_va;
706 struct aac_dev * dev = fibptr->dev;
771 int aac_fib_complete(struct fib *fibptr)
774 struct hw_fib * hw_fib = fibptr->hw_fib_va;
794 spin_lock_irqsave(&fibptr->event_lock, flags);
795 if (fibptr->done == 2) {
796 spin_unlock_irqrestore(&fibptr->event_lock, flags);
799 spin_unlock_irqrestore(&fibptr->event_lock, flags);
804 fib_dealloc(fibptr);
812 fib_dealloc(fibptr);
814 fib_dealloc(fibptr);
858 * @fibptr: Pointer to fibptr from adapter
865 static void aac_handle_aif(struct aac_dev * dev, struct fib * fibptr)
867 struct hw_fib * hw_fib = fibptr->hw_fib_va;
1871 struct fib *fibptr;
1873 if ((fibptr = aac_fib_alloc(dev))) {
1877 aac_fib_init(fibptr);
1879 info = (__le32 *) fib_data(fibptr);
1886 fibptr,
1895 aac_fib_complete(fibptr);
1899 aac_fib_free(fibptr);