summaryrefslogtreecommitdiff
path: root/drivers/scsi/csiostor
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-07-04 23:30:30 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-07-04 23:30:30 +0400
commit84cbd7222b2b00dcddef3103203986b3d59c836a (patch)
treecdbe55ec410f853d4d532ed3252334cb110d5985 /drivers/scsi/csiostor
parent80cc38b16389849a6e06441ace4530f6b2497c3c (diff)
parenta3fda7dd5179989dd0ead820dcebd13f956ddec1 (diff)
downloadlinux-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.c91
-rw-r--r--drivers/scsi/csiostor/csio_hw.h11
-rw-r--r--drivers/scsi/csiostor/csio_mb.c77
-rw-r--r--drivers/scsi/csiostor/csio_mb.h11
-rw-r--r--drivers/scsi/csiostor/csio_scsi.c4
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);