Lines Matching refs:fibctx
169 struct aac_fib_context * fibctx;
172 fibctx = kmalloc(sizeof(struct aac_fib_context), GFP_KERNEL);
173 if (fibctx == NULL) {
180 fibctx->type = FSAFS_NTC_GET_ADAPTER_FIB_CONTEXT;
181 fibctx->size = sizeof(struct aac_fib_context);
188 fibctx->unique = (u32)((ulong)fibctx & 0xFFFFFFFF);
192 init_completion(&fibctx->completion);
193 fibctx->wait = 0;
198 fibctx->count = 0;
199 INIT_LIST_HEAD(&fibctx->fib_list);
200 fibctx->jiffies = jiffies/HZ;
210 if (context->unique == fibctx->unique) {
212 fibctx->unique++;
218 list_add_tail(&fibctx->next, &dev->fib_list);
220 if (copy_to_user(arg, &fibctx->unique,
221 sizeof(fibctx->unique))) {
231 u32 fibctx;
248 struct aac_fib_context *fibctx;
259 f.fibctx = cf.fibctx;
274 fibctx = NULL;
277 fibctx = list_entry(entry, struct aac_fib_context, next);
281 if (fibctx->unique == f.fibctx) { /* We found a winner */
285 fibctx = NULL;
287 if (!fibctx) {
293 if((fibctx->type != FSAFS_NTC_GET_ADAPTER_FIB_CONTEXT) ||
294 (fibctx->size != sizeof(struct aac_fib_context))) {
305 if (!list_empty(&fibctx->fib_list)) {
309 entry = fibctx->fib_list.next;
313 fibctx->count--;
340 if (wait_for_completion_interruptible(&fibctx->completion) < 0) {
351 fibctx->jiffies = jiffies/HZ;
355 int aac_close_fib_context(struct aac_dev * dev, struct aac_fib_context * fibctx)
362 while (!list_empty(&fibctx->fib_list)) {
367 entry = fibctx->fib_list.next;
370 fibctx->count--;
380 list_del(&fibctx->next);
384 fibctx->type = 0;
388 kfree(fibctx);
397 * This routine will close down the fibctx passed in from the user.
402 struct aac_fib_context *fibctx;
415 fibctx = NULL;
418 fibctx = list_entry(entry, struct aac_fib_context, next);
420 * Extract the fibctx from the input parameters
422 if (fibctx->unique == (u32)(uintptr_t)arg) /* We found a winner */
425 fibctx = NULL;
428 if (!fibctx)
431 if((fibctx->type != FSAFS_NTC_GET_ADAPTER_FIB_CONTEXT) ||
432 (fibctx->size != sizeof(struct aac_fib_context)))
435 status = aac_close_fib_context(dev, fibctx);