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);
1182 mutex_lock(&ctrl->mbox_lock);
1202 status = be_mbox_notify(ctrl);
1211 mutex_unlock(&ctrl->mbox_lock);
1213 beiscsi_cmd_q_destroy(ctrl, NULL, QTYPE_SGL);
1233 struct be_ctrl_info *ctrl = &phba->ctrl;
1235 if (mutex_lock_interruptible(&ctrl->mbox_lock))
1239 mutex_unlock(&ctrl->mbox_lock);
1253 mutex_unlock(&ctrl->mbox_lock);
1258 int beiscsi_check_supported_fw(struct be_ctrl_info *ctrl,
1262 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1267 nonemb_cmd.va = dma_alloc_coherent(&ctrl->pdev->dev,
1279 mutex_lock(&ctrl->mbox_lock);
1287 status = be_mbox_notify(ctrl);
1310 mutex_unlock(&ctrl->mbox_lock);
1312 dma_free_coherent(&ctrl->pdev->dev, nonemb_cmd.size,
1320 * @ctrl: ptr to Ctrl Info
1330 int beiscsi_get_fw_config(struct be_ctrl_info *ctrl,
1333 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1339 mutex_lock(&ctrl->mbox_lock);
1347 if (be_mbox_notify(ctrl)) {
1474 mutex_unlock(&ctrl->mbox_lock);
1480 * @ctrl: ptr to Ctrl Info
1486 int beiscsi_get_port_name(struct be_ctrl_info *ctrl, struct beiscsi_hba *phba)
1492 mutex_lock(&ctrl->mbox_lock);
1493 wrb = wrb_from_mbox(&ctrl->mbox_mem);
1501 ret = be_mbox_notify(ctrl);
1515 mutex_unlock(&ctrl->mbox_lock);
1521 struct be_ctrl_info *ctrl = &phba->ctrl;
1529 mutex_lock(&ctrl->mbox_lock);
1530 wrb = wrb_from_mbox(&ctrl->mbox_mem);
1546 ret = be_mbox_notify(ctrl);
1561 mutex_unlock(&ctrl->mbox_lock);
1567 struct be_ctrl_info *ctrl = &phba->ctrl;
1572 mutex_lock(&ctrl->mbox_lock);
1573 wrb = wrb_from_mbox(&ctrl->mbox_mem);
1584 ret = be_mbox_notify(ctrl);
1601 mutex_unlock(&ctrl->mbox_lock);
1643 struct be_ctrl_info *ctrl = &phba->ctrl;
1644 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1648 mutex_lock(&ctrl->mbox_lock);
1654 status = be_mbox_notify(ctrl);
1656 mutex_unlock(&ctrl->mbox_lock);
1660 int beiscsi_cmd_special_wrb(struct be_ctrl_info *ctrl, u32 load)
1662 struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
1663 struct beiscsi_hba *phba = pci_get_drvdata(ctrl->pdev);
1667 mutex_lock(&ctrl->mbox_lock);
1694 status = be_mbox_notify(ctrl);
1698 mutex_unlock(&ctrl->mbox_lock);
1729 return beiscsi_cmd_special_wrb(&phba->ctrl, 1);
1743 struct be_ctrl_info *ctrl = &phba->ctrl;
1750 mutex_lock(&ctrl->mbox_lock);
1751 wrb = wrb_from_mbox(&ctrl->mbox_mem);
1776 status = be_mbox_notify(ctrl);
1780 mutex_unlock(&ctrl->mbox_lock);