Lines Matching refs:ctrl

109 	struct be_queue_info *mccq = &phba->ctrl.mcc_obj.q;
121 if (phba->ctrl.mcc_tag_available) {
122 tag = phba->ctrl.mcc_tag[phba->ctrl.mcc_alloc_index];
123 phba->ctrl.mcc_tag[phba->ctrl.mcc_alloc_index] = 0;
124 phba->ctrl.mcc_numtag[tag] = 0;
127 phba->ctrl.mcc_tag_available--;
128 if (phba->ctrl.mcc_alloc_index == (MAX_MCC_CMD - 1))
129 phba->ctrl.mcc_alloc_index = 0;
131 phba->ctrl.mcc_alloc_index++;
159 struct be_queue_info *mccq = &phba->ctrl.mcc_obj.q;
162 free_mcc_tag(&phba->ctrl, tag);
167 spin_lock(&phba->ctrl.mbox_lock);
168 phba->ctrl.ptag_state[tag].tag_state = MCC_TAG_STATE_RUNNING;
169 spin_unlock(&phba->ctrl.mbox_lock);
173 phba->ctrl.mcc_wait[tag],
174 phba->ctrl.mcc_numtag[tag],
181 spin_lock(&phba->ctrl.mbox_lock);
182 phba->ctrl.ptag_state[tag].tag_state = MCC_TAG_STATE_TIMEOUT;
183 spin_unlock(&phba->ctrl.mbox_lock);
186 tag_mem = &phba->ctrl.ptag_state[tag].tag_mem_state;
202 spin_lock(&phba->ctrl.mbox_lock);
203 phba->ctrl.ptag_state[tag].tag_state = MCC_TAG_STATE_COMPLETED;
204 spin_unlock(&phba->ctrl.mbox_lock);
207 mcc_tag_response = phba->ctrl.mcc_numtag[tag];
253 free_mcc_tag(&phba->ctrl, tag);
258 void free_mcc_tag(struct be_ctrl_info *ctrl, unsigned int tag)
260 spin_lock(&ctrl->mbox_lock);
262 ctrl->mcc_tag[ctrl->mcc_free_index] = tag;
263 if (ctrl->mcc_free_index == (MAX_MCC_CMD - 1))
264 ctrl->mcc_free_index = 0;
266 ctrl->mcc_free_index++;
267 ctrl->mcc_tag_available++;
268 spin_unlock(&ctrl->mbox_lock);
308 * @ctrl: Function specific MBX data structure
317 static int be_mcc_compl_process(struct be_ctrl_info *ctrl,
321 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
322 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
352 int be_mcc_compl_process_isr(struct be_ctrl_info *ctrl,
355 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
363 /* The ctrl.mcc_numtag[tag] is filled with
371 ctrl->mcc_numtag[tag] = 0x80000000;
372 ctrl->mcc_numtag[tag] |= (compl->tag0 & 0x00FF0000);
373 ctrl->mcc_numtag[tag] |= (extd_status & 0x000000FF) << 8;
374 ctrl->mcc_numtag[tag] |= (compl_status & 0x000000FF);
376 if (ctrl->ptag_state[tag].tag_state == MCC_TAG_STATE_RUNNING) {
377 wake_up_interruptible(&ctrl->mcc_wait[tag]);
378 } else if (ctrl->ptag_state[tag].tag_state == MCC_TAG_STATE_TIMEOUT) {
380 tag_mem = &ctrl->ptag_state[tag].tag_mem_state;
389 pci_free_consistent(ctrl->pdev, tag_mem->size,
393 spin_lock(&phba->ctrl.mbox_lock);
394 ctrl->ptag_state[tag].tag_state = MCC_TAG_STATE_COMPLETED;
395 spin_unlock(&phba->ctrl.mbox_lock);
398 free_mcc_tag(ctrl, tag);
406 struct be_queue_info *mcc_cq = &phba->ctrl.mcc_obj.cq;
467 struct be_ctrl_info *ctrl = &phba->ctrl;
469 spin_lock_bh(&phba->ctrl.mcc_cq_lock);
506 status = be_mcc_compl_process(ctrl, compl);
507 atomic_dec(&phba->ctrl.mcc_obj.q.used);
514 hwi_ring_cq_db(phba, phba->ctrl.mcc_obj.cq.id, num, 1, 0);
516 spin_unlock_bh(&phba->ctrl.mcc_cq_lock);
542 if (atomic_read(&phba->ctrl.mcc_obj.q.used) == 0)
575 * @ctrl: Function specific MBX data structure
584 static int be_mbox_db_ready_wait(struct be_ctrl_info *ctrl)
587 void __iomem *db = ctrl->db + MPU_MAILBOX_DB_OFFSET;
588 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
631 * @ctrl: Function specific MBX data structure
640 int be_mbox_notify(struct be_ctrl_info *ctrl)
644 void __iomem *db = ctrl->db + MPU_MAILBOX_DB_OFFSET;
645 struct be_dma_mem *mbox_mem = &ctrl->mbox_mem;
648 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
650 status = be_mbox_db_ready_wait(ctrl);
659 status = be_mbox_db_ready_wait(ctrl);
669 status = be_mbox_db_ready_wait(ctrl);
674 status = be_mcc_compl_process(ctrl, &mbox->compl);
701 void __iomem *db = phba->ctrl.db + MPU_MAILBOX_DB_OFFSET;
702 struct be_dma_mem *mbox_mem = &phba->ctrl.mbox_mem;
705 struct be_ctrl_info *ctrl = &phba->ctrl;
707 status = be_mbox_db_ready_wait(ctrl);
717 status = be_mbox_db_ready_wait(ctrl);
726 status = be_mbox_db_ready_wait(ctrl);
732 status = be_mcc_compl_process(ctrl, &mbox->compl);
810 struct be_queue_info *mccq = &phba->ctrl.mcc_obj.q;
823 int beiscsi_cmd_eq_create(struct be_ctrl_info *ctrl,
826 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
832 spin_lock(&ctrl->mbox_lock);
843 PCI_FUNC(ctrl->pdev->devfn));
854 status = be_mbox_notify(ctrl);
859 spin_unlock(&ctrl->mbox_lock);
865 * @ctrl: Pointer to function control structure
873 int be_cmd_fw_initialize(struct be_ctrl_info *ctrl)
875 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
876 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
880 spin_lock(&ctrl->mbox_lock);
894 status = be_mbox_notify(ctrl);
899 spin_unlock(&ctrl->mbox_lock);
905 * @ctrl: Pointer to function control structure
913 int be_cmd_fw_uninit(struct be_ctrl_info *ctrl)
915 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
916 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
920 spin_lock(&ctrl->mbox_lock);
935 status = be_mbox_notify(ctrl);
940 spin_unlock(&ctrl->mbox_lock);
944 int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl,
948 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
951 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
956 spin_lock(&ctrl->mbox_lock);
977 PCI_FUNC(ctrl->pdev->devfn));
997 status = be_mbox_notify(ctrl);
1006 spin_unlock(&ctrl->mbox_lock);
1026 struct be_ctrl_info *ctrl;
1030 spin_lock(&phba->ctrl.mbox_lock);
1031 ctrl = &phba->ctrl;
1032 wrb = wrb_from_mbox(&ctrl->mbox_mem);
1061 spin_unlock(&phba->ctrl.mbox_lock);
1066 int beiscsi_cmd_q_destroy(struct be_ctrl_info *ctrl, struct be_queue_info *q,
1069 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1071 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
1079 spin_lock(&ctrl->mbox_lock);
1109 spin_unlock(&ctrl->mbox_lock);
1117 status = be_mbox_notify(ctrl);
1119 spin_unlock(&ctrl->mbox_lock);
1125 * @ctrl: ptr to ctrl_info
1141 int be_cmd_create_default_pdu_queue(struct be_ctrl_info *ctrl,
1147 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1150 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
1154 spin_lock(&ctrl->mbox_lock);
1175 pci_func_id, ctxt, PCI_FUNC(ctrl->pdev->devfn));
1203 status = be_mbox_notify(ctrl);
1226 spin_unlock(&ctrl->mbox_lock);
1233 * @ctrl: ptr to ctrl_info
1242 int be_cmd_wrbq_create(struct be_ctrl_info *ctrl,
1248 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1251 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
1254 spin_lock(&ctrl->mbox_lock);
1271 status = be_mbox_notify(ctrl);
1285 spin_unlock(&ctrl->mbox_lock);
1289 int be_cmd_iscsi_post_template_hdr(struct be_ctrl_info *ctrl,
1292 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1296 spin_lock(&ctrl->mbox_lock);
1308 status = be_mbox_notify(ctrl);
1309 spin_unlock(&ctrl->mbox_lock);
1313 int be_cmd_iscsi_remove_template_hdr(struct be_ctrl_info *ctrl)
1315 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1319 spin_lock(&ctrl->mbox_lock);
1329 status = be_mbox_notify(ctrl);
1330 spin_unlock(&ctrl->mbox_lock);
1334 int be_cmd_iscsi_post_sgl_pages(struct be_ctrl_info *ctrl,
1338 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1340 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
1349 spin_lock(&ctrl->mbox_lock);
1369 status = be_mbox_notify(ctrl);
1378 spin_unlock(&ctrl->mbox_lock);
1380 beiscsi_cmd_q_destroy(ctrl, NULL, QTYPE_SGL);
1386 struct be_ctrl_info *ctrl = &phba->ctrl;
1387 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1391 spin_lock(&ctrl->mbox_lock);
1399 spin_unlock(&ctrl->mbox_lock);
1419 struct be_ctrl_info *ctrl = &phba->ctrl;
1421 spin_lock(&ctrl->mbox_lock);
1424 spin_unlock(&ctrl->mbox_lock);
1440 spin_unlock(&ctrl->mbox_lock);