[SCSI] zfcp: Remove ZFCP_DID_MASK
authorChristof Schmitt <christof.schmitt@de.ibm.com>
Tue, 24 Nov 2009 15:54:12 +0000 (16:54 +0100)
committerJames Bottomley <James.Bottomley@suse.de>
Fri, 4 Dec 2009 18:02:14 +0000 (12:02 -0600)
Instead of assigning 4 bytes with the highest byte masked out, use a 3
byte array with the ntoh24 and h24ton helper functions, thus
eliminating the need for the ZFCP_DID_MASK.

Reviewed-by: Swen Schillig <swen@vnet.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/s390/scsi/zfcp_dbf.c
drivers/s390/scsi/zfcp_def.h
drivers/s390/scsi/zfcp_fsf.c
drivers/s390/scsi/zfcp_fsf.h

index e945344..517f196 100644 (file)
@@ -178,7 +178,7 @@ void _zfcp_dbf_hba_fsf_response(const char *tag2, int level,
 
        case FSF_QTCB_SEND_ELS:
                send_els = (struct zfcp_send_els *)fsf_req->data;
-               response->u.els.d_id = qtcb->bottom.support.d_id;
+               response->u.els.d_id = ntoh24(qtcb->bottom.support.d_id);
                response->u.els.ls_code = send_els->ls_code >> 24;
                break;
 
@@ -812,7 +812,7 @@ void zfcp_dbf_san_incoming_els(struct zfcp_fsf_req *fsf_req)
        int length = (int)buf->length -
                     (int)((void *)&buf->payload - (void *)buf);
 
-       zfcp_dbf_san_els("iels", 1, fsf_req, buf->d_id,
+       zfcp_dbf_san_els("iels", 1, fsf_req, ntoh24(buf->d_id),
                               fc_host_port_id(adapter->scsi_host),
                               buf->payload.data[0], (void *)buf->payload.data,
                               length);
index c00aa2b..ea11b4e 100644 (file)
 /* timeout value for "default timer" for fsf requests */
 #define ZFCP_FSF_REQUEST_TIMEOUT (60*HZ)
 
-/*************** FIBRE CHANNEL PROTOCOL SPECIFIC DEFINES ********************/
-
-#define ZFCP_DID_MASK           0x00FFFFFF
-
 /*************** ADAPTER/PORT/UNIT AND FSF_REQ STATUS FLAGS ******************/
 
 /*
index 9ada555..057c937 100644 (file)
@@ -128,7 +128,7 @@ static void zfcp_fsf_status_read_port_closed(struct zfcp_fsf_req *req)
        struct fsf_status_read_buffer *sr_buf = req->data;
        struct zfcp_adapter *adapter = req->adapter;
        struct zfcp_port *port;
-       int d_id = sr_buf->d_id & ZFCP_DID_MASK;
+       int d_id = ntoh24(sr_buf->d_id);
 
        read_lock_irqsave(&adapter->port_list_lock, flags);
        list_for_each_entry(port, &adapter->port_list, list)
@@ -494,7 +494,7 @@ static int zfcp_fsf_exchange_config_evaluate(struct zfcp_fsf_req *req)
 
        fc_host_port_name(shost) = nsp->fl_wwpn;
        fc_host_node_name(shost) = nsp->fl_wwnn;
-       fc_host_port_id(shost) = bottom->s_id & ZFCP_DID_MASK;
+       fc_host_port_id(shost) = ntoh24(bottom->s_id);
        fc_host_speed(shost) = bottom->fc_link_speed;
        fc_host_supported_classes(shost) = FC_COS_CLASS2 | FC_COS_CLASS3;
 
@@ -506,7 +506,7 @@ static int zfcp_fsf_exchange_config_evaluate(struct zfcp_fsf_req *req)
 
        switch (bottom->fc_topology) {
        case FSF_TOPO_P2P:
-               adapter->peer_d_id = bottom->peer_d_id & ZFCP_DID_MASK;
+               adapter->peer_d_id = ntoh24(bottom->peer_d_id);
                adapter->peer_wwpn = plogi->fl_wwpn;
                adapter->peer_wwnn = plogi->fl_wwnn;
                fc_host_port_type(shost) = FC_PORTTYPE_PTP;
@@ -1216,7 +1216,7 @@ int zfcp_fsf_send_els(struct zfcp_send_els *els)
        if (ret)
                goto failed_send;
 
-       req->qtcb->bottom.support.d_id = els->d_id;
+       hton24(req->qtcb->bottom.support.d_id, els->d_id);
        req->handler = zfcp_fsf_send_els_handler;
        req->data = els;
 
@@ -1522,7 +1522,7 @@ int zfcp_fsf_open_port(struct zfcp_erp_action *erp_action)
         sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
 
        req->handler = zfcp_fsf_open_port_handler;
-       req->qtcb->bottom.support.d_id = port->d_id;
+       hton24(req->qtcb->bottom.support.d_id, port->d_id);
        req->data = port;
        req->erp_action = erp_action;
        erp_action->fsf_req = req;
@@ -1669,7 +1669,7 @@ int zfcp_fsf_open_wka_port(struct zfcp_fc_wka_port *wka_port)
        sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;
 
        req->handler = zfcp_fsf_open_wka_port_handler;
-       req->qtcb->bottom.support.d_id = wka_port->d_id;
+       hton24(req->qtcb->bottom.support.d_id, wka_port->d_id);
        req->data = wka_port;
 
        zfcp_fsf_start_timer(req, ZFCP_FSF_REQUEST_TIMEOUT);
index 402e023..206b7ea 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <linux/pfn.h>
 #include <linux/scatterlist.h>
+#include <scsi/libfc.h>
 
 #define FSF_QTCB_CURRENT_VERSION               0x00000001
 
@@ -228,7 +229,8 @@ struct fsf_status_read_buffer {
        u32 length;
        u32 res1;
        struct fsf_queue_designator queue_designator;
-       u32 d_id;
+       u8 res2;
+       u8 d_id[3];
        u32 class;
        u64 fcp_lun;
        u8  res3[24];
@@ -327,8 +329,8 @@ struct fsf_qtcb_bottom_io {
 
 struct fsf_qtcb_bottom_support {
        u32 operation_subtype;
-       u8  res1[12];
-       u32 d_id;
+       u8  res1[13];
+       u8 d_id[3];
        u32 option;
        u64 fcp_lun;
        u64 res2;
@@ -357,11 +359,12 @@ struct fsf_qtcb_bottom_config {
        u32 fc_topology;
        u32 fc_link_speed;
        u32 adapter_type;
-       u32 peer_d_id;
+       u8 res0;
+       u8 peer_d_id[3];
        u8 res1[2];
        u16 timer_interval;
-       u8 res2[8];
-       u32 s_id;
+       u8 res2[9];
+       u8 s_id[3];
        u8 nport_serv_param[128];
        u8 res3[8];
        u32 adapter_ports;