Lines Matching refs:reply_q

1528 _base_process_reply_queue(struct adapter_reply_queue *reply_q)  in _base_process_reply_queue()  argument
1536 u8 msix_index = reply_q->msix_index; in _base_process_reply_queue()
1537 struct MPT3SAS_ADAPTER *ioc = reply_q->ioc; in _base_process_reply_queue()
1542 if (!atomic_add_unless(&reply_q->busy, 1, 1)) in _base_process_reply_queue()
1545 rpf = &reply_q->reply_post_free[reply_q->reply_post_host_index]; in _base_process_reply_queue()
1549 atomic_dec(&reply_q->busy); in _base_process_reply_queue()
1616 reply_q->reply_post_host_index = in _base_process_reply_queue()
1617 (reply_q->reply_post_host_index == in _base_process_reply_queue()
1619 reply_q->reply_post_host_index + 1; in _base_process_reply_queue()
1621 reply_q->reply_post_free[reply_q->reply_post_host_index]. in _base_process_reply_queue()
1631 writel(reply_q->reply_post_host_index | in _base_process_reply_queue()
1636 writel(reply_q->reply_post_host_index | in _base_process_reply_queue()
1641 if (!reply_q->irq_poll_scheduled) { in _base_process_reply_queue()
1642 reply_q->irq_poll_scheduled = true; in _base_process_reply_queue()
1643 irq_poll_sched(&reply_q->irqpoll); in _base_process_reply_queue()
1645 atomic_dec(&reply_q->busy); in _base_process_reply_queue()
1650 if (!reply_q->reply_post_host_index) in _base_process_reply_queue()
1651 rpf = reply_q->reply_post_free; in _base_process_reply_queue()
1659 atomic_dec(&reply_q->busy); in _base_process_reply_queue()
1664 writel(reply_q->reply_post_host_index, in _base_process_reply_queue()
1666 atomic_dec(&reply_q->busy); in _base_process_reply_queue()
1686 writel(reply_q->reply_post_host_index | ((msix_index & 7) << in _base_process_reply_queue()
1690 writel(reply_q->reply_post_host_index | (msix_index << in _base_process_reply_queue()
1693 atomic_dec(&reply_q->busy); in _base_process_reply_queue()
1707 struct adapter_reply_queue *reply_q = bus_id; in _base_interrupt() local
1708 struct MPT3SAS_ADAPTER *ioc = reply_q->ioc; in _base_interrupt()
1712 if (reply_q->irq_poll_scheduled) in _base_interrupt()
1714 return ((_base_process_reply_queue(reply_q) > 0) ? in _base_interrupt()
1728 struct adapter_reply_queue *reply_q; in _base_irqpoll() local
1731 reply_q = container_of(irqpoll, struct adapter_reply_queue, in _base_irqpoll()
1733 if (reply_q->irq_line_enable) { in _base_irqpoll()
1734 disable_irq_nosync(reply_q->os_irq); in _base_irqpoll()
1735 reply_q->irq_line_enable = false; in _base_irqpoll()
1737 num_entries = _base_process_reply_queue(reply_q); in _base_irqpoll()
1740 reply_q->irq_poll_scheduled = false; in _base_irqpoll()
1741 reply_q->irq_line_enable = true; in _base_irqpoll()
1742 enable_irq(reply_q->os_irq); in _base_irqpoll()
1749 _base_process_reply_queue(reply_q); in _base_irqpoll()
1764 struct adapter_reply_queue *reply_q, *next; in _base_init_irqpolls() local
1769 list_for_each_entry_safe(reply_q, next, &ioc->reply_queue_list, list) { in _base_init_irqpolls()
1770 irq_poll_init(&reply_q->irqpoll, in _base_init_irqpolls()
1772 reply_q->irq_poll_scheduled = false; in _base_init_irqpolls()
1773 reply_q->irq_line_enable = true; in _base_init_irqpolls()
1774 reply_q->os_irq = pci_irq_vector(ioc->pdev, in _base_init_irqpolls()
1775 reply_q->msix_index); in _base_init_irqpolls()
1804 struct adapter_reply_queue *reply_q; in mpt3sas_base_sync_reply_irqs() local
1812 list_for_each_entry(reply_q, &ioc->reply_queue_list, list) { in mpt3sas_base_sync_reply_irqs()
1817 if (reply_q->msix_index == 0) in mpt3sas_base_sync_reply_irqs()
1819 synchronize_irq(pci_irq_vector(ioc->pdev, reply_q->msix_index)); in mpt3sas_base_sync_reply_irqs()
1820 if (reply_q->irq_poll_scheduled) { in mpt3sas_base_sync_reply_irqs()
1824 irq_poll_disable(&reply_q->irqpoll); in mpt3sas_base_sync_reply_irqs()
1825 irq_poll_enable(&reply_q->irqpoll); in mpt3sas_base_sync_reply_irqs()
1829 if (reply_q->irq_poll_scheduled) { in mpt3sas_base_sync_reply_irqs()
1830 reply_q->irq_poll_scheduled = false; in mpt3sas_base_sync_reply_irqs()
1831 reply_q->irq_line_enable = true; in mpt3sas_base_sync_reply_irqs()
1832 enable_irq(reply_q->os_irq); in mpt3sas_base_sync_reply_irqs()
1837 _base_process_reply_queue(reply_q); in mpt3sas_base_sync_reply_irqs()
2910 struct adapter_reply_queue *reply_q, *next; in _base_free_irq() local
2915 list_for_each_entry_safe(reply_q, next, &ioc->reply_queue_list, list) { in _base_free_irq()
2916 list_del(&reply_q->list); in _base_free_irq()
2919 reply_q->msix_index), NULL); in _base_free_irq()
2920 free_irq(pci_irq_vector(ioc->pdev, reply_q->msix_index), in _base_free_irq()
2921 reply_q); in _base_free_irq()
2922 kfree(reply_q); in _base_free_irq()
2937 struct adapter_reply_queue *reply_q; in _base_request_irq() local
2940 reply_q = kzalloc(sizeof(struct adapter_reply_queue), GFP_KERNEL); in _base_request_irq()
2941 if (!reply_q) { in _base_request_irq()
2946 reply_q->ioc = ioc; in _base_request_irq()
2947 reply_q->msix_index = index; in _base_request_irq()
2949 atomic_set(&reply_q->busy, 0); in _base_request_irq()
2951 snprintf(reply_q->name, MPT_NAME_LENGTH, "%s%d-msix%d", in _base_request_irq()
2954 snprintf(reply_q->name, MPT_NAME_LENGTH, "%s%d", in _base_request_irq()
2957 IRQF_SHARED, reply_q->name, reply_q); in _base_request_irq()
2960 reply_q->name, pci_irq_vector(pdev, index)); in _base_request_irq()
2961 kfree(reply_q); in _base_request_irq()
2965 INIT_LIST_HEAD(&reply_q->list); in _base_request_irq()
2966 list_add_tail(&reply_q->list, &ioc->reply_queue_list); in _base_request_irq()
2983 struct adapter_reply_queue *reply_q; in _base_assign_reply_queues() local
3015 list_for_each_entry(reply_q, &ioc->reply_queue_list, list) { in _base_assign_reply_queues()
3018 if (reply_q->msix_index < ioc->high_iops_queues) in _base_assign_reply_queues()
3022 reply_q->msix_index); in _base_assign_reply_queues()
3025 reply_q->msix_index); in _base_assign_reply_queues()
3032 ioc->cpu_msix_table[cpu] = reply_q->msix_index; in _base_assign_reply_queues()
3043 list_for_each_entry(reply_q, &ioc->reply_queue_list, list) { in _base_assign_reply_queues()
3046 if (reply_q->msix_index < ioc->high_iops_queues) in _base_assign_reply_queues()
3056 ioc->cpu_msix_table[cpu] = reply_q->msix_index; in _base_assign_reply_queues()
3332 struct adapter_reply_queue *reply_q; in mpt3sas_base_map_resources() local
3447 list_for_each_entry(reply_q, &ioc->reply_queue_list, list) in mpt3sas_base_map_resources()
3449 reply_q->name, in mpt3sas_base_map_resources()
3451 pci_irq_vector(ioc->pdev, reply_q->msix_index)); in mpt3sas_base_map_resources()
7075 struct adapter_reply_queue *reply_q; in _base_make_ioc_operational() local
7147 list_for_each_entry(reply_q, &ioc->reply_queue_list, list) { in _base_make_ioc_operational()
7153 reply_q->reply_post_free = in _base_make_ioc_operational()
7156 reply_q->reply_post_free = reply_post_free_contig; in _base_make_ioc_operational()
7160 reply_q->reply_post_host_index = 0; in _base_make_ioc_operational()
7162 reply_q->reply_post_free[i].Words = in _base_make_ioc_operational()
7189 list_for_each_entry(reply_q, &ioc->reply_queue_list, list) { in _base_make_ioc_operational()
7191 writel((reply_q->msix_index & 7)<< in _base_make_ioc_operational()
7193 ioc->replyPostRegisterIndex[reply_q->msix_index/8]); in _base_make_ioc_operational()
7195 writel(reply_q->msix_index << in _base_make_ioc_operational()