From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Seokmann Ju" Subject: RE: [PATCH] qla2xxx: fix RSCN handling on big-endian systems Date: Wed, 21 Feb 2007 15:11:44 -0800 Message-ID: References: <20070219181832.GA18043@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT Return-path: Received: from avexch2.qlogic.com ([198.70.193.116]:42297 "EHLO avexch2.qlogic.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1423275AbXBUXZz convert rfc822-to-8bit (ORCPT ); Wed, 21 Feb 2007 18:25:55 -0500 Content-class: urn:content-classes:message In-Reply-To: <20070219181832.GA18043@us.ibm.com> Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: malahal@us.ibm.com Cc: linux-scsi@vger.kernel.org, Linux Driver On Monday, February 19, 2007 10:19 AM, Malahal Naineni wrote: > qla2xxx driver fails to handle RSCN events affecting area or > domain due to an endian issue on big endian systems. This > fixes the port_id_t structure on big endian systems. Can you provide more details on the fails you are getting? In my opinion, those fields in the structure should not get affected by byte ordering. Thank you, Seokmann > -----Original Message----- > From: malahal@us.ibm.com [mailto:malahal@us.ibm.com] > Sent: Monday, February 19, 2007 10:19 AM > To: linux-scsi@vger.kernel.org; Linux Driver > Subject: [PATCH] qla2xxx: fix RSCN handling on big-endian systems > > qla2xxx driver fails to handle RSCN events affecting area or > domain due to an endian issue on big endian systems. This > fixes the port_id_t structure on big endian systems. > > Signed-off-by: Malahal Naineni > > diff -r c860739bb0f4 drivers/scsi/qla2xxx/qla_def.h > --- a/drivers/scsi/qla2xxx/qla_def.h Fri Feb 16 14:19:34 2007 -0800 > +++ b/drivers/scsi/qla2xxx/qla_def.h Fri Feb 16 14:21:29 2007 -0800 > @@ -1478,14 +1478,17 @@ typedef union { > uint32_t b24 : 24; > > struct { > - uint8_t d_id[3]; > - uint8_t rsvd_1; > - } r; > - > - struct { > +#ifdef __BIG_ENDIAN > + uint8_t domain; > + uint8_t area; > + uint8_t al_pa; > +#elif __LITTLE_ENDIAN > uint8_t al_pa; > uint8_t area; > uint8_t domain; > +#else > +#error "__BIG_ENDIAN or __LITTLE_ENDIAN must be defined!" > +#endif > uint8_t rsvd_1; > } b; > } port_id_t; >