Lines Matching refs:q
107 struct qdio_q *q; in set_impl_params() local
121 for_each_input_queue(irq_ptr, q, i) { in set_impl_params()
123 q->slib->slibe[j].parms = in set_impl_params()
130 for_each_output_queue(irq_ptr, q, i) { in set_impl_params()
132 q->slib->slibe[j].parms = in set_impl_params()
139 struct qdio_q *q; in __qdio_allocate_qs() local
143 q = kmem_cache_alloc(qdio_q_cache, GFP_KERNEL); in __qdio_allocate_qs()
144 if (!q) in __qdio_allocate_qs()
147 q->slib = (struct slib *) __get_free_page(GFP_KERNEL); in __qdio_allocate_qs()
148 if (!q->slib) { in __qdio_allocate_qs()
149 kmem_cache_free(qdio_q_cache, q); in __qdio_allocate_qs()
152 irq_ptr_qs[i] = q; in __qdio_allocate_qs()
168 static void setup_queues_misc(struct qdio_q *q, struct qdio_irq *irq_ptr, in setup_queues_misc() argument
171 struct slib *slib = q->slib; in setup_queues_misc()
174 memset(q, 0, sizeof(*q)); in setup_queues_misc()
176 q->slib = slib; in setup_queues_misc()
177 q->irq_ptr = irq_ptr; in setup_queues_misc()
178 q->mask = 1 << (31 - i); in setup_queues_misc()
179 q->nr = i; in setup_queues_misc()
180 q->handler = handler; in setup_queues_misc()
183 static void setup_storage_lists(struct qdio_q *q, struct qdio_irq *irq_ptr, in setup_storage_lists() argument
189 DBF_HEX(&q, sizeof(void *)); in setup_storage_lists()
190 q->sl = (struct sl *)((char *)q->slib + PAGE_SIZE / 2); in setup_storage_lists()
194 q->sbal[j] = *sbals_array++; in setup_storage_lists()
198 prev = (q->is_input_q) ? irq_ptr->input_qs[i - 1] in setup_storage_lists()
200 prev->slib->nsliba = (unsigned long)q->slib; in setup_storage_lists()
203 q->slib->sla = (unsigned long)q->sl; in setup_storage_lists()
204 q->slib->slsba = (unsigned long)&q->slsb.val[0]; in setup_storage_lists()
208 q->sl->element[j].sbal = (unsigned long)q->sbal[j]; in setup_storage_lists()
214 struct qdio_q *q; in setup_queues() local
221 for_each_input_queue(irq_ptr, q, i) { in setup_queues()
223 setup_queues_misc(q, irq_ptr, qdio_init->input_handler, i); in setup_queues()
225 q->is_input_q = 1; in setup_queues()
226 q->u.in.queue_start_poll = qdio_init->queue_start_poll_array ? in setup_queues()
229 setup_storage_lists(q, irq_ptr, input_sbal_array, i); in setup_queues()
233 tasklet_init(&q->tasklet, tiqdio_inbound_processing, in setup_queues()
234 (unsigned long) q); in setup_queues()
236 tasklet_init(&q->tasklet, qdio_inbound_processing, in setup_queues()
237 (unsigned long) q); in setup_queues()
241 for_each_output_queue(irq_ptr, q, i) { in setup_queues()
243 setup_queues_misc(q, irq_ptr, qdio_init->output_handler, i); in setup_queues()
245 q->u.out.sbal_state = output_sbal_state_array; in setup_queues()
248 q->is_input_q = 0; in setup_queues()
249 q->u.out.scan_threshold = qdio_init->scan_threshold; in setup_queues()
250 setup_storage_lists(q, irq_ptr, output_sbal_array, i); in setup_queues()
253 tasklet_init(&q->tasklet, qdio_outbound_processing, in setup_queues()
254 (unsigned long) q); in setup_queues()
255 setup_timer(&q->u.out.timer, (void(*)(unsigned long)) in setup_queues()
256 &qdio_outbound_timer, (unsigned long)q); in setup_queues()
357 struct qdio_q *q; in qdio_release_memory() local
365 q = irq_ptr->input_qs[i]; in qdio_release_memory()
366 if (q) { in qdio_release_memory()
367 free_page((unsigned long) q->slib); in qdio_release_memory()
368 kmem_cache_free(qdio_q_cache, q); in qdio_release_memory()
372 q = irq_ptr->output_qs[i]; in qdio_release_memory()
373 if (q) { in qdio_release_memory()
374 if (q->u.out.use_cq) { in qdio_release_memory()
378 struct qaob *aob = q->u.out.aobs[n]; in qdio_release_memory()
381 q->u.out.aobs[n] = NULL; in qdio_release_memory()
385 qdio_disable_async_operation(&q->u.out); in qdio_release_memory()
387 free_page((unsigned long) q->slib); in qdio_release_memory()
388 kmem_cache_free(qdio_q_cache, q); in qdio_release_memory()
553 void qdio_disable_async_operation(struct qdio_output_q *q) in qdio_disable_async_operation() argument
555 kfree(q->aobs); in qdio_disable_async_operation()
556 q->aobs = NULL; in qdio_disable_async_operation()
557 q->use_cq = 0; in qdio_disable_async_operation()