aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_attr.c
diff options
context:
space:
mode:
authorJames Smart <james.smart@emulex.com>2011-12-13 13:21:35 -0500
committerJames Bottomley <JBottomley@Parallels.com>2011-12-15 01:57:44 -0500
commitff78d8f97c85a568c0799b06137a4171db45b923 (patch)
treef5bb5d1875075175075c0beb09d770073dd82612 /drivers/scsi/lpfc/lpfc_attr.c
parent026abb87a5586c838a47aca7198d78e356b6351e (diff)
[SCSI] lpfc 8.3.28: SLI fixes and added SLI4 support
Adapter (SLI) interface fixes: - Modify WQ handling to use entry_repost (CR 123981) - Fix for ABTS. Do not free original IOCB whenever ABTS fails. (CR 115829) - Check board for FCoE before reading FCoE paramaters (CR124731) - Add support for SLI4 FC Loop mode (CR 124721) - Add support for resource count changes during fw reset. (CR 125888, 125675) - Increase CQE count from 256 to 1024. (CR 126149) Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com> Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_attr.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_attr.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c
index 7bf492e156d..f6697cb0e21 100644
--- a/drivers/scsi/lpfc/lpfc_attr.c
+++ b/drivers/scsi/lpfc/lpfc_attr.c
@@ -2777,6 +2777,14 @@ lpfc_topology_store(struct device *dev, struct device_attribute *attr,
2777 if (val >= 0 && val <= 6) { 2777 if (val >= 0 && val <= 6) {
2778 prev_val = phba->cfg_topology; 2778 prev_val = phba->cfg_topology;
2779 phba->cfg_topology = val; 2779 phba->cfg_topology = val;
2780 if (phba->cfg_link_speed == LPFC_USER_LINK_SPEED_16G &&
2781 val == 4) {
2782 lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
2783 "3113 Loop mode not supported at speed %d\n",
2784 phba->cfg_link_speed);
2785 phba->cfg_topology = prev_val;
2786 return -EINVAL;
2787 }
2780 if (nolip) 2788 if (nolip)
2781 return strlen(buf); 2789 return strlen(buf);
2782 2790
@@ -3222,6 +3230,14 @@ lpfc_link_speed_store(struct device *dev, struct device_attribute *attr,
3222 val); 3230 val);
3223 return -EINVAL; 3231 return -EINVAL;
3224 } 3232 }
3233 if (val == LPFC_USER_LINK_SPEED_16G &&
3234 phba->fc_topology == LPFC_TOPOLOGY_LOOP) {
3235 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
3236 "3112 lpfc_link_speed attribute cannot be set "
3237 "to %d. Speed is not supported in loop mode.\n",
3238 val);
3239 return -EINVAL;
3240 }
3225 if ((val >= 0) && (val <= LPFC_USER_LINK_SPEED_MAX) && 3241 if ((val >= 0) && (val <= LPFC_USER_LINK_SPEED_MAX) &&
3226 (LPFC_USER_LINK_SPEED_BITMAP & (1 << val))) { 3242 (LPFC_USER_LINK_SPEED_BITMAP & (1 << val))) {
3227 prev_val = phba->cfg_link_speed; 3243 prev_val = phba->cfg_link_speed;
@@ -3266,6 +3282,13 @@ lpfc_param_show(link_speed)
3266static int 3282static int
3267lpfc_link_speed_init(struct lpfc_hba *phba, int val) 3283lpfc_link_speed_init(struct lpfc_hba *phba, int val)
3268{ 3284{
3285 if (val == LPFC_USER_LINK_SPEED_16G && phba->cfg_topology == 4) {
3286 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
3287 "3111 lpfc_link_speed of %d cannot "
3288 "support loop mode, setting topology to default.\n",
3289 val);
3290 phba->cfg_topology = 0;
3291 }
3269 if ((val >= 0) && (val <= LPFC_USER_LINK_SPEED_MAX) && 3292 if ((val >= 0) && (val <= LPFC_USER_LINK_SPEED_MAX) &&
3270 (LPFC_USER_LINK_SPEED_BITMAP & (1 << val))) { 3293 (LPFC_USER_LINK_SPEED_BITMAP & (1 << val))) {
3271 phba->cfg_link_speed = val; 3294 phba->cfg_link_speed = val;