1. 13 6月, 2012 2 次提交
  2. 22 5月, 2012 1 次提交
    • N
      [SCSI] qla2xxx: Add LLD target-mode infrastructure for >= 24xx series · 2d70c103
      Nicholas Bellinger 提交于
      Add LLD target mode for >= 24xx series HW.  This code was originally based on
      external qla2x00t module based on 8.02.01-k4, and has been refactored to
      push the bulk of code into mainline qla2xxx.ko LLD -> qla_target.c.
      
      The implementation uses internal workqueues for I/O context submission
      into tcm_qla2xxx code, and includes the struct qla_tgt_func_tmpl API for
      external interaction to allow qla2xxx LDD to function without direct
      target-core dependencies:
      
      It also enables qla_target.c usage within existing qla2xxx LLD code.
      This includes:
      
      *) Addition of target mode specific members to existing data
      structures in qla_def.h and struct qla_hw_data->tgt_ops using
      qla_target.h:struct qla_tgt_func_tmpl
      
      *) Addition of struct qla_tgt_func_tmpl and direct calls into
      qla_target.c logic w/ qlt_* prefixed functions.
      
      *) Addition of qla_iocb.c:qla2x00_req_pkt() for ring processing, and
      qla2x00_issue_marker() for handling request/response queue processing
      for target mode operation
      
      *) Addition of various qla_tgt_mode_enabled() logic checks in
      qla24xx_nvram_config(), qla2x00_initialize_adapter(), qla2x00_rff_id(),
      qla2x00_abort_isp(), qla24xx_modify_vp_config(), and
      qla2x00_vp_abort_isp().
      
      By default the new qlini_mode module parameter is setting initiator-mode
      to 'enabled' in order for 'modprobe qla2xxx' to continue to function as
      expected in initiator only mode.  Enabling target-mode operation will
      currently require a:
      
          modprobe qla2xxx qlini_mode="disabled"
      
      in order to explictly disabled initiator mode and allow target-mode
      to be enabled via tcm_qla2xxx configfs fabric callers.
      
      (nab: Convert to qlini_mode='enabled' by default in qla_target.c)
      (joern: Remove loop_id from qla_tgt_make_local_sess() arguments +
              Remove unused s_id + fix s_id endianness bug +
              simplify qla_tgt_abort_work)
      (gerard: fix section __exit mismatch in qla_tgt_exit)
      (arun: Capture ATIO queue during firmware dump + Send SCR in target mode +
             Target mode review comments)
      (roland: Don't create duplicate target sessions to address tearing down
               ACLs with IO in flight + Add missing call to qlt_fc_port_deleted
      	 call during qla2x00_schedule_rport_del timeout)
      Signed-off-by: NNicholas A. Bellinger <nab@linux-iscsi.org>
      Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      2d70c103