Please apply

Signed-off-by: Eric Moore <[EMAIL PROTECTED]>

> 
> Index: scsi-misc-2.6/drivers/message/fusion/mptbase.c
> ===================================================================
> --- scsi-misc-2.6.orig/drivers/message/fusion/mptbase.c       
> 2005-08-18 15:24:27.000000000 +0200
> +++ scsi-misc-2.6/drivers/message/fusion/mptbase.c    
> 2005-08-18 15:24:28.000000000 +0200
> @@ -485,10 +485,21 @@
>  
>                               pCfg->status = status;
>                               if (status == MPI_IOCSTATUS_SUCCESS) {
> -                                     pCfg->hdr->PageVersion 
> = pReply->Header.PageVersion;
> -                                     pCfg->hdr->PageLength = 
> pReply->Header.PageLength;
> -                                     pCfg->hdr->PageNumber = 
> pReply->Header.PageNumber;
> -                                     pCfg->hdr->PageType = 
> pReply->Header.PageType;
> +                                     if ((pReply->Header.PageType &
> +                                         MPI_CONFIG_PAGETYPE_MASK) ==
> +                                         
MPI_CONFIG_PAGETYPE_EXTENDED) {
> +                                             
> pCfg->cfghdr.ehdr->ExtPageLength =
> +                                                 
> le16_to_cpu(pReply->ExtPageLength);
> +                                             
> pCfg->cfghdr.ehdr->ExtPageType =
> +                                                 pReply->ExtPageType;
> +                                     }
> +                                     
> pCfg->cfghdr.hdr->PageVersion = pReply->Header.PageVersion;
> +
> +                                     /* If this is a regular 
> header, save PageLength. */
> +                                     /* LMP Do this better 
> so not using a reserved field! */
> +                                     
> pCfg->cfghdr.hdr->PageLength = pReply->Header.PageLength;
> +                                     
> pCfg->cfghdr.hdr->PageNumber = pReply->Header.PageNumber;
> +                                     
> pCfg->cfghdr.hdr->PageType = pReply->Header.PageType;
>                               }
>                       }
>  
> @@ -3821,7 +3832,7 @@
>       hdr.PageLength = 0;
>       hdr.PageNumber = 0;
>       hdr.PageType = MPI_CONFIG_PAGETYPE_LAN;
> -     cfg.hdr = &hdr;
> +     cfg.cfghdr.hdr = &hdr;
>       cfg.physAddr = -1;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
>       cfg.dir = 0;
> @@ -3865,7 +3876,7 @@
>       hdr.PageLength = 0;
>       hdr.PageNumber = 1;
>       hdr.PageType = MPI_CONFIG_PAGETYPE_LAN;
> -     cfg.hdr = &hdr;
> +     cfg.cfghdr.hdr = &hdr;
>       cfg.physAddr = -1;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
>       cfg.dir = 0;
> @@ -3932,7 +3943,7 @@
>       hdr.PageLength = 0;
>       hdr.PageNumber = 0;
>       hdr.PageType = MPI_CONFIG_PAGETYPE_FC_PORT;
> -     cfg.hdr = &hdr;
> +     cfg.cfghdr.hdr = &hdr;
>       cfg.physAddr = -1;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
>       cfg.dir = 0;
> @@ -4014,7 +4025,7 @@
>       hdr.PageLength = 0;
>       hdr.PageNumber = 2;
>       hdr.PageType = MPI_CONFIG_PAGETYPE_IO_UNIT;
> -     cfg.hdr = &hdr;
> +     cfg.cfghdr.hdr = &hdr;
>       cfg.physAddr = -1;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
>       cfg.dir = 0;
> @@ -4104,7 +4115,7 @@
>       header.PageLength = 0;
>       header.PageNumber = 0;
>       header.PageType = MPI_CONFIG_PAGETYPE_SCSI_PORT;
> -     cfg.hdr = &header;
> +     cfg.cfghdr.hdr = &header;
>       cfg.physAddr = -1;
>       cfg.pageAddr = portnum;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
> @@ -4177,7 +4188,7 @@
>       header.PageLength = 0;
>       header.PageNumber = 2;
>       header.PageType = MPI_CONFIG_PAGETYPE_SCSI_PORT;
> -     cfg.hdr = &header;
> +     cfg.cfghdr.hdr = &header;
>       cfg.physAddr = -1;
>       cfg.pageAddr = portnum;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
> @@ -4245,7 +4256,7 @@
>       header.PageLength = 0;
>       header.PageNumber = 1;
>       header.PageType = MPI_CONFIG_PAGETYPE_SCSI_DEVICE;
> -     cfg.hdr = &header;
> +     cfg.cfghdr.hdr = &header;
>       cfg.physAddr = -1;
>       cfg.pageAddr = portnum;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
> @@ -4254,8 +4265,8 @@
>       if (mpt_config(ioc, &cfg) != 0)
>                return -EFAULT;
>  
> -     ioc->spi_data.sdp1version = cfg.hdr->PageVersion;
> -     ioc->spi_data.sdp1length = cfg.hdr->PageLength;
> +     ioc->spi_data.sdp1version = cfg.cfghdr.hdr->PageVersion;
> +     ioc->spi_data.sdp1length = cfg.cfghdr.hdr->PageLength;
>  
>       header.PageVersion = 0;
>       header.PageLength = 0;
> @@ -4264,8 +4275,8 @@
>       if (mpt_config(ioc, &cfg) != 0)
>                return -EFAULT;
>  
> -     ioc->spi_data.sdp0version = cfg.hdr->PageVersion;
> -     ioc->spi_data.sdp0length = cfg.hdr->PageLength;
> +     ioc->spi_data.sdp0version = cfg.cfghdr.hdr->PageVersion;
> +     ioc->spi_data.sdp0length = cfg.cfghdr.hdr->PageLength;
>  
>       dcprintk((MYIOC_s_INFO_FMT "Headers: 0: version %d length %d\n",
>                       ioc->name, ioc->spi_data.sdp0version, 
> ioc->spi_data.sdp0length));
> @@ -4307,7 +4318,7 @@
>       header.PageLength = 0;
>       header.PageNumber = 2;
>       header.PageType = MPI_CONFIG_PAGETYPE_IOC;
> -     cfg.hdr = &header;
> +     cfg.cfghdr.hdr = &header;
>       cfg.physAddr = -1;
>       cfg.pageAddr = 0;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
> @@ -4403,7 +4414,7 @@
>       header.PageLength = 0;
>       header.PageNumber = 3;
>       header.PageType = MPI_CONFIG_PAGETYPE_IOC;
> -     cfg.hdr = &header;
> +     cfg.cfghdr.hdr = &header;
>       cfg.physAddr = -1;
>       cfg.pageAddr = 0;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
> @@ -4455,7 +4466,7 @@
>       header.PageLength = 0;
>       header.PageNumber = 4;
>       header.PageType = MPI_CONFIG_PAGETYPE_IOC;
> -     cfg.hdr = &header;
> +     cfg.cfghdr.hdr = &header;
>       cfg.physAddr = -1;
>       cfg.pageAddr = 0;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
> @@ -4507,7 +4518,7 @@
>       header.PageLength = 0;
>       header.PageNumber = 1;
>       header.PageType = MPI_CONFIG_PAGETYPE_IOC;
> -     cfg.hdr = &header;
> +     cfg.cfghdr.hdr = &header;
>       cfg.physAddr = -1;
>       cfg.pageAddr = 0;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
> @@ -4658,10 +4669,11 @@
>  mpt_config(MPT_ADAPTER *ioc, CONFIGPARMS *pCfg)
>  {
>       Config_t        *pReq;
> +     ConfigExtendedPageHeader_t  *pExtHdr = NULL;
>       MPT_FRAME_HDR   *mf;
>       unsigned long    flags;
>       int              ii, rc;
> -     u32              flagsLength;
> +     int              flagsLength;
>       int              in_isr;
>  
>       /*      Prevent calling wait_event() (below), if caller happens
> @@ -4686,16 +4698,30 @@
>       pReq->Reserved = 0;
>       pReq->ChainOffset = 0;
>       pReq->Function = MPI_FUNCTION_CONFIG;
> +
> +     /* Assume page type is not extended and clear 
> "reserved" fields. */
>       pReq->ExtPageLength = 0;
>       pReq->ExtPageType = 0;
>       pReq->MsgFlags = 0;
> +
>       for (ii=0; ii < 8; ii++)
>               pReq->Reserved2[ii] = 0;
>  
> -     pReq->Header.PageVersion = pCfg->hdr->PageVersion;
> -     pReq->Header.PageLength = pCfg->hdr->PageLength;
> -     pReq->Header.PageNumber = pCfg->hdr->PageNumber;
> -     pReq->Header.PageType = (pCfg->hdr->PageType & 
> MPI_CONFIG_PAGETYPE_MASK);
> +     pReq->Header.PageVersion = pCfg->cfghdr.hdr->PageVersion;
> +     pReq->Header.PageLength = pCfg->cfghdr.hdr->PageLength;
> +     pReq->Header.PageNumber = pCfg->cfghdr.hdr->PageNumber;
> +     pReq->Header.PageType = (pCfg->cfghdr.hdr->PageType & 
> MPI_CONFIG_PAGETYPE_MASK);
> +
> +     if ((pCfg->cfghdr.hdr->PageType & 
> MPI_CONFIG_PAGETYPE_MASK) == MPI_CONFIG_PAGETYPE_EXTENDED) {
> +             pExtHdr = (ConfigExtendedPageHeader_t 
> *)pCfg->cfghdr.ehdr;
> +             pReq->ExtPageLength = 
> cpu_to_le16(pExtHdr->ExtPageLength);
> +             pReq->ExtPageType = pExtHdr->ExtPageType;
> +             pReq->Header.PageType = MPI_CONFIG_PAGETYPE_EXTENDED;
> +
> +             /* Page Length must be treated as a reserved 
> field for the extended header. */
> +             pReq->Header.PageLength = 0;
> +     }
> +
>       pReq->PageAddress = cpu_to_le32(pCfg->pageAddr);
>  
>       /* Add a SGE to the config request.
> @@ -4705,12 +4731,20 @@
>       else
>               flagsLength = MPT_SGE_FLAGS_SSIMPLE_READ;
>  
> -     flagsLength |= pCfg->hdr->PageLength * 4;
> +     if ((pCfg->cfghdr.hdr->PageType & 
> MPI_CONFIG_PAGETYPE_MASK) == MPI_CONFIG_PAGETYPE_EXTENDED) {
> +             flagsLength |= pExtHdr->ExtPageLength * 4;
>  
> -     mpt_add_sge((char *)&pReq->PageBufferSGE, flagsLength, 
> pCfg->physAddr);
> +             dcprintk((MYIOC_s_INFO_FMT "Sending Config 
> request type %d, page %d and action %d\n",
> +                     ioc->name, pReq->ExtPageType, 
> pReq->Header.PageNumber, pReq->Action));
> +     }
> +     else {
> +             flagsLength |= pCfg->cfghdr.hdr->PageLength * 4;
>  
> -     dcprintk((MYIOC_s_INFO_FMT "Sending Config request type 
> %d, page %d and action %d\n",
> -             ioc->name, pReq->Header.PageType, 
> pReq->Header.PageNumber, pReq->Action));
> +             dcprintk((MYIOC_s_INFO_FMT "Sending Config 
> request type %d, page %d and action %d\n",
> +                     ioc->name, pReq->Header.PageType, 
> pReq->Header.PageNumber, pReq->Action));
> +     }
> +
> +     mpt_add_sge((char *)&pReq->PageBufferSGE, flagsLength, 
> pCfg->physAddr);
>  
>       /* Append pCfg pointer to end of mf
>        */
> Index: scsi-misc-2.6/drivers/message/fusion/mptbase.h
> ===================================================================
> --- scsi-misc-2.6.orig/drivers/message/fusion/mptbase.h       
> 2005-08-18 15:24:01.000000000 +0200
> +++ scsi-misc-2.6/drivers/message/fusion/mptbase.h    
> 2005-08-18 15:24:28.000000000 +0200
> @@ -915,7 +915,10 @@
>  typedef struct _x_config_parms {
>       struct list_head         linkage;       /* linked list */
>       struct timer_list        timer;         /* timer 
> function for this request  */
> -     ConfigPageHeader_t      *hdr;
> +     union {
> +             ConfigExtendedPageHeader_t      *ehdr;
> +             ConfigPageHeader_t      *hdr;
> +     } cfghdr;
>       dma_addr_t               physAddr;
>       int                      wait_done;     /* wait for 
> this request */
>       u32                      pageAddr;      /* properly formatted */
> Index: scsi-misc-2.6/drivers/message/fusion/mptctl.c
> ===================================================================
> --- scsi-misc-2.6.orig/drivers/message/fusion/mptctl.c        
> 2005-08-18 15:24:27.000000000 +0200
> +++ scsi-misc-2.6/drivers/message/fusion/mptctl.c     
> 2005-08-18 15:24:28.000000000 +0200
> @@ -2324,7 +2324,7 @@
>       hdr.PageLength = 0;
>       hdr.PageNumber = 0;
>       hdr.PageType = MPI_CONFIG_PAGETYPE_MANUFACTURING;
> -     cfg.hdr = &hdr;
> +     cfg.cfghdr.hdr = &hdr;
>       cfg.physAddr = -1;
>       cfg.pageAddr = 0;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
> @@ -2333,7 +2333,7 @@
>  
>       strncpy(karg.serial_number, " ", 24);
>       if (mpt_config(ioc, &cfg) == 0) {
> -             if (cfg.hdr->PageLength > 0) {
> +             if (cfg.cfghdr.hdr->PageLength > 0) {
>                       /* Issue the second config page request */
>                       cfg.action = 
> MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
>  
> @@ -2479,7 +2479,7 @@
>               hdr.PageNumber = 0;
>               hdr.PageType = MPI_CONFIG_PAGETYPE_SCSI_DEVICE;
>  
> -             cfg.hdr = &hdr;
> +             cfg.cfghdr.hdr = &hdr;
>               cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
>               cfg.dir = 0;
>               cfg.timeout = 0;
> @@ -2527,15 +2527,15 @@
>       hdr.PageNumber = 3;
>       hdr.PageType = MPI_CONFIG_PAGETYPE_SCSI_DEVICE;
>  
> -     cfg.hdr = &hdr;
> +     cfg.cfghdr.hdr = &hdr;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
>       cfg.dir = 0;
>       cfg.timeout = 0;
>       cfg.physAddr = -1;
> -     if ((mpt_config(ioc, &cfg) == 0) && (cfg.hdr->PageLength > 0)) {
> +     if ((mpt_config(ioc, &cfg) == 0) && 
> (cfg.cfghdr.hdr->PageLength > 0)) {
>               /* Issue the second config page request */
>               cfg.action = MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
> -             data_sz = (int) cfg.hdr->PageLength * 4;
> +             data_sz = (int) cfg.cfghdr.hdr->PageLength * 4;
>               pg3_alloc = (SCSIDevicePage3_t *) pci_alloc_consistent(
>                                                       
> ioc->pcidev, data_sz, &page_dma);
>               if (pg3_alloc) {
> Index: scsi-misc-2.6/drivers/message/fusion/mptscsih.c
> ===================================================================
> --- scsi-misc-2.6.orig/drivers/message/fusion/mptscsih.c      
> 2005-08-18 15:24:27.000000000 +0200
> +++ scsi-misc-2.6/drivers/message/fusion/mptscsih.c   
> 2005-08-18 15:24:28.000000000 +0200
> @@ -3961,7 +3961,7 @@
>                               header1.PageLength = 
> ioc->spi_data.sdp1length;
>                               header1.PageNumber = 1;
>                               header1.PageType = 
> MPI_CONFIG_PAGETYPE_SCSI_DEVICE;
> -                             cfg.hdr = &header1;
> +                             cfg.cfghdr.hdr = &header1;
>                               cfg.physAddr = cfg1_dma_addr;
>                               cfg.action = 
> MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT;
>                               cfg.dir = 1;
> @@ -4359,7 +4359,7 @@
>       /* Prep cfg structure
>        */
>       cfg.pageAddr = (bus<<8) | id;
> -     cfg.hdr = NULL;
> +     cfg.cfghdr.hdr = NULL;
>  
>       /* Prep SDP0 header
>        */
> @@ -4405,7 +4405,7 @@
>       pcfg1Data = (SCSIDevicePage1_t *) (pDvBuf + sz);
>       cfg1_dma_addr = dvbuf_dma + sz;
>  
> -     /* Skip this ID? Set cfg.hdr to force config page write
> +     /* Skip this ID? Set cfg.cfghdr.hdr to force config page write
>        */
>       {
>               ScsiCfgData *pspi_data = &hd->ioc->spi_data;
> @@ -4423,7 +4423,7 @@
>  
>                               dv.cmd = MPT_SET_MAX;
>                               mptscsih_dv_parms(hd, &dv, 
> (void *)pcfg1Data);
> -                             cfg.hdr = &header1;
> +                             cfg.cfghdr.hdr = &header1;
>  
>                               /* Save the final negotiated settings to
>                                * SCSI device page 1.
> @@ -4489,7 +4489,7 @@
>               dv.cmd = MPT_SET_MIN;
>               mptscsih_dv_parms(hd, &dv, (void *)pcfg1Data);
>  
> -             cfg.hdr = &header1;
> +             cfg.cfghdr.hdr = &header1;
>               cfg.physAddr = cfg1_dma_addr;
>               cfg.action = MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT;
>               cfg.dir = 1;
> @@ -4643,7 +4643,7 @@
>                                       u32 sdp0_info;
>                                       u32 sdp0_nego;
>  
> -                                     cfg.hdr = &header0;
> +                                     cfg.cfghdr.hdr = &header0;
>                                       cfg.physAddr = cfg0_dma_addr;
>                                       cfg.action = 
> MPI_CONFIG_ACTION_PAGE_READ_CURRENT;
>                                       cfg.dir = 0;
> @@ -4728,7 +4728,7 @@
>        * 4) release
>        * 5) update nego parms to target struct
>        */
> -     cfg.hdr = &header1;
> +     cfg.cfghdr.hdr = &header1;
>       cfg.physAddr = cfg1_dma_addr;
>       cfg.action = MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT;
>       cfg.dir = 1;
> @@ -5127,7 +5127,7 @@
>  
>       /* Set if cfg1_dma_addr contents is valid
>        */
> -     if ((cfg.hdr != NULL) && (retcode == 0)){
> +     if ((cfg.cfghdr.hdr != NULL) && (retcode == 0)){
>               /* If disk, not U320, disable QAS
>                */
>               if ((inq0 == 0) && (dv.now.factor > MPT_ULTRA320)) {
> @@ -5143,7 +5143,7 @@
>                * skip save of the final negotiated settings to
>                * SCSI device page 1.
>                *
> -             cfg.hdr = &header1;
> +             cfg.cfghdr.hdr = &header1;
>               cfg.physAddr = cfg1_dma_addr;
>               cfg.action = MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT;
>               cfg.dir = 1;
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to