// SPDX-License-Identifier: GPL-2.0-only /* * QLogic iSCSI HBA Driver * Copyright (c) 2003-2013 QLogic Corporation */ #include "ql4_def.h" #include "ql4_glbl.h" #include "ql4_dbg.h" #include "ql4_inline.h" #include <scsi/scsi_tcq.h> static int qla4xxx_space_in_req_ring(struct scsi_qla_host *ha, uint16_t req_cnt) { … } static void qla4xxx_advance_req_ring_ptr(struct scsi_qla_host *ha) { … } /** * qla4xxx_get_req_pkt - returns a valid entry in request queue. * @ha: Pointer to host adapter structure. * @queue_entry: Pointer to pointer to queue entry structure * * This routine performs the following tasks: * - returns the current request_in pointer (if queue not full) * - advances the request_in pointer * - checks for queue full **/ static int qla4xxx_get_req_pkt(struct scsi_qla_host *ha, struct queue_entry **queue_entry) { … } /** * qla4xxx_send_marker_iocb - issues marker iocb to HBA * @ha: Pointer to host adapter structure. * @ddb_entry: Pointer to device database entry * @lun: SCSI LUN * @mrkr_mod: marker identifier * * This routine issues a marker IOCB. **/ int qla4xxx_send_marker_iocb(struct scsi_qla_host *ha, struct ddb_entry *ddb_entry, uint64_t lun, uint16_t mrkr_mod) { … } static struct continuation_t1_entry * qla4xxx_alloc_cont_entry(struct scsi_qla_host *ha) { … } static uint16_t qla4xxx_calc_request_entries(uint16_t dsds) { … } static void qla4xxx_build_scsi_iocbs(struct srb *srb, struct command_t3_entry *cmd_entry, uint16_t tot_dsds) { … } void qla4_83xx_queue_iocb(struct scsi_qla_host *ha) { … } void qla4_83xx_complete_iocb(struct scsi_qla_host *ha) { … } /** * qla4_82xx_queue_iocb - Tell ISP it's got new request(s) * @ha: pointer to host adapter structure. * * This routine notifies the ISP that one or more new request * queue entries have been placed on the request queue. **/ void qla4_82xx_queue_iocb(struct scsi_qla_host *ha) { … } /** * qla4_82xx_complete_iocb - Tell ISP we're done with response(s) * @ha: pointer to host adapter structure. * * This routine notifies the ISP that one or more response/completion * queue entries have been processed by the driver. * This also clears the interrupt. **/ void qla4_82xx_complete_iocb(struct scsi_qla_host *ha) { … } /** * qla4xxx_queue_iocb - Tell ISP it's got new request(s) * @ha: pointer to host adapter structure. * * This routine is notifies the ISP that one or more new request * queue entries have been placed on the request queue. **/ void qla4xxx_queue_iocb(struct scsi_qla_host *ha) { … } /** * qla4xxx_complete_iocb - Tell ISP we're done with response(s) * @ha: pointer to host adapter structure. * * This routine is notifies the ISP that one or more response/completion * queue entries have been processed by the driver. * This also clears the interrupt. **/ void qla4xxx_complete_iocb(struct scsi_qla_host *ha) { … } /** * qla4xxx_send_command_to_isp - issues command to HBA * @ha: pointer to host adapter structure. * @srb: pointer to SCSI Request Block to be sent to ISP * * This routine is called by qla4xxx_queuecommand to build an ISP * command and pass it to the ISP for execution. **/ int qla4xxx_send_command_to_isp(struct scsi_qla_host *ha, struct srb * srb) { … } int qla4xxx_send_passthru0(struct iscsi_task *task) { … } static struct mrb *qla4xxx_get_new_mrb(struct scsi_qla_host *ha) { … } static int qla4xxx_send_mbox_iocb(struct scsi_qla_host *ha, struct mrb *mrb, uint32_t *in_mbox) { … } int qla4xxx_ping_iocb(struct scsi_qla_host *ha, uint32_t options, uint32_t payload_size, uint32_t pid, uint8_t *ipaddr) { … }