This is a note to let you know that I've just added the patch titled

    SCSI: zfcp: Adapt to new FC_PORTSPEED semantics

to the 3.4-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-zfcp-adapt-to-new-fc_portspeed-semantics.patch
and it can be found in the queue-3.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From d22019778cd9ea04c1dadf7bf453920d5288f8d9 Mon Sep 17 00:00:00 2001
From: Steffen Maier <[email protected]>
Date: Tue, 4 Sep 2012 15:23:29 +0200
Subject: SCSI: zfcp: Adapt to new FC_PORTSPEED semantics

From: Steffen Maier <[email protected]>

commit d22019778cd9ea04c1dadf7bf453920d5288f8d9 upstream.

Commit a9277e7783651d4e0a849f7988340b1c1cf748a4
"[SCSI] scsi_transport_fc: Getting FC Port Speed in sync with FC-GS"
changed the semantics of FC_PORTSPEED defines to
FDMI port attributes of FC-HBA/SM-HBA
which is different from the previous bit reversed
Report Port Speed Capabilities (RPSC) ELS of FC-GS/FC-LS.

Zfcp showed "10 Gbit" instead of "4 Gbit" for supported_speeds.
It now uses explicit bit conversion as the other LLDs already
do, in order to be independent of the kernel bit semantics.
See also http://marc.info/?l=linux-scsi&m=134452926830730&w=2

Signed-off-by: Steffen Maier <[email protected]>
Reviewed-by: Martin Peschke <[email protected]>
Signed-off-by: James Bottomley <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 drivers/s390/scsi/zfcp_fsf.c |   34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -437,6 +437,34 @@ void zfcp_fsf_req_dismiss_all(struct zfc
        }
 }
 
+#define ZFCP_FSF_PORTSPEED_1GBIT       (1 <<  0)
+#define ZFCP_FSF_PORTSPEED_2GBIT       (1 <<  1)
+#define ZFCP_FSF_PORTSPEED_4GBIT       (1 <<  2)
+#define ZFCP_FSF_PORTSPEED_10GBIT      (1 <<  3)
+#define ZFCP_FSF_PORTSPEED_8GBIT       (1 <<  4)
+#define ZFCP_FSF_PORTSPEED_16GBIT      (1 <<  5)
+#define ZFCP_FSF_PORTSPEED_NOT_NEGOTIATED (1 << 15)
+
+static u32 zfcp_fsf_convert_portspeed(u32 fsf_speed)
+{
+       u32 fdmi_speed = 0;
+       if (fsf_speed & ZFCP_FSF_PORTSPEED_1GBIT)
+               fdmi_speed |= FC_PORTSPEED_1GBIT;
+       if (fsf_speed & ZFCP_FSF_PORTSPEED_2GBIT)
+               fdmi_speed |= FC_PORTSPEED_2GBIT;
+       if (fsf_speed & ZFCP_FSF_PORTSPEED_4GBIT)
+               fdmi_speed |= FC_PORTSPEED_4GBIT;
+       if (fsf_speed & ZFCP_FSF_PORTSPEED_10GBIT)
+               fdmi_speed |= FC_PORTSPEED_10GBIT;
+       if (fsf_speed & ZFCP_FSF_PORTSPEED_8GBIT)
+               fdmi_speed |= FC_PORTSPEED_8GBIT;
+       if (fsf_speed & ZFCP_FSF_PORTSPEED_16GBIT)
+               fdmi_speed |= FC_PORTSPEED_16GBIT;
+       if (fsf_speed & ZFCP_FSF_PORTSPEED_NOT_NEGOTIATED)
+               fdmi_speed |= FC_PORTSPEED_NOT_NEGOTIATED;
+       return fdmi_speed;
+}
+
 static int zfcp_fsf_exchange_config_evaluate(struct zfcp_fsf_req *req)
 {
        struct fsf_qtcb_bottom_config *bottom = &req->qtcb->bottom.config;
@@ -456,7 +484,8 @@ static int zfcp_fsf_exchange_config_eval
        fc_host_port_name(shost) = nsp->fl_wwpn;
        fc_host_node_name(shost) = nsp->fl_wwnn;
        fc_host_port_id(shost) = ntoh24(bottom->s_id);
-       fc_host_speed(shost) = bottom->fc_link_speed;
+       fc_host_speed(shost) =
+               zfcp_fsf_convert_portspeed(bottom->fc_link_speed);
        fc_host_supported_classes(shost) = FC_COS_CLASS2 | FC_COS_CLASS3;
 
        adapter->hydra_version = bottom->adapter_type;
@@ -580,7 +609,8 @@ static void zfcp_fsf_exchange_port_evalu
        } else
                fc_host_permanent_port_name(shost) = fc_host_port_name(shost);
        fc_host_maxframe_size(shost) = bottom->maximum_frame_size;
-       fc_host_supported_speeds(shost) = bottom->supported_speed;
+       fc_host_supported_speeds(shost) =
+               zfcp_fsf_convert_portspeed(bottom->supported_speed);
        memcpy(fc_host_supported_fc4s(shost), bottom->supported_fc4_types,
               FC_FC4_LIST_SIZE);
        memcpy(fc_host_active_fc4s(shost), bottom->active_fc4_types,


Patches currently in stable-queue which might be from [email protected] 
are

queue-3.4/scsi-zfcp-do-not-wakeup-while-suspended.patch
queue-3.4/scsi-zfcp-adapt-to-new-fc_portspeed-semantics.patch
queue-3.4/scsi-zfcp-only-access-zfcp_scsi_dev-for-valid-scsi_device.patch
queue-3.4/scsi-zfcp-restore-refcount-check-on-port_remove.patch
queue-3.4/scsi-zfcp-remove-invalid-reference-to-list-iterator-variable.patch
queue-3.4/scsi-zfcp-bounds-checking-for-deferred-error-trace.patch
queue-3.4/scsi-zfcp-make-trace-record-tags-unique.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to