summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSatish Kharat <satishkh@cisco.com>2017-06-26 20:48:44 -0400
committerMartin K. Petersen <martin.petersen@oracle.com>2017-06-27 21:40:59 -0400
commitc22fa50b2d41f3091d2ab0acf60ffdedb7ccd765 (patch)
tree543dadccb5f185db3c46cb5c4204ca4478aa7a9d
parent43caa03fec79d062c5f7a959a823770d72717b24 (diff)
scsi: fnic: correct speed display and add support for 25,40 and 100G
Setting speed based on the vinc device parameter read during linkup. Also adding support to display 25,40 and 100G Signed-off-by: Satish Kharat <satishkh@cisco.com> Signed-off-by: Sesidhar Baddela <sebaddel@cisco.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
-rw-r--r--drivers/scsi/fnic/fnic_fcs.c24
-rw-r--r--drivers/scsi/fnic/fnic_io.h9
-rw-r--r--drivers/scsi/fnic/fnic_main.c14
3 files changed, 45 insertions, 2 deletions
diff --git a/drivers/scsi/fnic/fnic_fcs.c b/drivers/scsi/fnic/fnic_fcs.c
index 245dcd95e11f..d212eb574c94 100644
--- a/drivers/scsi/fnic/fnic_fcs.c
+++ b/drivers/scsi/fnic/fnic_fcs.c
@@ -65,6 +65,30 @@ void fnic_handle_link(struct work_struct *work)
65 fnic->link_status = vnic_dev_link_status(fnic->vdev); 65 fnic->link_status = vnic_dev_link_status(fnic->vdev);
66 fnic->link_down_cnt = vnic_dev_link_down_cnt(fnic->vdev); 66 fnic->link_down_cnt = vnic_dev_link_down_cnt(fnic->vdev);
67 67
68 switch (vnic_dev_port_speed(fnic->vdev)) {
69 case DCEM_PORTSPEED_10G:
70 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_10GBIT;
71 fnic->lport->link_supported_speeds = FC_PORTSPEED_10GBIT;
72 break;
73 case DCEM_PORTSPEED_25G:
74 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_25GBIT;
75 fnic->lport->link_supported_speeds = FC_PORTSPEED_25GBIT;
76 break;
77 case DCEM_PORTSPEED_40G:
78 case DCEM_PORTSPEED_4x10G:
79 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_40GBIT;
80 fnic->lport->link_supported_speeds = FC_PORTSPEED_40GBIT;
81 break;
82 case DCEM_PORTSPEED_100G:
83 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_100GBIT;
84 fnic->lport->link_supported_speeds = FC_PORTSPEED_100GBIT;
85 break;
86 default:
87 fc_host_speed(fnic->lport->host) = FC_PORTSPEED_UNKNOWN;
88 fnic->lport->link_supported_speeds = FC_PORTSPEED_UNKNOWN;
89 break;
90 }
91
68 if (old_link_status == fnic->link_status) { 92 if (old_link_status == fnic->link_status) {
69 if (!fnic->link_status) { 93 if (!fnic->link_status) {
70 /* DOWN -> DOWN */ 94 /* DOWN -> DOWN */
diff --git a/drivers/scsi/fnic/fnic_io.h b/drivers/scsi/fnic/fnic_io.h
index c35b8f1889ea..e0bc659ed71f 100644
--- a/drivers/scsi/fnic/fnic_io.h
+++ b/drivers/scsi/fnic/fnic_io.h
@@ -66,4 +66,13 @@ struct fnic_io_req {
66 struct completion *dr_done; /* completion for device reset */ 66 struct completion *dr_done; /* completion for device reset */
67}; 67};
68 68
69enum fnic_port_speeds {
70 DCEM_PORTSPEED_NONE = 0,
71 DCEM_PORTSPEED_1G = 1000,
72 DCEM_PORTSPEED_10G = 10000,
73 DCEM_PORTSPEED_40G = 40000,
74 DCEM_PORTSPEED_4x10G = 41000,
75 DCEM_PORTSPEED_25G = 25000,
76 DCEM_PORTSPEED_100G = 100000,
77};
69#endif /* _FNIC_IO_H_ */ 78#endif /* _FNIC_IO_H_ */
diff --git a/drivers/scsi/fnic/fnic_main.c b/drivers/scsi/fnic/fnic_main.c
index ba58b7953263..aacadbf20b69 100644
--- a/drivers/scsi/fnic/fnic_main.c
+++ b/drivers/scsi/fnic/fnic_main.c
@@ -176,11 +176,21 @@ static void fnic_get_host_speed(struct Scsi_Host *shost)
176 176
177 /* Add in other values as they get defined in fw */ 177 /* Add in other values as they get defined in fw */
178 switch (port_speed) { 178 switch (port_speed) {
179 case 10000: 179 case DCEM_PORTSPEED_10G:
180 fc_host_speed(shost) = FC_PORTSPEED_10GBIT; 180 fc_host_speed(shost) = FC_PORTSPEED_10GBIT;
181 break; 181 break;
182 case DCEM_PORTSPEED_25G:
183 fc_host_speed(shost) = FC_PORTSPEED_25GBIT;
184 break;
185 case DCEM_PORTSPEED_40G:
186 case DCEM_PORTSPEED_4x10G:
187 fc_host_speed(shost) = FC_PORTSPEED_40GBIT;
188 break;
189 case DCEM_PORTSPEED_100G:
190 fc_host_speed(shost) = FC_PORTSPEED_100GBIT;
191 break;
182 default: 192 default:
183 fc_host_speed(shost) = FC_PORTSPEED_10GBIT; 193 fc_host_speed(shost) = FC_PORTSPEED_UNKNOWN;
184 break; 194 break;
185 } 195 }
186} 196}