[PATCH 1/3] Generalize WWN to u64 interger conversions.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > --- a/drivers/scsi/qla2xxx/qla_attr.c
> > +++ b/drivers/scsi/qla2xxx/qla_attr.c
> > @@ -345,6 +345,15 @@ struct class_device_attribute *qla2x00_h
> >  
> >  /* Host attributes. */
> >  
> > +static u64
> > +wwn_to_u64(uint8_t *wwn)
> > +{
> > +	return (u64)wwn[0] << 56 | (u64)wwn[1] << 48 |
> > +	    (u64)wwn[2] << 40 | (u64)wwn[3] << 32 |
> > +	    (u64)wwn[4] << 24 | (u64)wwn[5] << 16 |
> > +	    (u64)wwn[6] <<  8 | (u64)wwn[7];
> > +}
> 
> Shouldn't this go into the transport class?  Could probably be an inline
> aswell.

Ok, how about this generic patchset:

1) add helper function to transport class
2) add support to qla2xxx
3) add support to lpfc -- I'll let James S. decide on
   whether the union {} changes to lpfc_name are acceptable

---

Generalize WWN to u64 interger conversions.

On some platforms the hard-casting of 8 byte node_name and
port_name arrays to an u64 would cause unaligned-access
warnings.  Generalize the conversions with a transport
helper function which performs consistent shifting of WWN
bytes.

Signed-off-by: Andrew Vasquez <andrew.vasquez@xxxxxxxxxx>
---

diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h
--- a/include/scsi/scsi_transport_fc.h
+++ b/include/scsi/scsi_transport_fc.h
@@ -439,4 +439,12 @@ int fc_remote_port_block(struct fc_rport
 void fc_remote_port_unblock(struct fc_rport *rport);
 int scsi_is_fc_rport(const struct device *);
 
+static inline u64 wwn_to_u64(u8 *wwn)
+{
+	return (u64)wwn[0] << 56 | (u64)wwn[1] << 48 |
+	    (u64)wwn[2] << 40 | (u64)wwn[3] << 32 |
+	    (u64)wwn[4] << 24 | (u64)wwn[5] << 16 |
+	    (u64)wwn[6] <<  8 | (u64)wwn[7];
+}
+
 #endif /* SCSI_TRANSPORT_FC_H */
-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux