• Nicholas Bellinger's avatar
    [SCSI] tcm_qla2xxx: Add >= 24xx series fabric module for target-core · 75f8c1f6
    Nicholas Bellinger authored
    This patch adds support for tcm_qla2xxx fabric module for target-core
    using the new qla_target.c LLD logic.  This includes support for explict
    NodeACLs via configfs using tcm_qla2xxx_setup_nacl_from_rport() from libfc
    struct fc_host->rports, and demo-mode support for virtual LUN=0 access.
    
    This patch also adds support for using tcm_qla2xxx_lport->lport_fcport_map
    and ->lport_loopid_map of btree_head32 to track struct se_node_acl pointers
    for individual 24-bit Port ID and 16-bit Loop ID values w/ qla_target_template
    ->find_sess_by_s_id() and ->find_sess_by_loop_id() used in a number of
    locations into the primary I/O dispatch logic in qla_target.c LLD code.
    
    The main piece for FC Nexus setup is in tcm_qla2xxx_check_initiator_node_acl(),
    which calls tcm_qla2xxx_set_sess_by_[s_id,loop_id]() to setup our
    lport->lport_fcport_map and lport_loopid_map pointers respectively, and
    register the new nexus with TCM via __transport_register_session().
    
    (nab: Add qla_tgt_mgmt_cmd usage with TARGET_SCF_ACK_KREF during TMRs +
          change tcm_qla2xxx_nacl->nport_id to u32 (DanC))
    (danc: tcm_qla2xxx: checking for NULL instead of IS_ERR())
    (roland: Fix up v3.5 breakage for removal of transport_do_task_sg_chain +
             Add hook so qla_target code can shutdown sessions)
    (steveh: Convert FC address map from flat array to btree)
    (randy: fix qla2xxx printk format warnings for size_t)
    (joern: Make most of tcm_qla2xxx static + remove unnecessary
            workqueue_struct prototypes + use WWN_SIZE instead of hard-coded
            constants)
    Signed-off-by: default avatarNicholas A. Bellinger <nab@linux-iscsi.org>
    Signed-off-by: default avatarChad Dupuis <chad.dupuis@qlogic.com>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    75f8c1f6
tcm_qla2xxx.h 2.62 KB