Lines Matching refs:scrq

3805 static int ibmvfc_toggle_scrq_irq(struct ibmvfc_queue *scrq, int enable)
3807 struct device *dev = scrq->vhost->dev;
3816 scrq->hw_irq, 0, 0);
3820 enable ? "enable" : "disable", scrq->hwq_id, rc);
3861 static struct ibmvfc_crq *ibmvfc_next_scrq(struct ibmvfc_queue *scrq)
3865 crq = &scrq->msgs.scrq[scrq->cur].crq;
3867 if (++scrq->cur == scrq->size)
3868 scrq->cur = 0;
3876 static void ibmvfc_drain_sub_crq(struct ibmvfc_queue *scrq)
3884 spin_lock_irqsave(scrq->q_lock, flags);
3886 while ((crq = ibmvfc_next_scrq(scrq)) != NULL) {
3887 ibmvfc_handle_scrq(crq, scrq->vhost, &evt_doneq);
3892 ibmvfc_toggle_scrq_irq(scrq, 1);
3893 if ((crq = ibmvfc_next_scrq(scrq)) != NULL) {
3894 ibmvfc_toggle_scrq_irq(scrq, 0);
3895 ibmvfc_handle_scrq(crq, scrq->vhost, &evt_doneq);
3901 spin_unlock_irqrestore(scrq->q_lock, flags);
3913 struct ibmvfc_queue *scrq = (struct ibmvfc_queue *)scrq_instance;
3915 ibmvfc_toggle_scrq_irq(scrq, 0);
3916 ibmvfc_drain_sub_crq(scrq);
5782 fmt_size = sizeof(*queue->msgs.scrq);
5884 struct ibmvfc_queue *scrq = &vhost->scsi_scrqs.scrqs[index];
5889 rc = h_reg_sub_crq(vdev->unit_address, scrq->msg_token, PAGE_SIZE,
5890 &scrq->cookie, &scrq->hw_irq);
5900 scrq->irq = irq_create_mapping(NULL, scrq->hw_irq);
5902 if (!scrq->irq) {
5908 snprintf(scrq->name, sizeof(scrq->name), "ibmvfc-%x-scsi%d",
5910 rc = request_irq(scrq->irq, ibmvfc_interrupt_scsi, 0, scrq->name, scrq);
5914 irq_dispose_mapping(scrq->irq);
5918 scrq->hwq_id = index;
5925 rc = plpar_hcall_norets(H_FREE_SUB_CRQ, vdev->unit_address, scrq->cookie);
5936 struct ibmvfc_queue *scrq = &vhost->scsi_scrqs.scrqs[index];
5941 free_irq(scrq->irq, scrq);
5942 irq_dispose_mapping(scrq->irq);
5943 scrq->irq = 0;
5947 scrq->cookie);
5954 memset(scrq->msgs.crq, 0, PAGE_SIZE);
5955 scrq->cur = 0;
5996 struct ibmvfc_queue *scrq;
6012 scrq = &vhost->scsi_scrqs.scrqs[i];
6013 if (ibmvfc_alloc_queue(vhost, scrq, IBMVFC_SUB_CRQ_FMT)) {
6015 scrq = &vhost->scsi_scrqs.scrqs[j - 1];
6016 ibmvfc_free_queue(vhost, scrq);
6034 struct ibmvfc_queue *scrq;
6044 scrq = &vhost->scsi_scrqs.scrqs[i];
6045 ibmvfc_free_queue(vhost, scrq);