target_ppr_options =
                        (spi_dt(starget) ? MSG_EXT_PPR_DT_REQ : 0)
                        + (spi_qas(starget) ? MSG_EXT_PPR_QAS_REQ : 0)
-                       + (spi_iu(starget) ?  MSG_EXT_PPR_IU_REQ : 0);
+                       + (spi_iu(starget) ?  MSG_EXT_PPR_IU_REQ : 0)
+                       + (spi_rd_strm(starget) ? MSG_EXT_PPR_RD_STRM : 0)
+                       + (spi_pcomp_en(starget) ? MSG_EXT_PPR_PCOMP_EN : 0)
+                       + (spi_rti(starget) ? MSG_EXT_PPR_RTI : 0)
+                       + (spi_wr_flow(starget) ? MSG_EXT_PPR_WR_FLOW : 0);
 
                if (tinfo->curr.period == spi_period(starget)
                    && tinfo->curr.width == spi_width(starget)
                spi_dt(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_DT_REQ ? 1 : 0;
                spi_qas(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_QAS_REQ ? 1 : 0;
                spi_iu(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ ? 1 : 0;
+               spi_rd_strm(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_RD_STRM ? 1 : 0;
+               spi_pcomp_en(starget) =  tinfo->curr.ppr_options & MSG_EXT_PPR_PCOMP_EN ? 1 : 0;
+               spi_rti(starget) =  tinfo->curr.ppr_options &  MSG_EXT_PPR_RTI ? 1 : 0;
+               spi_wr_flow(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_WR_FLOW ? 1 : 0;
                spi_display_xfer_agreement(starget);
                break;
        }
 
 static void ahd_linux_exit(void);
 
-static void ahd_linux_set_xferflags(struct scsi_target *starget, unsigned int ppr_options, unsigned int period)
-{
-       spi_qas(starget) = (ppr_options & MSG_EXT_PPR_QAS_REQ)? 1 : 0;
-       spi_dt(starget) = (ppr_options & MSG_EXT_PPR_DT_REQ)? 1 : 0;
-       spi_iu(starget) = (ppr_options & MSG_EXT_PPR_IU_REQ) ? 1 : 0;
-       spi_rd_strm(starget) = (ppr_options & MSG_EXT_PPR_RD_STRM) ? 1 : 0;
-       spi_wr_flow(starget) = (ppr_options & MSG_EXT_PPR_WR_FLOW) ? 1 : 0;
-       spi_pcomp_en(starget) = (ppr_options & MSG_EXT_PPR_PCOMP_EN) ? 1 : 0;
-       spi_rti(starget) = (ppr_options & MSG_EXT_PPR_RTI) ? 1 : 0;
-       spi_period(starget) = period;
-}
-
 static void ahd_linux_set_width(struct scsi_target *starget, int width)
 {
        struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
        ahd_find_syncrate(ahd, &period, &ppr_options,
                          dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2);
 
-       ahd_linux_set_xferflags(starget, ppr_options, period);
-
        ahd_lock(ahd, &flags);
        ahd_set_syncrate(ahd, &devinfo, period, offset,
                         ppr_options, AHD_TRANS_GOAL, FALSE);
                ahd_find_syncrate(ahd, &period, &ppr_options, 
                                  dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2);
        }
-       ahd_linux_set_xferflags(starget, ppr_options, period);
 
        ahd_lock(ahd, &flags);
        ahd_set_syncrate(ahd, &devinfo, period, offset, ppr_options,
        ahd_find_syncrate(ahd, &period, &ppr_options,
                          dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2);
 
-       ahd_linux_set_xferflags(starget, ppr_options, period);
-
        ahd_lock(ahd, &flags);
        ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset,
                         ppr_options, AHD_TRANS_GOAL, FALSE);
        ahd_find_syncrate(ahd, &period, &ppr_options,
                          dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2);
 
-       spi_qas(starget) = (ppr_options & MSG_EXT_PPR_QAS_REQ)? 1 : 0;
-
        ahd_lock(ahd, &flags);
        ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset,
                         ppr_options, AHD_TRANS_GOAL, FALSE);
        ahd_find_syncrate(ahd, &period, &ppr_options,
                          dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2);
 
-       ahd_linux_set_xferflags(starget, ppr_options, period);
-
        ahd_lock(ahd, &flags);
        ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset,
                         ppr_options, AHD_TRANS_GOAL, FALSE);
        ahd_find_syncrate(ahd, &period, &ppr_options,
                          dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2);
 
-       spi_rd_strm(starget) = (ppr_options & MSG_EXT_PPR_RD_STRM) ? 1 : 0;
-
        ahd_lock(ahd, &flags);
        ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset,
                         ppr_options, AHD_TRANS_GOAL, FALSE);
        ahd_find_syncrate(ahd, &period, &ppr_options,
                          dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2);
 
-       spi_wr_flow(starget) = (ppr_options & MSG_EXT_PPR_WR_FLOW) ? 1 : 0;
-
        ahd_lock(ahd, &flags);
        ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset,
                         ppr_options, AHD_TRANS_GOAL, FALSE);
        ahd_find_syncrate(ahd, &period, &ppr_options,
                          dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2);
 
-       spi_rti(starget) = (ppr_options & MSG_EXT_PPR_RTI) ? 1 : 0;
-
        ahd_lock(ahd, &flags);
        ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset,
                         ppr_options, AHD_TRANS_GOAL, FALSE);
        ahd_find_syncrate(ahd, &period, &ppr_options,
                          dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2);
 
-       spi_pcomp_en(starget) = (ppr_options & MSG_EXT_PPR_PCOMP_EN) ? 1 : 0;
-
        ahd_lock(ahd, &flags);
        ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset,
                         ppr_options, AHD_TRANS_GOAL, FALSE);