Lines Matching refs:ctrl

91 	struct be_queue_info *mccq = &phba->ctrl.mcc_obj.q;
95 spin_lock(&phba->ctrl.mcc_lock);
100 mccq->used, phba->ctrl.mcc_tag_available);
104 if (!phba->ctrl.mcc_tag_available)
107 tag = phba->ctrl.mcc_tag[phba->ctrl.mcc_alloc_index];
112 phba->ctrl.mcc_tag_available,
113 phba->ctrl.mcc_alloc_index);
119 phba->ctrl.mcc_tag[phba->ctrl.mcc_alloc_index] = 0;
120 phba->ctrl.mcc_tag_status[tag] = 0;
121 phba->ctrl.ptag_state[tag].tag_state = 0;
122 phba->ctrl.ptag_state[tag].cbfn = NULL;
123 phba->ctrl.mcc_tag_available--;
124 if (phba->ctrl.mcc_alloc_index == (MAX_MCC_CMD - 1))
125 phba->ctrl.mcc_alloc_index = 0;
127 phba->ctrl.mcc_alloc_index++;
137 spin_unlock(&phba->ctrl.mcc_lock);
141 void free_mcc_wrb(struct be_ctrl_info *ctrl, unsigned int tag)
143 struct be_queue_info *mccq = &ctrl->mcc_obj.q;
145 spin_lock(&ctrl->mcc_lock);
147 ctrl->mcc_tag[ctrl->mcc_free_index] = tag;
148 if (ctrl->mcc_free_index == (MAX_MCC_CMD - 1))
149 ctrl->mcc_free_index = 0;
151 ctrl->mcc_free_index++;
152 ctrl->mcc_tag_available++;
154 spin_unlock(&ctrl->mcc_lock);
173 struct be_queue_info *mccq = &phba->ctrl.mcc_obj.q;
181 mcc_tag_status = phba->ctrl.mcc_tag_status[tag];
249 &phba->ctrl.ptag_state[tag].tag_state);
254 rc = wait_event_interruptible_timeout(phba->ctrl.mcc_wait[tag],
255 phba->ctrl.mcc_tag_status[tag],
265 &phba->ctrl.ptag_state[tag].tag_state);
282 tag_mem = &phba->ctrl.ptag_state[tag].tag_mem_state;
293 &phba->ctrl.ptag_state[tag].tag_state);
304 free_mcc_wrb(&phba->ctrl, tag);
310 * @ctrl: Function specific MBX data structure
319 static int beiscsi_process_mbox_compl(struct be_ctrl_info *ctrl,
322 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
323 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
484 int beiscsi_process_mcc_compl(struct be_ctrl_info *ctrl,
487 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
497 &ctrl->ptag_state[tag].tag_state)) {
505 clear_bit(MCC_TAG_STATE_RUNNING, &ctrl->ptag_state[tag].tag_state);
507 if (test_bit(MCC_TAG_STATE_TIMEOUT, &ctrl->ptag_state[tag].tag_state)) {
516 tag_mem = &ctrl->ptag_state[tag].tag_mem_state;
518 dma_free_coherent(&ctrl->pdev->dev, tag_mem->size,
522 free_mcc_wrb(ctrl, tag);
530 /* The ctrl.mcc_tag_status[tag] is filled with
534 ctrl->mcc_tag_status[tag] = CQE_VALID_MASK;
535 ctrl->mcc_tag_status[tag] |= (wrb_idx << CQE_STATUS_WRB_SHIFT);
536 ctrl->mcc_tag_status[tag] |= (extd_status << CQE_STATUS_ADDL_SHIFT) &
538 ctrl->mcc_tag_status[tag] |= (compl_status & CQE_STATUS_MASK);
540 if (test_bit(MCC_TAG_STATE_ASYNC, &ctrl->ptag_state[tag].tag_state)) {
541 if (ctrl->ptag_state[tag].cbfn)
542 ctrl->ptag_state[tag].cbfn(phba, tag);
546 free_mcc_wrb(ctrl, tag);
550 if (test_bit(MCC_TAG_STATE_IGNORE, &ctrl->ptag_state[tag].tag_state)) {
553 free_mcc_wrb(ctrl, tag);
557 wake_up_interruptible(&ctrl->mcc_wait[tag]);
563 struct be_queue_info *mccq = &phba->ctrl.mcc_obj.q;
566 set_bit(MCC_TAG_STATE_RUNNING, &phba->ctrl.ptag_state[tag].tag_state);
576 * @ctrl: Function specific MBX data structure
585 static int be_mbox_db_ready_poll(struct be_ctrl_info *ctrl)
589 void __iomem *db = ctrl->db + MPU_MAILBOX_DB_OFFSET;
590 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
626 * @ctrl: Function specific MBX data structure
635 static int be_mbox_notify(struct be_ctrl_info *ctrl)
639 void __iomem *db = ctrl->db + MPU_MAILBOX_DB_OFFSET;
640 struct be_dma_mem *mbox_mem = &ctrl->mbox_mem;
643 status = be_mbox_db_ready_poll(ctrl);
652 status = be_mbox_db_ready_poll(ctrl);
662 status = be_mbox_db_ready_poll(ctrl);
669 status = beiscsi_process_mbox_compl(ctrl, &mbox->compl);
735 int beiscsi_cmd_eq_create(struct be_ctrl_info *ctrl,
738 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
744 mutex_lock(&ctrl->mbox_lock);
755 PCI_FUNC(ctrl->pdev->devfn));
766 status = be_mbox_notify(ctrl);
771 mutex_unlock(&ctrl->mbox_lock);
775 int beiscsi_cmd_cq_create(struct be_ctrl_info *ctrl,
779 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
782 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
787 mutex_lock(&ctrl->mbox_lock);
808 PCI_FUNC(ctrl->pdev->devfn));
828 status = be_mbox_notify(ctrl);
837 mutex_unlock(&ctrl->mbox_lock);
857 struct be_ctrl_info *ctrl;
861 mutex_lock(&phba->ctrl.mbox_lock);
862 ctrl = &phba->ctrl;
863 wrb = wrb_from_mbox(&ctrl->mbox_mem);
889 status = be_mbox_notify(ctrl);
895 mutex_unlock(&phba->ctrl.mbox_lock);
900 int beiscsi_cmd_q_destroy(struct be_ctrl_info *ctrl, struct be_queue_info *q,
903 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
905 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
913 mutex_lock(&ctrl->mbox_lock);
943 mutex_unlock(&ctrl->mbox_lock);
950 status = be_mbox_notify(ctrl);
952 mutex_unlock(&ctrl->mbox_lock);
958 * @ctrl: ptr to ctrl_info
974 int be_cmd_create_default_pdu_queue(struct be_ctrl_info *ctrl,
980 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
983 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
987 mutex_lock(&ctrl->mbox_lock);
1008 pci_func_id, ctxt, PCI_FUNC(ctrl->pdev->devfn));
1036 status = be_mbox_notify(ctrl);
1059 mutex_unlock(&ctrl->mbox_lock);
1066 * @ctrl: ptr to ctrl_info
1075 int be_cmd_wrbq_create(struct be_ctrl_info *ctrl,
1081 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1084 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
1087 mutex_lock(&ctrl->mbox_lock);
1104 status = be_mbox_notify(ctrl);
1118 mutex_unlock(&ctrl->mbox_lock);
1122 int be_cmd_iscsi_post_template_hdr(struct be_ctrl_info *ctrl,
1125 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1129 mutex_lock(&ctrl->mbox_lock);
1141 status = be_mbox_notify(ctrl);
1142 mutex_unlock(&ctrl->mbox_lock);
1146 int be_cmd_iscsi_remove_template_hdr(struct be_ctrl_info *ctrl)
1148 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1152 mutex_lock(&ctrl->mbox_lock);
1162 status = be_mbox_notify(ctrl);
1163 mutex_unlock(&ctrl->mbox_lock);
1167 int be_cmd_iscsi_post_sgl_pages(struct be_ctrl_info *ctrl,
1171 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1173 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
1181 mutex_lock(&ctrl->mbox_lock);
1200 status = be_mbox_notify(ctrl);
1209 mutex_unlock(&ctrl->mbox_lock);
1211 beiscsi_cmd_q_destroy(ctrl, NULL, QTYPE_SGL);
1231 struct be_ctrl_info *ctrl = &phba->ctrl;
1233 if (mutex_lock_interruptible(&ctrl->mbox_lock))
1237 mutex_unlock(&ctrl->mbox_lock);
1251 mutex_unlock(&ctrl->mbox_lock);
1256 int beiscsi_check_supported_fw(struct be_ctrl_info *ctrl,
1260 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1265 nonemb_cmd.va = dma_alloc_coherent(&ctrl->pdev->dev,
1277 mutex_lock(&ctrl->mbox_lock);
1285 status = be_mbox_notify(ctrl);
1308 mutex_unlock(&ctrl->mbox_lock);
1310 dma_free_coherent(&ctrl->pdev->dev, nonemb_cmd.size,
1318 * @ctrl: ptr to Ctrl Info
1328 int beiscsi_get_fw_config(struct be_ctrl_info *ctrl,
1331 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1337 mutex_lock(&ctrl->mbox_lock);
1345 if (be_mbox_notify(ctrl)) {
1472 mutex_unlock(&ctrl->mbox_lock);
1478 * @ctrl: ptr to Ctrl Info
1484 int beiscsi_get_port_name(struct be_ctrl_info *ctrl, struct beiscsi_hba *phba)
1490 mutex_lock(&ctrl->mbox_lock);
1491 wrb = wrb_from_mbox(&ctrl->mbox_mem);
1499 ret = be_mbox_notify(ctrl);
1513 mutex_unlock(&ctrl->mbox_lock);
1519 struct be_ctrl_info *ctrl = &phba->ctrl;
1527 mutex_lock(&ctrl->mbox_lock);
1528 wrb = wrb_from_mbox(&ctrl->mbox_mem);
1544 ret = be_mbox_notify(ctrl);
1559 mutex_unlock(&ctrl->mbox_lock);
1565 struct be_ctrl_info *ctrl = &phba->ctrl;
1570 mutex_lock(&ctrl->mbox_lock);
1571 wrb = wrb_from_mbox(&ctrl->mbox_mem);
1582 ret = be_mbox_notify(ctrl);
1599 mutex_unlock(&ctrl->mbox_lock);
1641 struct be_ctrl_info *ctrl = &phba->ctrl;
1642 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1646 mutex_lock(&ctrl->mbox_lock);
1652 status = be_mbox_notify(ctrl);
1654 mutex_unlock(&ctrl->mbox_lock);
1658 int beiscsi_cmd_special_wrb(struct be_ctrl_info *ctrl, u32 load)
1660 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1661 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
1665 mutex_lock(&ctrl->mbox_lock);
1692 status = be_mbox_notify(ctrl);
1696 mutex_unlock(&ctrl->mbox_lock);
1727 return beiscsi_cmd_special_wrb(&phba->ctrl, 1);
1741 struct be_ctrl_info *ctrl = &phba->ctrl;
1748 mutex_lock(&ctrl->mbox_lock);
1749 wrb = wrb_from_mbox(&ctrl->mbox_mem);
1774 status = be_mbox_notify(ctrl);
1778 mutex_unlock(&ctrl->mbox_lock);