Lines Matching defs:iocb
57 struct lpfc_iocbq *iocb);
125 * lpfc_prep_els_iocb - Allocate and prepare a lpfc iocb data structure
149 * Pointer to the newly allocated/prepared els iocb data structure
150 * NULL - when els iocb data structure allocation/preparation failed
168 /* Allocate buffer for command iocb */
203 icmd = &elsiocb->iocb;
303 /* prevent preparing iocb with NULL ndlp reference */
960 * @cmdiocb: pointer to lpfc command iocb data structure.
961 * @rspiocb: pointer to lpfc response iocb data structure.
986 IOCB_t *irsp = &rspiocb->iocb;
1224 * @cmdiocb: pointer to lpfc command iocb data structure.
1225 * @rspiocb: pointer to lpfc response iocb data structure.
1238 irsp = &rspiocb->iocb;
1254 * lpfc_issue_els_flogi - Issue an flogi iocb command for a vport
1272 * 0 - successfully issued flogi iocb for @vport
1273 * 1 - failed to issue flogi iocb for @vport
1296 icmd = &elsiocb->iocb;
1318 elsiocb->iocb.ulpCt_h = ((SLI4_CT_FCFI >> 1) & 1);
1319 elsiocb->iocb.ulpCt_l = (SLI4_CT_FCFI & 1);
1322 elsiocb->iocb.ulpContext = phba->fcf.fcfi;
1368 defer_flogi_acc.iocb.ulpContext = phba->defer_flogi_acc_rx_id;
1369 defer_flogi_acc.iocb.unsli3.rcvsli3.ox_id =
1406 * 0 - Successfully issued abort iocb on all outstanding flogis (Always 0)
1412 struct lpfc_iocbq *iocb, *next_iocb;
1426 * Check the txcmplq for an iocb that matches the nport the driver is
1430 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) {
1431 icmd = &iocb->iocb;
1433 ndlp = (struct lpfc_nodelist *)(iocb->context1);
1436 lpfc_sli_issue_abort_iotag(phba, pring, iocb);
1917 * @cmdiocb: pointer to lpfc command iocb data structure.
1918 * @rspiocb: pointer to lpfc response iocb data structure.
1939 irsp = &rspiocb->iocb;
1985 * @cmdiocb: pointer to lpfc command iocb data structure.
1986 * @rspiocb: pointer to lpfc response iocb data structure.
2016 irsp = &rspiocb->iocb;
2111 * lpfc_issue_els_plogi - Issue an plogi iocb command for a vport
2232 * @cmdiocb: pointer to lpfc command iocb data structure.
2233 * @rspiocb: pointer to lpfc response iocb data structure.
2256 irsp = &(rspiocb->iocb);
2330 * lpfc_issue_els_prli - Issue a prli iocb command for a vport
2347 * 0 - successfully issued prli iocb command for @vport
2348 * 1 - failed to issue prli iocb command for @vport
2645 * @cmdiocb: pointer to lpfc command iocb data structure.
2646 * @rspiocb: pointer to lpfc response iocb data structure.
2671 irsp = &(rspiocb->iocb);
2735 * lpfc_issue_els_adisc - Issue an address discover iocb to an node on a vport
2807 * @cmdiocb: pointer to lpfc command iocb data structure.
2808 * @rspiocb: pointer to lpfc response iocb data structure.
2831 irsp = &(rspiocb->iocb);
2942 * This routine constructs and issues an ELS Logout (LOGO) iocb command
3020 * @cmdiocb: pointer to lpfc command iocb data structure.
3021 * @rspiocb: pointer to lpfc response iocb data structure.
3039 irsp = &rspiocb->iocb;
3060 * @cmdiocb: pointer to lpfc command iocb data structure.
3061 * @rspiocb: pointer to lpfc response iocb data structure.
3079 irsp = &rspiocb->iocb;
3562 * lpfc_cancel_retry_delay_tmo - Cancel the timer with delayed iocb-cmd retry
3788 * lpfc_els_retry - Make retry decision on an els command iocb
3790 * @cmdiocb: pointer to lpfc command iocb data structure.
3791 * @rspiocb: pointer to lpfc response iocb data structure.
3814 IOCB_t *irsp = &rspiocb->iocb;
4262 * lpfc_els_free_data - Free lpfc dma buffer and data structure with an iocb
4314 * lpfc_els_free_iocb - Free a command iocb and its associated resources
4316 * @elsiocb: pointer to lpfc els command iocb data structure.
4411 * @cmdiocb: pointer to lpfc command iocb data structure.
4412 * @rspiocb: pointer to lpfc response iocb data structure.
4433 irsp = &rspiocb->iocb;
4513 * lpfc_cmpl_els_rsp - Completion callback function for els response iocb cmd
4515 * @cmdiocb: pointer to lpfc command iocb data structure.
4516 * @rspiocb: pointer to lpfc response iocb data structure.
4541 irsp = &rspiocb->iocb;
4590 cmdiocb->iocb.un.elsreq64.remoteID);
4595 cmdiocb->iocb.ulpIoTag, rspiocb->iocb.ulpStatus,
4596 rspiocb->iocb.un.ulpWord[4], rspiocb->iocb.ulpTimeout,
4600 if ((rspiocb->iocb.ulpStatus == 0)
4714 * lpfc_els_rsp_acc - Prepare and issue an acc response iocb command
4717 * @oldiocb: pointer to the original lpfc command iocb data structure.
4754 oldcmd = &oldiocb->iocb;
4768 icmd = &elsiocb->iocb;
4787 icmd = &elsiocb->iocb;
4849 icmd = &elsiocb->iocb;
4888 * lpfc_els_rsp_reject - Propare and issue a rjt response iocb command
4891 * @oldiocb: pointer to the original lpfc command iocb data structure.
4928 icmd = &elsiocb->iocb;
4929 oldcmd = &oldiocb->iocb;
4947 elsiocb->iocb.ulpContext, ndlp->nlp_DID,
4965 * lpfc_els_rsp_adisc_acc - Prepare and issue acc response to adisc iocb cmd
4967 * @oldiocb: pointer to the original lpfc command iocb data structure.
5001 icmd = &elsiocb->iocb;
5002 oldcmd = &oldiocb->iocb;
5010 elsiocb->iotag, elsiocb->iocb.ulpContext,
5048 * lpfc_els_rsp_prli_acc - Prepare and issue acc response to prli iocb cmd
5050 * @oldiocb: pointer to the original lpfc command iocb data structure.
5112 icmd = &elsiocb->iocb;
5113 oldcmd = &oldiocb->iocb;
5121 elsiocb->iotag, elsiocb->iocb.ulpContext,
5207 * lpfc_els_rsp_rnid_acc - Issue rnid acc response iocb command
5210 * @oldiocb: pointer to the original lpfc command iocb data structure.
5254 icmd = &elsiocb->iocb;
5255 oldcmd = &oldiocb->iocb;
5262 elsiocb->iotag, elsiocb->iocb.ulpContext);
5309 * @iocb: pointer to the lpfc command iocb data structure.
5316 struct lpfc_iocbq *iocb, struct lpfc_nodelist *ndlp)
5326 pcmd = (uint8_t *) (((struct lpfc_dmabuf *) iocb->context2)->virt);
5338 iocb->iotag, iocb->iocb.ulpContext);
5357 * @oldiocb: pointer to the original lpfc command iocb data structure.
5374 cmdsize = oldiocb->iocb.unsli3.rcvsli3.acc_len;
5386 elsiocb->iocb.ulpContext = oldiocb->iocb.ulpContext; /* Xri / rx_id */
5387 elsiocb->iocb.unsli3.rcvsli3.ox_id = oldiocb->iocb.unsli3.rcvsli3.ox_id;
5392 elsiocb->iotag, elsiocb->iocb.ulpContext);
5981 icmd = &elsiocb->iocb;
5988 elsiocb->iotag, elsiocb->iocb.ulpContext,
6066 icmd = &elsiocb->iocb;
6118 * @cmdiocb: pointer to lpfc command iocb data structure.
6183 cmd = &cmdiocb->iocb;
6266 icmd = &elsiocb->iocb;
6295 icmd = &elsiocb->iocb;
6391 * @cmdiocb: pointer to lpfc command iocb data structure.
6454 lcb_context->ox_id = cmdiocb->iocb.unsli3.rcvsli3.ox_id;
6455 lcb_context->rx_id = cmdiocb->iocb.ulpContext;
6646 * @cmdiocb: pointer to lpfc command iocb data structure.
6687 * lpfc_els_rcv_rscn - Process an unsolicited rscn iocb
6689 * @cmdiocb: pointer to lpfc command iocb data structure.
6992 * lpfc_els_rcv_flogi - Process an unsolicited flogi iocb
6994 * @cmdiocb: pointer to lpfc command iocb data structure.
7024 IOCB_t *icmd = &cmdiocb->iocb;
7137 phba->defer_flogi_acc_rx_id = cmdiocb->iocb.ulpContext;
7139 cmdiocb->iocb.unsli3.rcvsli3.ox_id;
7164 * lpfc_els_rcv_rnid - Process an unsolicited rnid iocb
7166 * @cmdiocb: pointer to lpfc command iocb data structure.
7177 * 0 - Successfully processed rnid iocb (currently always return 0)
7215 * lpfc_els_rcv_echo - Process an unsolicited echo iocb
7217 * @cmdiocb: pointer to lpfc command iocb data structure.
7221 * 0 - Successfully processed echo iocb (currently always return 0)
7239 * lpfc_els_rcv_lirr - Process an unsolicited lirr iocb
7241 * @cmdiocb: pointer to lpfc command iocb data structure.
7249 * 0 - Successfully processed lirr iocb (currently always return 0)
7267 * lpfc_els_rcv_rrq - Process an unsolicited rrq iocb
7269 * @cmdiocb: pointer to lpfc command iocb data structure.
7349 icmd = &elsiocb->iocb;
7369 elsiocb->iotag, elsiocb->iocb.ulpContext,
7379 * lpfc_els_rcv_rls - Process an unsolicited rls iocb
7381 * @cmdiocb: pointer to lpfc command iocb data structure.
7394 * 0 - Successfully processed rls iocb (currently always return 0)
7413 ((cmdiocb->iocb.unsli3.rcvsli3.ox_id << 16) |
7414 cmdiocb->iocb.ulpContext)); /* rx_id */
7439 * lpfc_els_rcv_rtv - Process an unsolicited rtv iocb
7441 * @cmdiocb: pointer to lpfc command iocb data structure.
7457 * 0 - Successfully processed rtv iocb (currently always return 0)
7489 elsiocb->iocb.ulpContext = cmdiocb->iocb.ulpContext; /* Xri / rx_id */
7490 elsiocb->iocb.unsli3.rcvsli3.ox_id = cmdiocb->iocb.unsli3.rcvsli3.ox_id;
7506 elsiocb->iotag, elsiocb->iocb.ulpContext,
7526 /* lpfc_issue_els_rrq - Process an unsolicited rrq iocb
7536 * 0 - Successfully sent rrq els iocb.
7537 * 1 - Failed to send rrq els iocb.
7622 * @oldiocb: pointer to the original lpfc command iocb data structure.
7653 icmd = &elsiocb->iocb;
7654 oldcmd = &oldiocb->iocb;
7677 elsiocb->iotag, elsiocb->iocb.ulpContext,
7691 * lpfc_els_rcv_rpl - Process an unsolicited rpl iocb
7693 * @cmdiocb: pointer to lpfc command iocb data structure.
7704 * 0 - Successfully processed rpl iocb (currently always return 0)
7751 * @cmdiocb: pointer to lpfc command iocb data structure.
7782 icmd = &cmdiocb->iocb;
7832 * lpfc_els_rcv_farpr - Process an unsolicited farp response iocb
7834 * @cmdiocb: pointer to lpfc command iocb data structure.
7854 icmd = &cmdiocb->iocb;
7870 * lpfc_els_rcv_fan - Process an unsolicited fan iocb command
7872 * @cmdiocb: pointer to lpfc command iocb data structure.
7886 * 0 - Successfully processed fan iocb (currently always return 0).
7991 cmd = &piocb->iocb;
7994 piocb->iocb.ulpCommand == CMD_ABORT_XRI_CN ||
7995 piocb->iocb.ulpCommand == CMD_CLOSE_XRI_CN)
8034 cmd = &piocb->iocb;
8115 cmd = &piocb->iocb;
8123 * change the compl routine to just clean up the iocb
8137 /* Abort each txcmpl iocb on aborted list and remove the dlist links. */
8157 cmd = &piocb->iocb;
8181 cmd = &piocb->iocb;
8231 * @cmdiocbp: Pointer to command iocb which reported error.
8232 * @rspiocbp: Pointer to response iocb which reported error.
8254 if (rspiocbp->iocb.ulpStatus == IOSTAT_LS_RJT) {
8264 stat.un.lsRjtError = be32_to_cpu(rspiocbp->iocb.un.ulpWord[4]);
8274 if ((rspiocbp->iocb.ulpStatus == IOSTAT_NPORT_BSY) ||
8275 (rspiocbp->iocb.ulpStatus == IOSTAT_FABRIC_BSY)) {
8277 if (rspiocbp->iocb.ulpStatus == IOSTAT_NPORT_BSY)
8464 * @elsiocb: pointer to lpfc els command iocb data structure.
8483 IOCB_t *icmd = &elsiocb->iocb;
8491 payload_len = elsiocb->iocb.unsli3.rcvsli3.acc_len;
8598 vport->fc_myDID = elsiocb->iocb.un.rcvels.parmRo;
8914 * @elsiocb: pointer to lpfc els iocb data structure.
8919 * lpfc_els_unsol_buffer() after properly set up the iocb buffer from the
8927 IOCB_t *icmd = &elsiocb->iocb;
9336 * @cmdiocb: pointer to FDISC command iocb.
9337 * @rspiocb: pointer to FDISC response iocb.
9348 if ((rspiocb->iocb.ulpStatus != IOSTAT_FABRIC_RJT) ||
9349 (rspiocb->iocb.un.ulpWord[4] != RJT_LOGIN_REQUIRED))
9356 * lpfc_cmpl_els_fdisc - Completion function for fdisc iocb command
9358 * @cmdiocb: pointer to lpfc command iocb data structure.
9359 * @rspiocb: pointer to lpfc response iocb data structure.
9384 IOCB_t *irsp = &rspiocb->iocb;
9500 * lpfc_issue_els_fdisc - Issue a fdisc iocb command
9516 * 0 - Successfully issued fdisc iocb command
9517 * 1 - Failed to issue fdisc iocb command
9544 icmd = &elsiocb->iocb;
9604 * @cmdiocb: pointer to lpfc command iocb data structure.
9605 * @rspiocb: pointer to lpfc response iocb data structure.
9625 irsp = &rspiocb->iocb;
9715 * This routine is invoked by the fabric iocb block timer after
9716 * timeout. It posts the fabric iocb block timeout event by setting the
9741 * lpfc_resume_fabric_iocbs - Issue a fabric iocb from driver internal list
9744 * This routine issues one fabric iocb from the driver internal list to
9745 * the HBA. It first checks whether it's ready to issue one fabric iocb to
9746 * the HBA (whether there is no outstanding fabric iocb). If so, it shall
9747 * remove one pending fabric iocb from the driver internal list and invokes
9748 * lpfc_sli_issue_iocb() routine to send the fabric iocb to the HBA.
9753 struct lpfc_iocbq *iocb;
9759 iocb = NULL;
9761 /* Post any pending iocb to the SLI layer */
9763 list_remove_head(&phba->fabric_iocb_list, iocb, typeof(*iocb),
9765 if (iocb)
9766 /* Increment fabric iocb count to hold the position */
9770 if (iocb) {
9771 iocb->fabric_iocb_cmpl = iocb->iocb_cmpl;
9772 iocb->iocb_cmpl = lpfc_cmpl_fabric_iocb;
9773 iocb->iocb_flag |= LPFC_IO_FABRIC;
9775 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD,
9777 iocb->vport->port_state, 0, 0);
9779 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0);
9782 iocb->iocb_cmpl = iocb->fabric_iocb_cmpl;
9783 iocb->fabric_iocb_cmpl = NULL;
9784 iocb->iocb_flag &= ~LPFC_IO_FABRIC;
9785 cmd = &iocb->iocb;
9788 iocb->iocb_cmpl(phba, iocb, iocb);
9799 * lpfc_unblock_fabric_iocbs - Unblock issuing fabric iocb command
9802 * This routine unblocks the issuing fabric iocb command. The function
9803 * will clear the fabric iocb block bit and then invoke the routine
9804 * lpfc_resume_fabric_iocbs() to issue one of the pending fabric iocb
9805 * from the driver internal fabric iocb list.
9817 * lpfc_block_fabric_iocbs - Block issuing fabric iocb command
9820 * This routine blocks the issuing fabric iocb for a specified amount of
9821 * time (currently 100 ms). This is done by set the fabric iocb block bit
9823 * fabric iocb will be issued out of the HBA.
9840 * lpfc_cmpl_fabric_iocb - Completion callback function for fabric iocb
9842 * @cmdiocb: pointer to lpfc command iocb data structure.
9843 * @rspiocb: pointer to lpfc response iocb data structure.
9845 * This routine is the callback function that is put to the fabric iocb's
9846 * callback function pointer (iocb->iocb_cmpl). The original iocb's callback
9847 * function pointer has been stored in iocb->fabric_iocb_cmpl. This callback
9848 * function first restores and invokes the original iocb's callback function
9850 * fabric bound iocb from the driver internal fabric iocb list onto the wire.
9860 switch (rspiocb->iocb.ulpStatus) {
9863 if (rspiocb->iocb.un.ulpWord[4] & RJT_UNAVAIL_TEMP) {
9875 be32_to_cpu(rspiocb->iocb.un.ulpWord[4]);
9897 * lpfc_issue_fabric_iocb - Issue a fabric iocb command
9899 * @iocb: pointer to lpfc command iocb data structure.
9901 * This routine is used as the top-level API for issuing a fabric iocb command
9903 * function makes sure that only one fabric bound iocb will be outstanding at
9905 * is already an outstanding fabric iocb on the wire. If so, it will put the
9906 * newly issued iocb onto the driver internal fabric iocb list, waiting to be
9907 * issued later. Otherwise, it will issue the iocb on the wire and update the
9908 * fabric iocb count it indicate that there is one fabric iocb on the wire.
9917 * IOCB_SUCCESS - either fabric iocb put on the list or issued successfully
9918 * IOCB_ERROR - failed to issue fabric iocb
9921 lpfc_issue_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *iocb)
9934 /* Increment fabric iocb count to hold the position */
9938 iocb->fabric_iocb_cmpl = iocb->iocb_cmpl;
9939 iocb->iocb_cmpl = lpfc_cmpl_fabric_iocb;
9940 iocb->iocb_flag |= LPFC_IO_FABRIC;
9942 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD,
9944 iocb->vport->port_state, 0, 0);
9946 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0);
9949 iocb->iocb_cmpl = iocb->fabric_iocb_cmpl;
9950 iocb->fabric_iocb_cmpl = NULL;
9951 iocb->iocb_flag &= ~LPFC_IO_FABRIC;
9956 list_add_tail(&iocb->list, &phba->fabric_iocb_list);
9964 * lpfc_fabric_abort_vport - Abort a vport's iocbs from driver fabric iocb list
9997 * lpfc_fabric_abort_nport - Abort a ndlp's iocbs from driver fabric iocb list
10035 * lpfc_fabric_abort_hba - Abort all iocbs on driver fabric iocb list