Lines Matching refs:softs

35 pqisrc_submit_admin_req(pqisrc_softstate_t *softs,  in pqisrc_submit_admin_req()  argument
39 ob_queue_t *ob_q = &softs->admin_ob_queue; in pqisrc_submit_admin_req()
40 ib_queue_t *ib_q = &softs->admin_ib_queue; in pqisrc_submit_admin_req()
53 req->req_id = pqisrc_get_tag(&softs->taglist); in pqisrc_submit_admin_req()
59 softs->rcb[req->req_id].tag = req->req_id; in pqisrc_submit_admin_req()
62 ret = pqisrc_submit_cmnd(softs, ib_q, req); in pqisrc_submit_admin_req()
84 PCI_MEM_PUT32(softs, ob_q->ci_register_abs, in pqisrc_submit_admin_req()
94 os_reset_rcb(&softs->rcb[req->req_id]); in pqisrc_submit_admin_req()
95 pqisrc_put_tag(&softs->taglist,req->req_id); in pqisrc_submit_admin_req()
99 os_reset_rcb(&softs->rcb[req->req_id]); in pqisrc_submit_admin_req()
100 pqisrc_put_tag(&softs->taglist,req->req_id); in pqisrc_submit_admin_req()
110 pqisrc_get_admin_queue_config(pqisrc_softstate_t *softs) in pqisrc_get_admin_queue_config() argument
115 val = LE_64(PCI_MEM_GET64(softs, &softs->pqi_reg->pqi_dev_adminq_cap, PQI_ADMINQ_CAP)); in pqisrc_get_admin_queue_config()
118 softs->admin_ib_queue.num_elem = val & 0xFF; in pqisrc_get_admin_queue_config()
119 softs->admin_ob_queue.num_elem = (val & 0xFF00) >> 8; in pqisrc_get_admin_queue_config()
121 softs->admin_ib_queue.elem_size = ((val & 0xFF0000) >> 16) * 16; in pqisrc_get_admin_queue_config()
122 softs->admin_ob_queue.elem_size = ((val & 0xFF000000) >> 24) * 16; in pqisrc_get_admin_queue_config()
125 softs->admin_ib_queue.num_elem, softs->admin_ib_queue.elem_size); in pqisrc_get_admin_queue_config()
127 softs->admin_ob_queue.num_elem, softs->admin_ob_queue.elem_size); in pqisrc_get_admin_queue_config()
134 pqisrc_decide_admin_queue_config(pqisrc_softstate_t *softs) in pqisrc_decide_admin_queue_config() argument
137 softs->admin_ib_queue.num_elem = MIN(softs->admin_ib_queue.num_elem, in pqisrc_decide_admin_queue_config()
141 softs->admin_ob_queue.num_elem = MIN(softs->admin_ob_queue.num_elem, in pqisrc_decide_admin_queue_config()
149 pqisrc_allocate_and_init_inbound_q(pqisrc_softstate_t *softs, ib_queue_t *ib_q, char *tag) in pqisrc_allocate_and_init_inbound_q() argument
168 ret = os_dma_mem_alloc(softs, &ib_q->alloc_dma); in pqisrc_allocate_and_init_inbound_q()
220 pqisrc_allocate_and_init_outbound_q(pqisrc_softstate_t *softs, ob_queue_t *ob_q, in pqisrc_allocate_and_init_outbound_q() argument
240 ret = os_dma_mem_alloc(softs, &ob_q->alloc_dma); in pqisrc_allocate_and_init_outbound_q()
288 int pqisrc_allocate_and_init_adminq(pqisrc_softstate_t *softs) in pqisrc_allocate_and_init_adminq() argument
291 ib_queue_t *admin_ib_q = &softs->admin_ib_queue; in pqisrc_allocate_and_init_adminq()
292 ob_queue_t *admin_ob_q = &softs->admin_ob_queue; in pqisrc_allocate_and_init_adminq()
294 ret = pqisrc_allocate_and_init_inbound_q(softs, admin_ib_q, "admin_queue"); in pqisrc_allocate_and_init_adminq()
297 ret = pqisrc_allocate_and_init_outbound_q(softs, admin_ob_q, "admin_queue"); in pqisrc_allocate_and_init_adminq()
301 if(softs->admin_ib_queue.lockcreated==true) { in pqisrc_allocate_and_init_adminq()
302 OS_UNINIT_PQILOCK(&softs->admin_ib_queue.lock); in pqisrc_allocate_and_init_adminq()
303 softs->admin_ib_queue.lockcreated = false; in pqisrc_allocate_and_init_adminq()
305 if (softs->admin_ib_queue.alloc_dma.virt_addr) in pqisrc_allocate_and_init_adminq()
306 os_dma_mem_free(softs, &softs->admin_ib_queue.alloc_dma); in pqisrc_allocate_and_init_adminq()
319 pqisrc_create_delete_adminq(pqisrc_softstate_t *softs, uint32_t cmd) in pqisrc_create_delete_adminq() argument
326 PCI_MEM_PUT64(softs, &softs->pqi_reg->admin_q_config, PQI_ADMINQ_CONFIG, LE_64(cmd)); in pqisrc_create_delete_adminq()
334 COND_WAIT((PCI_MEM_GET64(softs, &softs->pqi_reg->admin_q_config, PQI_ADMINQ_CONFIG) == in pqisrc_create_delete_adminq()
349 pqisrc_print_adminq_config(pqisrc_softstate_t *softs) in pqisrc_print_adminq_config() argument
352 (void*)softs->admin_ib_queue.array_dma_addr); in pqisrc_print_adminq_config()
354 (void*)softs->admin_ib_queue.array_virt_addr); in pqisrc_print_adminq_config()
356 softs->admin_ib_queue.num_elem); in pqisrc_print_adminq_config()
358 softs->admin_ib_queue.elem_size); in pqisrc_print_adminq_config()
360 (void*)softs->admin_ob_queue.array_dma_addr); in pqisrc_print_adminq_config()
362 (void*)softs->admin_ob_queue.array_virt_addr); in pqisrc_print_adminq_config()
364 softs->admin_ob_queue.num_elem); in pqisrc_print_adminq_config()
366 softs->admin_ob_queue.elem_size); in pqisrc_print_adminq_config()
368 (void*)softs->admin_ib_queue.pi_register_abs); in pqisrc_print_adminq_config()
370 (void*)softs->admin_ob_queue.ci_register_abs); in pqisrc_print_adminq_config()
377 pqisrc_create_admin_queue(pqisrc_softstate_t *softs) in pqisrc_create_admin_queue() argument
386 pqisrc_get_admin_queue_config(softs); in pqisrc_create_admin_queue()
389 pqisrc_decide_admin_queue_config(softs); in pqisrc_create_admin_queue()
392 ret = pqisrc_allocate_and_init_adminq(softs); in pqisrc_create_admin_queue()
399 PCI_MEM_PUT64(softs, &softs->pqi_reg->admin_ibq_elem_array_addr, in pqisrc_create_admin_queue()
400 PQI_ADMIN_IBQ_ELEM_ARRAY_ADDR, LE_64(softs->admin_ib_queue.array_dma_addr)); in pqisrc_create_admin_queue()
403 PCI_MEM_PUT64(softs, &softs->pqi_reg->admin_obq_elem_array_addr, in pqisrc_create_admin_queue()
404 PQI_ADMIN_OBQ_ELEM_ARRAY_ADDR, LE_64(softs->admin_ob_queue.array_dma_addr)); in pqisrc_create_admin_queue()
407 PCI_MEM_PUT64(softs, &softs->pqi_reg->admin_ibq_ci_addr, in pqisrc_create_admin_queue()
408 PQI_ADMIN_IBQ_CI_ADDR, LE_64(softs->admin_ib_queue.ci_dma_addr)); in pqisrc_create_admin_queue()
411 PCI_MEM_PUT64(softs, &softs->pqi_reg->admin_obq_pi_addr, in pqisrc_create_admin_queue()
412 PQI_ADMIN_OBQ_PI_ADDR, LE_64(softs->admin_ob_queue.pi_dma_addr)); in pqisrc_create_admin_queue()
417 admin_q_param = softs->admin_ib_queue.num_elem | in pqisrc_create_admin_queue()
418 (softs->admin_ob_queue.num_elem << 8)| in pqisrc_create_admin_queue()
421 PCI_MEM_PUT32(softs, &softs->pqi_reg->admin_q_param, in pqisrc_create_admin_queue()
425 ret = pqisrc_create_delete_adminq(softs, in pqisrc_create_admin_queue()
433 softs->admin_ib_queue.pi_register_offset =(PQISRC_PQI_REG_OFFSET + in pqisrc_create_admin_queue()
434 PCI_MEM_GET64(softs, &softs->pqi_reg->admin_ibq_pi_offset, PQI_ADMIN_IBQ_PI_OFFSET)); in pqisrc_create_admin_queue()
436 softs->admin_ib_queue.pi_register_abs =(uint32_t *)(softs->pci_mem_base_vaddr + in pqisrc_create_admin_queue()
437 softs->admin_ib_queue.pi_register_offset); in pqisrc_create_admin_queue()
439 softs->admin_ob_queue.ci_register_offset = (PQISRC_PQI_REG_OFFSET + in pqisrc_create_admin_queue()
440 PCI_MEM_GET64(softs, &softs->pqi_reg->admin_obq_ci_offset, PQI_ADMIN_OBQ_CI_OFFSET)); in pqisrc_create_admin_queue()
442 softs->admin_ob_queue.ci_register_abs = (uint32_t *)(softs->pci_mem_base_vaddr + in pqisrc_create_admin_queue()
443 softs->admin_ob_queue.ci_register_offset); in pqisrc_create_admin_queue()
445 os_strlcpy(softs->admin_ib_queue.lockname, "admin_ibqlock", LOCKNAME_SIZE); in pqisrc_create_admin_queue()
447 ret =OS_INIT_PQILOCK(softs, &softs->admin_ib_queue.lock, in pqisrc_create_admin_queue()
448 softs->admin_ib_queue.lockname); in pqisrc_create_admin_queue()
451 softs->admin_ib_queue.lockcreated = false; in pqisrc_create_admin_queue()
454 softs->admin_ib_queue.lockcreated = true; in pqisrc_create_admin_queue()
457 pqisrc_print_adminq_config(softs); in pqisrc_create_admin_queue()
464 pqisrc_create_delete_adminq(softs, PQI_ADMIN_QUEUE_CONF_FUNC_DEL_Q_PAIR); in pqisrc_create_admin_queue()
467 pqisrc_destroy_admin_queue(softs); in pqisrc_create_admin_queue()
477 pqisrc_delete_op_queue(pqisrc_softstate_t *softs, in pqisrc_delete_op_queue() argument
501 ret = pqisrc_submit_admin_req(softs, &admin_req, &admin_resp); in pqisrc_delete_op_queue()
512 pqisrc_destroy_event_queue(pqisrc_softstate_t *softs) in pqisrc_destroy_event_queue() argument
516 if (softs->event_q.created == true) { in pqisrc_destroy_event_queue()
518 ret = pqisrc_delete_op_queue(softs, softs->event_q.q_id, false); in pqisrc_destroy_event_queue()
520 DBG_ERR("Failed to Delete Event Q %u\n", softs->event_q.q_id); in pqisrc_destroy_event_queue()
522 softs->event_q.created = false; in pqisrc_destroy_event_queue()
526 if (softs->event_q.alloc_dma.virt_addr) in pqisrc_destroy_event_queue()
527 os_dma_mem_free(softs, &softs->event_q.alloc_dma); in pqisrc_destroy_event_queue()
536 pqisrc_destroy_op_ib_queues(pqisrc_softstate_t *softs) in pqisrc_destroy_op_ib_queues() argument
540 uint32_t total_op_ibq = softs->num_op_raid_ibq; in pqisrc_destroy_op_ib_queues()
548 op_ib_q = &softs->op_raid_ib_q[i]; in pqisrc_destroy_op_ib_queues()
551 ret = pqisrc_delete_op_queue(softs, op_ib_q->q_id, in pqisrc_destroy_op_ib_queues()
567 os_dma_mem_free(softs, &op_ib_q->alloc_dma); in pqisrc_destroy_op_ib_queues()
571 op_ib_q = &softs->op_aio_ib_q[i]; in pqisrc_destroy_op_ib_queues()
583 pqisrc_destroy_op_ob_queues(pqisrc_softstate_t *softs) in pqisrc_destroy_op_ob_queues() argument
591 for (i = 0; i < softs->num_op_obq; i++) { in pqisrc_destroy_op_ob_queues()
592 op_ob_q = &softs->op_ob_q[i]; in pqisrc_destroy_op_ob_queues()
595 ret = pqisrc_delete_op_queue(softs, op_ob_q->q_id, false); in pqisrc_destroy_op_ob_queues()
604 os_dma_mem_free(softs, &op_ob_q->alloc_dma); in pqisrc_destroy_op_ob_queues()
615 pqisrc_destroy_admin_queue(pqisrc_softstate_t *softs) in pqisrc_destroy_admin_queue() argument
621 if(softs->admin_ib_queue.lockcreated==true) { in pqisrc_destroy_admin_queue()
622 OS_UNINIT_PQILOCK(&softs->admin_ib_queue.lock); in pqisrc_destroy_admin_queue()
623 softs->admin_ib_queue.lockcreated = false; in pqisrc_destroy_admin_queue()
627 ret = pqisrc_create_delete_adminq(softs, in pqisrc_destroy_admin_queue()
631 if (softs->admin_ib_queue.alloc_dma.virt_addr) in pqisrc_destroy_admin_queue()
632 os_dma_mem_free(softs, &softs->admin_ib_queue.alloc_dma); in pqisrc_destroy_admin_queue()
634 if (softs->admin_ob_queue.alloc_dma.virt_addr) in pqisrc_destroy_admin_queue()
635 os_dma_mem_free(softs, &softs->admin_ob_queue.alloc_dma); in pqisrc_destroy_admin_queue()
645 pqisrc_change_op_ibq_queue_prop(pqisrc_softstate_t *softs, in pqisrc_change_op_ibq_queue_prop() argument
661 ret = pqisrc_submit_admin_req(softs, &admin_req, &admin_resp); in pqisrc_change_op_ibq_queue_prop()
671 pqisrc_create_op_obq(pqisrc_softstate_t *softs, in pqisrc_create_op_obq() argument
694 ret = pqisrc_submit_admin_req(softs, &admin_req, &admin_resp); in pqisrc_create_op_obq()
698 op_ob_q->ci_register_abs = (uint32_t *)(softs->pci_mem_base_vaddr + in pqisrc_create_op_obq()
716 pqisrc_create_op_ibq(pqisrc_softstate_t *softs, in pqisrc_create_op_ibq() argument
735 ret = pqisrc_submit_admin_req(softs, &admin_req, &admin_resp); in pqisrc_create_op_ibq()
741 op_ib_q->pi_register_abs =(uint32_t *)(softs->pci_mem_base_vaddr + in pqisrc_create_op_ibq()
758 pqisrc_create_op_aio_ibq(pqisrc_softstate_t *softs, in pqisrc_create_op_aio_ibq() argument
765 ret = pqisrc_create_op_ibq(softs,op_aio_ib_q); in pqisrc_create_op_aio_ibq()
767 ret = pqisrc_change_op_ibq_queue_prop(softs, in pqisrc_create_op_aio_ibq()
778 pqisrc_create_op_raid_ibq(pqisrc_softstate_t *softs, in pqisrc_create_op_raid_ibq() argument
785 ret = pqisrc_create_op_ibq(softs,op_raid_ib_q); in pqisrc_create_op_raid_ibq()
795 pqisrc_alloc_and_create_event_queue(pqisrc_softstate_t *softs) in pqisrc_alloc_and_create_event_queue() argument
799 ob_queue_t *event_q = &softs->event_q; in pqisrc_alloc_and_create_event_queue()
812 num_elem = MIN(softs->num_elem_per_op_obq, PQISRC_MAX_EVENT_QUEUE_ELEM_NUM); in pqisrc_alloc_and_create_event_queue()
820 ret = pqisrc_allocate_and_init_outbound_q(softs, event_q, "event_queue"); in pqisrc_alloc_and_create_event_queue()
829 ret = pqisrc_create_op_obq(softs,event_q); in pqisrc_alloc_and_create_event_queue()
840 pqisrc_destroy_event_queue(softs); in pqisrc_alloc_and_create_event_queue()
850 pqisrc_alloc_and_create_ib_queues(pqisrc_softstate_t *softs) in pqisrc_alloc_and_create_ib_queues() argument
855 uint32_t total_op_ibq = softs->num_op_raid_ibq + softs->num_op_aio_ibq; in pqisrc_alloc_and_create_ib_queues()
861 ASSERT(softs->num_op_raid_ibq == softs->num_op_aio_ibq); in pqisrc_alloc_and_create_ib_queues()
868 op_ib_q = &softs->op_raid_ib_q[i/2]; in pqisrc_alloc_and_create_ib_queues()
873 op_ib_q = &softs->op_aio_ib_q[i/2]; in pqisrc_alloc_and_create_ib_queues()
878 op_ib_q->num_elem = softs->num_elem_per_op_ibq; in pqisrc_alloc_and_create_ib_queues()
879 op_ib_q->elem_size = softs->max_ibq_elem_size; in pqisrc_alloc_and_create_ib_queues()
881 ret = pqisrc_allocate_and_init_inbound_q(softs, op_ib_q, "op_ib_queue"); in pqisrc_alloc_and_create_ib_queues()
890 ret = OS_INIT_PQILOCK(softs, &op_ib_q->lock, op_ib_q->lockname); in pqisrc_alloc_and_create_ib_queues()
900 ret = pqisrc_create_op_raid_ibq(softs, op_ib_q); in pqisrc_alloc_and_create_ib_queues()
902 ret = pqisrc_create_op_aio_ibq(softs, op_ib_q); in pqisrc_alloc_and_create_ib_queues()
917 pqisrc_destroy_op_ib_queues(softs); in pqisrc_alloc_and_create_ib_queues()
926 pqisrc_alloc_and_create_ob_queues(pqisrc_softstate_t *softs) in pqisrc_alloc_and_create_ob_queues() argument
942 ALIGN_BOUNDARY(softs->num_elem_per_op_obq, 4); in pqisrc_alloc_and_create_ob_queues()
944 …DBG_INIT("softs->num_op_obq %u max_obq_elem_size=%u\n",softs->num_op_obq, softs->max_obq_elem_size… in pqisrc_alloc_and_create_ob_queues()
946 for (i = 0; i < softs->num_op_obq; i++) { in pqisrc_alloc_and_create_ob_queues()
947 op_ob_q = &softs->op_ob_q[i]; in pqisrc_alloc_and_create_ob_queues()
950 op_ob_q->num_elem = softs->num_elem_per_op_obq; in pqisrc_alloc_and_create_ob_queues()
952 ret = pqisrc_allocate_and_init_outbound_q(softs, op_ob_q, "op_ob_queue"); in pqisrc_alloc_and_create_ob_queues()
959 if(softs->share_opq_and_eventq == true) in pqisrc_alloc_and_create_ob_queues()
964 ret = pqisrc_create_op_obq(softs, op_ob_q); in pqisrc_alloc_and_create_ob_queues()
977 pqisrc_destroy_op_ob_queues(softs); in pqisrc_alloc_and_create_ob_queues()
986 pqisrc_create_op_queues(pqisrc_softstate_t *softs) in pqisrc_create_op_queues() argument
993 ret = pqisrc_alloc_and_create_ib_queues(softs); in pqisrc_create_op_queues()
997 ret = pqisrc_alloc_and_create_ob_queues(softs); in pqisrc_create_op_queues()
1002 ret = pqisrc_alloc_and_create_event_queue(softs); in pqisrc_create_op_queues()
1009 pqisrc_destroy_op_ob_queues(softs); in pqisrc_create_op_queues()
1011 pqisrc_destroy_op_ib_queues(softs); in pqisrc_create_op_queues()