• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/scsi/lpfc/

Lines Matching refs:iocbq

69 lpfc_get_iocb_from_iocbq(struct lpfc_iocbq *iocbq)
71 return &iocbq->iocb;
455 struct lpfc_iocbq * iocbq = NULL;
457 list_remove_head(lpfc_iocb_list, iocbq, struct lpfc_iocbq, list);
459 if (iocbq)
463 return iocbq;
551 struct lpfc_iocbq * iocbq = NULL;
555 iocbq = __lpfc_sli_get_iocbq(phba);
557 return iocbq;
563 * @iocbq: Pointer to driver iocb object.
579 __lpfc_sli_release_iocbq_s4(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
586 if (iocbq->sli4_xritag == NO_XRI)
589 sglq = __lpfc_clear_active_sglq(phba, iocbq->sli4_xritag);
591 if ((iocbq->iocb_flag & LPFC_EXCHANGE_BUSY) &&
613 memset((char *)iocbq + start_clean, 0, sizeof(*iocbq) - start_clean);
614 iocbq->sli4_xritag = NO_XRI;
615 list_add_tail(&iocbq->list, &phba->lpfc_iocb_list);
622 * @iocbq: Pointer to driver iocb object.
630 __lpfc_sli_release_iocbq_s3(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
637 memset((char*)iocbq + start_clean, 0, sizeof(*iocbq) - start_clean);
638 iocbq->sli4_xritag = NO_XRI;
639 list_add_tail(&iocbq->list, &phba->lpfc_iocb_list);
645 * @iocbq: Pointer to driver iocb object.
653 __lpfc_sli_release_iocbq(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
655 phba->__lpfc_sli_release_iocbq(phba, iocbq);
662 * @iocbq: Pointer to driver iocb object.
668 lpfc_sli_release_iocbq(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
676 __lpfc_sli_release_iocbq(phba, iocbq);
984 * @iocbq: Pointer to driver iocb object.
994 lpfc_sli_next_iotag(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
1006 psli->iocbq_lookup[iotag] = iocbq;
1008 iocbq->iotag = iotag;
1025 psli->iocbq_lookup[iotag] = iocbq;
1027 iocbq->iotag = iotag;
1040 psli->iocbq_lookup[iotag] = iocbq;
1042 iocbq->iotag = iotag;
1935 * @saveq: Pointer to the iocbq struct representing the sequence starting frame.
1993 struct lpfc_iocbq *iocbq;
2062 list_for_each_entry(iocbq, &saveq->list, list) {
2063 irsp = &(iocbq->iocb);
2065 iocbq->context2 = lpfc_sli_get_buff(phba, pring,
2067 if (!iocbq->context2)
2077 iocbq->context3 = lpfc_sli_get_buff(phba, pring,
2079 if (!iocbq->context3)
2097 list_for_each_entry(iocbq, &pring->iocb_continue_saveq, clist) {
2098 if (iocbq->iocb.ulpContext == saveq->iocb.ulpContext) {
2099 list_add_tail(&saveq->list, &iocbq->list);
2108 list_del_init(&iocbq->clist);
2109 saveq = iocbq;
5935 lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq,
5952 if (iocbq->iocb_flag & LPFC_IO_FCP)
5954 else if (fip && (iocbq->iocb_flag & LPFC_FIP_ELS_ID_MASK))
5960 memcpy(wqe, &iocbq->iocb, sizeof(union lpfc_wqe));
5961 abort_tag = (uint32_t) iocbq->iotag;
5962 xritag = iocbq->sli4_xritag;
5965 if (iocbq->iocb.un.genreq64.bdl.bdeFlags == BUFF_TYPE_BLP_64) {
5966 numBdes = iocbq->iocb.un.genreq64.bdl.bdeSize /
5969 ((struct lpfc_dmabuf *)iocbq->context3)->virt;
5987 xmit_len = iocbq->iocb.un.fcpi64.bdl.bdeSize;
5989 iocbq->iocb.ulpIoTag = iocbq->iotag;
5990 cmnd = iocbq->iocb.ulpCommand;
5992 switch (iocbq->iocb.ulpCommand) {
5994 if (!iocbq->iocb.ulpLe) {
5998 iocbq->iocb.ulpCommand);
6004 iocbq->iocb.ulpTimeout);
6015 ct = ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l);
6017 iocbq->iocb.ulpContext);
6024 els_id = ((iocbq->iocb_flag & LPFC_FIP_ELS_ID_MASK)
6032 iocbq->iocb.un.ulpWord[3]);
6034 bf_set(wqe_rcvoxid, &wqe->generic, iocbq->iocb.ulpContext);
6057 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l));
6082 iocbq->iocb.ulpFCP2Rcvy);
6083 bf_set(lpfc_wqe_gen_lnk, &wqe->generic, iocbq->iocb.ulpXS);
6097 bf_set(lpfc_wqe_gen_pu, &wqe->generic, iocbq->iocb.ulpPU);
6118 if (iocbq->iocb.ulpCt_h || iocbq->iocb.ulpCt_l) {
6119 ct = ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l);
6122 ct, iocbq->iocb.ulpCommand);
6127 iocbq->iocb.ulpTimeout);
6129 bf_set(lpfc_wqe_gen_pu, &wqe->generic, iocbq->iocb.ulpPU);
6140 iocbq->iocb.un.elsreq64.remoteID);
6143 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l));
6145 bf_set(lpfc_wqe_gen_pu, &wqe->generic, iocbq->iocb.ulpPU);
6146 bf_set(wqe_rcvoxid, &wqe->generic, iocbq->iocb.ulpContext);
6147 if (!iocbq->iocb.ulpCt_h && iocbq->iocb.ulpCt_l)
6149 iocbq->vport->vpi + phba->vpi_base);
6157 if (iocbq->iocb.ulpCommand == CMD_CLOSE_XRI_CN)
6168 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l));
6169 abort_tag = iocbq->iocb.un.acxri.abortIoTag;
6182 * iocbq from scratch.
6187 bf_get(lpfc_abts_oxid, &iocbq->iocb.un.bls_acc));
6188 if (bf_get(lpfc_abts_orig, &iocbq->iocb.un.bls_acc) ==
6195 iocbq->sli4_xritag);
6202 bf_get(lpfc_abts_rxid, &iocbq->iocb.un.bls_acc));
6207 iocbq->iocb.ulpContext);
6227 iocbq->iocb.ulpCommand);
6233 bf_set(lpfc_wqe_gen_request_tag, &wqe->generic, iocbq->iotag);
6237 bf_set(lpfc_wqe_gen_class, &wqe->generic, iocbq->iocb.ulpClass);
6464 * @iocbq: Pointer to iocb object.
6475 struct lpfc_sli_ring * pring, struct lpfc_iocbq * iocbq)
6484 icmd = &iocbq->iocb;
7190 * make sure we have the right iocbq before taking it
7359 * @iocbq: Pointer to driver iocb object.
7380 lpfc_sli_validate_fcp_iocb(struct lpfc_iocbq *iocbq, struct lpfc_vport *vport,
7387 if (!(iocbq->iocb_flag & LPFC_IO_FCP))
7390 if (iocbq->vport != vport)
7393 lpfc_cmd = container_of(iocbq, struct lpfc_scsi_buf, cur_iocbq);
7446 struct lpfc_iocbq *iocbq;
7450 iocbq = phba->sli.iocbq_lookup[i];
7452 if (lpfc_sli_validate_fcp_iocb (iocbq, vport, tgt_id, lun_id,
7504 struct lpfc_iocbq *iocbq;
7511 iocbq = phba->sli.iocbq_lookup[i];
7513 if (lpfc_sli_validate_fcp_iocb(iocbq, vport, tgt_id, lun_id,
7524 cmd = &iocbq->iocb;
7528 abtsiocb->iocb.un.acxri.abortIoTag = iocbq->sli4_xritag;
7536 abtsiocb->fcp_wqidx = iocbq->fcp_wqidx;
7537 if (iocbq->iocb_flag & LPFC_IO_FCP)
7675 * If the caller has provided a response iocbq buffer, then context2
8597 * This routine transfers the fields of a command iocbq to a response iocbq
8598 * by copying all the IOCB fields from command iocbq and transferring the
8635 * lpfc_sli4_els_wcqe_to_rspiocbq - Get response iocbq from els wcqe
10686 * that is in the iocbq structure. The xritag is assigned during iocbq
11422 * @cmd_iocbq: pointer to the command iocbq structure.
11423 * @rsp_iocbq: pointer to the response iocbq structure.
11624 * a list of iocbq structures to describe the sequence. This iocbq list will be
11626 * returns a pointer to the first iocbq in the list. If the function is unable
11627 * to allocate an iocbq then it throw out the received frames that were not
11628 * able to be described and return a pointer to the first iocbq. If unable to
11635 struct lpfc_iocbq *first_iocbq, *iocbq;
11646 /* Get an iocbq struct to fill in. */
11667 iocbq = first_iocbq;
11673 if (!iocbq) {
11677 if (!iocbq->context3) {
11678 iocbq->context3 = d_buf;
11679 iocbq->iocb.ulpBdeCount++;
11681 &iocbq->iocb.unsli3.sli3Words[4];
11687 iocbq = lpfc_sli_get_iocbq(vport->phba);
11688 if (!iocbq) {
11698 iocbq->context2 = d_buf;
11699 iocbq->context3 = NULL;
11700 iocbq->iocb.ulpBdeCount = 1;
11701 iocbq->iocb.un.cont64[0].tus.f.bdeSize =
11706 iocbq->iocb.un.rcvels.remoteID = sid;
11707 list_add_tail(&iocbq->list, &first_iocbq->list);
11718 struct lpfc_iocbq *iocbq, *curr_iocb, *next_iocb;
11722 iocbq = lpfc_prep_seq(vport, seq_dmabuf);
11723 if (!iocbq) {
11733 iocbq, fc_hdr->fh_r_ctl,
11743 &iocbq->list, list) {
11747 lpfc_sli_release_iocbq(phba, iocbq);