diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-04 23:30:30 +0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-04 23:30:30 +0400 |
commit | 84cbd7222b2b00dcddef3103203986b3d59c836a (patch) | |
tree | cdbe55ec410f853d4d532ed3252334cb110d5985 /drivers/scsi/csiostor | |
parent | 80cc38b16389849a6e06441ace4530f6b2497c3c (diff) | |
parent | a3fda7dd5179989dd0ead820dcebd13f956ddec1 (diff) | |
download | linux-84cbd7222b2b00dcddef3103203986b3d59c836a.tar.xz |
Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull first round of SCSI updates from James Bottomley:
"The patch set is mostly driver updates (usf, zfcp, lpfc, mpt2sas,
megaraid_sas, bfa, ipr) and a few bug fixes. Also of note is that the
Buslogic driver has been rewritten to a better coding style and 64 bit
support added. We also removed the libsas limitation on 16 bytes for
the command size (currently no drivers make use of this)"
* tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (101 commits)
[SCSI] megaraid: minor cut and paste error fixed.
[SCSI] ufshcd-pltfrm: remove unnecessary dma_set_coherent_mask() call
[SCSI] ufs: fix register address in UIC error interrupt handling
[SCSI] ufshcd-pltfrm: add missing empty slot in ufs_of_match[]
[SCSI] ufs: use devres functions for ufshcd
[SCSI] ufs: Fix the response UPIU length setting
[SCSI] ufs: rework link start-up process
[SCSI] ufs: remove version check before IS reg clear
[SCSI] ufs: amend interrupt configuration
[SCSI] ufs: wrap the i/o access operations
[SCSI] storvsc: Update the storage protocol to win8 level
[SCSI] storvsc: Increase the value of scsi timeout for storvsc devices
[SCSI] MAINTAINERS: Add myself as the maintainer for BusLogic SCSI driver
[SCSI] BusLogic: Port driver to 64-bit.
[SCSI] BusLogic: Fix style issues
[SCSI] libiscsi: Added new boot entries in the session sysfs
[SCSI] aacraid: Fix for arrays are going offline in the system. System hangs
[SCSI] ipr: IOA Status Code(IOASC) update
[SCSI] sd: Update WRITE SAME heuristics
[SCSI] fnic: potential dead lock in fnic_is_abts_pending()
...
Diffstat (limited to 'drivers/scsi/csiostor')
-rw-r--r-- | drivers/scsi/csiostor/csio_hw.c | 91 | ||||
-rw-r--r-- | drivers/scsi/csiostor/csio_hw.h | 11 | ||||
-rw-r--r-- | drivers/scsi/csiostor/csio_mb.c | 77 | ||||
-rw-r--r-- | drivers/scsi/csiostor/csio_mb.h | 11 | ||||
-rw-r--r-- | drivers/scsi/csiostor/csio_scsi.c | 4 |
5 files changed, 2 insertions, 192 deletions
diff --git a/drivers/scsi/csiostor/csio_hw.c b/drivers/scsi/csiostor/csio_hw.c index 193605519361..0eb35b9b3784 100644 --- a/drivers/scsi/csiostor/csio_hw.c +++ b/drivers/scsi/csiostor/csio_hw.c @@ -1597,87 +1597,6 @@ out: return rv; } -static int -csio_config_global_rss(struct csio_hw *hw) -{ - struct csio_mb *mbp; - enum fw_retval retval; - - mbp = mempool_alloc(hw->mb_mempool, GFP_ATOMIC); - if (!mbp) { - CSIO_INC_STATS(hw, n_err_nomem); - return -ENOMEM; - } - - csio_rss_glb_config(hw, mbp, CSIO_MB_DEFAULT_TMO, - FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL, - FW_RSS_GLB_CONFIG_CMD_TNLMAPEN | - FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ | - FW_RSS_GLB_CONFIG_CMD_TNLALLLKP, - NULL); - - if (csio_mb_issue(hw, mbp)) { - csio_err(hw, "Issue of FW_RSS_GLB_CONFIG_CMD failed!\n"); - mempool_free(mbp, hw->mb_mempool); - return -EINVAL; - } - - retval = csio_mb_fw_retval(mbp); - if (retval != FW_SUCCESS) { - csio_err(hw, "FW_RSS_GLB_CONFIG_CMD returned 0x%x!\n", retval); - mempool_free(mbp, hw->mb_mempool); - return -EINVAL; - } - - mempool_free(mbp, hw->mb_mempool); - - return 0; -} - -/* - * csio_config_pfvf - Configure Physical/Virtual functions settings. - * @hw: HW module - * - */ -static int -csio_config_pfvf(struct csio_hw *hw) -{ - struct csio_mb *mbp; - enum fw_retval retval; - - mbp = mempool_alloc(hw->mb_mempool, GFP_ATOMIC); - if (!mbp) { - CSIO_INC_STATS(hw, n_err_nomem); - return -ENOMEM; - } - - /* - * For now, allow all PFs to access to all ports using a pmask - * value of 0xF (M_FW_PFVF_CMD_PMASK). Once we have VFs, we will - * need to provide access based on some rule. - */ - csio_mb_pfvf(hw, mbp, CSIO_MB_DEFAULT_TMO, hw->pfn, 0, CSIO_NEQ, - CSIO_NETH_CTRL, CSIO_NIQ_FLINT, 0, 0, CSIO_NVI, CSIO_CMASK, - CSIO_PMASK, CSIO_NEXACTF, CSIO_R_CAPS, CSIO_WX_CAPS, NULL); - - if (csio_mb_issue(hw, mbp)) { - csio_err(hw, "Issue of FW_PFVF_CMD failed!\n"); - mempool_free(mbp, hw->mb_mempool); - return -EINVAL; - } - - retval = csio_mb_fw_retval(mbp); - if (retval != FW_SUCCESS) { - csio_err(hw, "FW_PFVF_CMD returned 0x%x!\n", retval); - mempool_free(mbp, hw->mb_mempool); - return -EINVAL; - } - - mempool_free(mbp, hw->mb_mempool); - - return 0; -} - /* * csio_enable_ports - Bring up all available ports. * @hw: HW module. @@ -2056,16 +1975,6 @@ csio_hw_no_fwconfig(struct csio_hw *hw, int reset) if (rv != 0) goto out; - /* Config Global RSS command */ - rv = csio_config_global_rss(hw); - if (rv != 0) - goto out; - - /* Configure PF/VF capabilities of device */ - rv = csio_config_pfvf(hw); - if (rv != 0) - goto out; - /* device parameters */ rv = csio_get_device_params(hw); if (rv != 0) diff --git a/drivers/scsi/csiostor/csio_hw.h b/drivers/scsi/csiostor/csio_hw.h index 489fc095cb03..49b1daa4476e 100644 --- a/drivers/scsi/csiostor/csio_hw.h +++ b/drivers/scsi/csiostor/csio_hw.h @@ -153,17 +153,6 @@ enum { CSIO_SGE_INT_CNT_VAL_1 = 4, CSIO_SGE_INT_CNT_VAL_2 = 8, CSIO_SGE_INT_CNT_VAL_3 = 16, - - /* Storage specific - used by FW_PFVF_CMD */ - CSIO_WX_CAPS = FW_CMD_CAP_PF, /* w/x all */ - CSIO_R_CAPS = FW_CMD_CAP_PF, /* r all */ - CSIO_NVI = 4, - CSIO_NIQ_FLINT = 34, - CSIO_NETH_CTRL = 32, - CSIO_NEQ = 66, - CSIO_NEXACTF = 32, - CSIO_CMASK = FW_PFVF_CMD_CMASK_MASK, - CSIO_PMASK = FW_PFVF_CMD_PMASK_MASK, }; /* Slowpath events */ diff --git a/drivers/scsi/csiostor/csio_mb.c b/drivers/scsi/csiostor/csio_mb.c index f5d9ee1fda62..15b635142546 100644 --- a/drivers/scsi/csiostor/csio_mb.c +++ b/drivers/scsi/csiostor/csio_mb.c @@ -326,83 +326,6 @@ csio_mb_caps_config(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo, cmdp->fcoecaps |= htons(FW_CAPS_CONFIG_FCOE_TARGET); } -void -csio_rss_glb_config(struct csio_hw *hw, struct csio_mb *mbp, - uint32_t tmo, uint8_t mode, unsigned int flags, - void (*cbfn)(struct csio_hw *, struct csio_mb *)) -{ - struct fw_rss_glb_config_cmd *cmdp = - (struct fw_rss_glb_config_cmd *)(mbp->mb); - - CSIO_INIT_MBP(mbp, cmdp, tmo, hw, cbfn, 1); - - cmdp->op_to_write = htonl(FW_CMD_OP(FW_RSS_GLB_CONFIG_CMD) | - FW_CMD_REQUEST | FW_CMD_WRITE); - cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16)); - - if (mode == FW_RSS_GLB_CONFIG_CMD_MODE_MANUAL) { - cmdp->u.manual.mode_pkd = - htonl(FW_RSS_GLB_CONFIG_CMD_MODE(mode)); - } else if (mode == FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL) { - cmdp->u.basicvirtual.mode_pkd = - htonl(FW_RSS_GLB_CONFIG_CMD_MODE(mode)); - cmdp->u.basicvirtual.synmapen_to_hashtoeplitz = htonl(flags); - } -} - - -/* - * csio_mb_pfvf - FW Write PF/VF capabilities command helper. - * @hw: The HW structure - * @mbp: Mailbox structure - * @pf: - * @vf: - * @txq: - * @txq_eht_ctrl: - * @rxqi: - * @rxq: - * @tc: - * @vi: - * @pmask: - * @rcaps: - * @wxcaps: - * @cbfn: Callback, if any. - * - */ -void -csio_mb_pfvf(struct csio_hw *hw, struct csio_mb *mbp, uint32_t tmo, - unsigned int pf, unsigned int vf, unsigned int txq, - unsigned int txq_eth_ctrl, unsigned int rxqi, - unsigned int rxq, unsigned int tc, unsigned int vi, - unsigned int cmask, unsigned int pmask, unsigned int nexactf, - unsigned int rcaps, unsigned int wxcaps, - void (*cbfn) (struct csio_hw *, struct csio_mb *)) -{ - struct fw_pfvf_cmd *cmdp = (struct fw_pfvf_cmd *)(mbp->mb); - - CSIO_INIT_MBP(mbp, cmdp, tmo, hw, cbfn, 1); - - cmdp->op_to_vfn = htonl(FW_CMD_OP(FW_PFVF_CMD) | - FW_CMD_REQUEST | - FW_CMD_WRITE | - FW_PFVF_CMD_PFN(pf) | - FW_PFVF_CMD_VFN(vf)); - cmdp->retval_len16 = htonl(FW_CMD_LEN16(sizeof(*cmdp) / 16)); - cmdp->niqflint_niq = htonl(FW_PFVF_CMD_NIQFLINT(rxqi) | - FW_PFVF_CMD_NIQ(rxq)); - - cmdp->type_to_neq = htonl(FW_PFVF_CMD_TYPE | - FW_PFVF_CMD_CMASK(cmask) | - FW_PFVF_CMD_PMASK(pmask) | - FW_PFVF_CMD_NEQ(txq)); - cmdp->tc_to_nexactf = htonl(FW_PFVF_CMD_TC(tc) | - FW_PFVF_CMD_NVI(vi) | - FW_PFVF_CMD_NEXACTF(nexactf)); - cmdp->r_caps_to_nethctrl = htonl(FW_PFVF_CMD_R_CAPS(rcaps) | - FW_PFVF_CMD_WX_CAPS(wxcaps) | - FW_PFVF_CMD_NETHCTRL(txq_eth_ctrl)); -} - #define CSIO_ADVERT_MASK (FW_PORT_CAP_SPEED_100M | FW_PORT_CAP_SPEED_1G |\ FW_PORT_CAP_SPEED_10G | FW_PORT_CAP_ANEG) diff --git a/drivers/scsi/csiostor/csio_mb.h b/drivers/scsi/csiostor/csio_mb.h index 1788ea506f39..a84179e54ab9 100644 --- a/drivers/scsi/csiostor/csio_mb.h +++ b/drivers/scsi/csiostor/csio_mb.h @@ -183,17 +183,6 @@ void csio_mb_caps_config(struct csio_hw *, struct csio_mb *, uint32_t, bool, bool, bool, bool, void (*)(struct csio_hw *, struct csio_mb *)); -void csio_rss_glb_config(struct csio_hw *, struct csio_mb *, - uint32_t, uint8_t, unsigned int, - void (*)(struct csio_hw *, struct csio_mb *)); - -void csio_mb_pfvf(struct csio_hw *, struct csio_mb *, uint32_t, - unsigned int, unsigned int, unsigned int, - unsigned int, unsigned int, unsigned int, - unsigned int, unsigned int, unsigned int, - unsigned int, unsigned int, unsigned int, - unsigned int, void (*) (struct csio_hw *, struct csio_mb *)); - void csio_mb_port(struct csio_hw *, struct csio_mb *, uint32_t, uint8_t, bool, uint32_t, uint16_t, void (*) (struct csio_hw *, struct csio_mb *)); diff --git a/drivers/scsi/csiostor/csio_scsi.c b/drivers/scsi/csiostor/csio_scsi.c index ddd38e5eb0e7..7494e4bc69cc 100644 --- a/drivers/scsi/csiostor/csio_scsi.c +++ b/drivers/scsi/csiostor/csio_scsi.c @@ -1479,8 +1479,8 @@ csio_store_dbg_level(struct device *dev, } static DEVICE_ATTR(hw_state, S_IRUGO, csio_show_hw_state, NULL); -static DEVICE_ATTR(device_reset, S_IRUGO | S_IWUSR, NULL, csio_device_reset); -static DEVICE_ATTR(disable_port, S_IRUGO | S_IWUSR, NULL, csio_disable_port); +static DEVICE_ATTR(device_reset, S_IWUSR, NULL, csio_device_reset); +static DEVICE_ATTR(disable_port, S_IWUSR, NULL, csio_disable_port); static DEVICE_ATTR(dbg_level, S_IRUGO | S_IWUSR, csio_show_dbg_level, csio_store_dbg_level); |