> > --- 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