diff -u -r tx4650/linux/1 tx4650.neu//linux/1
--- tx4650/linux/1	2007-12-11 08:17:11.000000000 +0100
+++ tx4650.neu//linux/1	2010-11-29 11:11:11.000000000 +0100
@@ -8,7 +8,7 @@
 
 #ifdef _64BPLATFORM
 #include <linux/syscalls.h>
-#include <linux/ioctl32.h>
+#include <linux/ioctl.h>
 #endif
 /* add for SuSe 10(kernel 2.6.13.13-4) gcc_v4, undefind sys_ioctl,register_ioctl32_conversion, by sandy 20070117*/
 
diff -u -r tx4650/linux/osd_inc.h tx4650.neu//linux/osd_inc.h
--- tx4650/linux/osd_inc.h	2008-02-04 08:12:49.000000000 +0100
+++ tx4650.neu//linux/osd_inc.h	2010-11-29 11:11:07.000000000 +0100
@@ -8,7 +8,7 @@
 
 #ifdef _64BPLATFORM
 #include <linux/syscalls.h>
-#include <linux/ioctl32.h>
+#include <linux/ioctl.h>
 #endif
 /* add for SuSe 10(kernel 2.6.13.13-4) gcc_v4, undefind sys_ioctl,register_ioctl32_conversion, by sandy 20070117*/
 
diff -u -r tx4650/linux/osd_main.c tx4650.neu//linux/osd_main.c
--- tx4650/linux/osd_main.c	2008-02-04 08:34:39.000000000 +0100
+++ tx4650.neu//linux/osd_main.c	2010-11-29 12:22:54.000000000 +0100
@@ -805,8 +805,8 @@
 	#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
 	if(cmd->cmnd[0] == READ_CAPACITY)
 	{
-		if(*(U32 *)cmd->request_buffer==0xffffffff)
-			((U8 *)cmd->request_buffer)[3] = 0xfe;
+		if(*(U32 *)scsi_sglist(cmd)==0xffffffff)
+			((U8 *)scsi_sglist(cmd)[3] = 0xfe;
 	}
 	#endif
 	
@@ -851,9 +851,9 @@
 	dma_addr_t dma_handle;
 	int us;
 	
-	if (cmd->use_sg){
-		sg = (struct scatterlist *) cmd->request_buffer;
-		pReq->SgTable.SGCount = (U16)pci_map_sg(pDev,sg,cmd->use_sg,scsi_to_pci_dma_dir(cmd->sc_data_direction));
+	if (scsi_sg_count(cmd)){
+		sg = (struct scatterlist *) scsi_sglist(cmd);
+		pReq->SgTable.SGCount = (U16)pci_map_sg(pDev,sg,scsi_sg_count(cmd),scsi_to_pci_dma_dir(cmd->sc_data_direction));
 
 		for (us = 0; us < pReq->SgTable.SGCount ; us++,sg++){
       			pReq->SgTable.table[us].Count  = (U32)sg_dma_len(sg);
@@ -866,20 +866,20 @@
 	}else{
 #if defined(CONFIG_X86_64)
 #if defined(CONFIG_DISCONTIGMEM) && (LINUX_VERSION_CODE>=KERNEL_VERSION(2,4,18) )
-		dma_handle = pci_map_page(pDev,virt_to_page(cmd->request_buffer),((unsigned long)cmd->request_buffer & ~PAGE_MASK),cmd->request_bufflen,scsi_to_pci_dma_dir(cmd->sc_data_direction));
+		dma_handle = pci_map_page(pDev,virt_to_page(scsi_sglist(cmd)),((unsigned long)scsi_sglist(cmd) & ~PAGE_MASK),scsi_bufflen(cmd),scsi_to_pci_dma_dir(cmd->sc_data_direction));
 #else
 		dma_handle = pci_map_single(pDev,
-						(cmd->request_buffer),
-						cmd->request_bufflen,
+						(scsi_sglist(cmd)),
+						scsi_bufflen(cmd),
 						scsi_to_pci_dma_dir(cmd->sc_data_direction) );
 #endif
 #else
 #if LINUX_VERSION_CODE>=KERNEL_VERSION(2,4,18) 
-	  	dma_handle = pci_map_page(pDev,virt_to_page(cmd->request_buffer),((unsigned long)cmd->request_buffer & ~PAGE_MASK),cmd->request_bufflen,scsi_to_pci_dma_dir(cmd->sc_data_direction));
+	  	dma_handle = pci_map_page(pDev,virt_to_page(scsi_sglist(cmd)),((unsigned long)scsi_sglist(cmd) & ~PAGE_MASK),scsi_bufflen(cmd),scsi_to_pci_dma_dir(cmd->sc_data_direction));
  #else
  		dma_handle = pci_map_single(pDev,
-						(cmd->request_buffer),
-						cmd->request_bufflen,
+						(scsi_sglist(cmd)),
+						scsi_bufflen(cmd),
 						scsi_to_pci_dma_dir(cmd->sc_data_direction) );
 #endif
 #endif
@@ -887,7 +887,7 @@
 
 		 pReq->SgTable.table[0].StartAddress.Value = cpu_to_le64(dma_handle);
 
-		 pReq->SgTable.table[0].Count   = cpu_to_le32((U32) cmd->request_bufflen);
+		 pReq->SgTable.table[0].Count   = cpu_to_le32((U32) scsi_bufflen(cmd));
 		 pReq->SgTable.table[0].CtrlFlag = SG_CF_EOT|SG_CF_64B | SG_CF_HOST;
  
 		  }
@@ -950,9 +950,9 @@
 	dma_addr_t dma_handle;
 	int us;
 	
-	if (cmd->use_sg){
-		sg = (struct scatterlist *) cmd->request_buffer;
-		pReq->SgTable.SGCount = (U16)pci_map_sg(pDev,sg,cmd->use_sg,scsi_to_pci_dma_dir(cmd->sc_data_direction));
+	if (scsi_sg_count(cmd)){
+		sg = (struct scatterlist *) scsi_sglist(cmd);
+		pReq->SgTable.SGCount = (U16)pci_map_sg(pDev,sg,scsi_sg_count(cmd),scsi_to_pci_dma_dir(cmd->sc_data_direction));
 
 		for (us = 0; us < pReq->SgTable.SGCount ; us++,sg++){
       			pReq->SgTable.table[us].Count  = (U32)sg_dma_len(sg);
@@ -968,15 +968,15 @@
                         OSD_DPRINT( ("SG Entry %d Address %p.\n", us, pReq->SgTable.table[us].StartAddress.Value) );
 			pReq->SgTable.table[us].CtrlFlag = SG_CF_64B | SG_CF_HOST;
 			
-			//pReq->SgTable.table[us].Page = sg->page; //add by sandy 20061025
+			//pReq->SgTable.table[us].Page = sg_page(sg); //add by sandy 20061025
 			#if LINUX_VERSION_CODE <  KERNEL_VERSION(2,5,0)
 			// Kernel 2.4 will leave it empty if address in lowmem.
-				if(!sg->page)
+				if(!sg_page(sg))
 	                                pReq->SgTable.table[us].Page = virt_to_page(sg->address);
 				else
-					pReq->SgTable.table[us].Page = sg->page;
+					pReq->SgTable.table[us].Page = sg_page(sg);
                         #else
-                                pReq->SgTable.table[us].Page = sg->page;
+                                pReq->SgTable.table[us].Page = sg_page(sg);
 				//pReq->SgTable.table[us].offset = sg->offset; //add by sandy 20071225
                         #endif
 			//add by sandy 20070111
@@ -986,11 +986,11 @@
 	}else{
 		
 #if LINUX_VERSION_CODE>=KERNEL_VERSION(2,4,18)
-	  	dma_handle = pci_map_page(pDev,virt_to_page(cmd->request_buffer),((unsigned long)cmd->request_buffer & ~PAGE_MASK),cmd->request_bufflen,scsi_to_pci_dma_dir(cmd->sc_data_direction));
+	  	dma_handle = pci_map_page(pDev,virt_to_page(scsi_sglist(cmd)),((unsigned long)scsi_sglist(cmd) & ~PAGE_MASK),scsi_bufflen(cmd),scsi_to_pci_dma_dir(cmd->sc_data_direction));
  #else
  		dma_handle = pci_map_single(pDev,
-						(cmd->request_buffer),
-						cmd->request_bufflen,
+						(scsi_sglist(cmd)),
+						scsi_bufflen(cmd),
 						scsi_to_pci_dma_dir(cmd->sc_data_direction) );
 #endif
  		//pReq->SgTable.SGCount = 1;
@@ -1002,14 +1002,14 @@
 #else
   		pReq->SgTable.table[0].StartAddress.u.Low = (U32)(dma_handle);
 #endif
-		//pReq->SgTable.table[0].Count   = (U32) cmd->request_bufflen;
-		pReq->SgTable.table[0].Count   = cpu_to_le32((U32) cmd->request_bufflen);
+		//pReq->SgTable.table[0].Count   = (U32) scsi_bufflen(cmd);
+		pReq->SgTable.table[0].Count   = cpu_to_le32((U32) scsi_bufflen(cmd));
 		pReq->SgTable.table[0].CtrlFlag = SG_CF_EOT|SG_CF_64B | SG_CF_HOST;
 
-		pReq->SgTable.table[0].Page = virt_to_page(cmd->request_buffer);//add
+		pReq->SgTable.table[0].Page = virt_to_page(scsi_sglist(cmd));//add
   	}
 	
-	pReq->req.wSize = (U32)cmd->request_bufflen; //add by sandy 20061025	
+	pReq->req.wSize = (U32)scsi_bufflen(cmd); //add by sandy 20061025	
   	pReq->req.pSgTable = &pReq->SgTable; 
   		
 }
@@ -1176,12 +1176,12 @@
    	pReq->req.bLUN    	= lun ;
    	pReq->req.bSenseSize     	= SCSI_SENSE_BUFFERSIZE ;
  	//pReq->req.p_buf          	= (unchar *)cmd->buffer ;
-	pReq->req.p_buf			= (unchar *)cmd->request_buffer ; //for kernel > 2.6.18, 20070423, sandy
+	pReq->req.p_buf			= (unchar *)scsi_sglist(cmd) ; //for kernel > 2.6.18, 20070423, sandy
        	pReq->req.p_sns          	= (unchar *)cmd->sense_buffer ;
 	
        	pReq->req.bCdbSize          	= cmd->cmd_len ;
        	//pReq->req.wSize          	= cmd->bufflen ;
-	pReq->req.wSize                 = cmd->request_bufflen ; //for kernel > 2.6.18, 20070423, sandy
+	pReq->req.wSize                 = scsi_bufflen(cmd) ; //for kernel > 2.6.18, 20070423, sandy
 
 	//if(pReq->ReqType)
 		//OSD_DPRINT( ("t3_queue: ReqType=0x%x\n",pReq->ReqType) );      
@@ -1565,7 +1565,7 @@
 
 	OSDI_InitializeComponents(pOSDExtension,  gVenDevID[Type], gVenDevID[Type]);
 	/* According to tony's advice, move request interrupt handle here to avoid unexpected operations */
-	rc = request_irq(fasttrak_dev->irq, (void *)t3_intr, SA_SHIRQ, FASTTRAK_DEV_NAME, (void *)pOSDExtension);
+	rc = request_irq(fasttrak_dev->irq, (void *)t3_intr, IRQF_SHARED, FASTTRAK_DEV_NAME, (void *)pOSDExtension);
 	if(rc){
 	   	OSD_DPRINT( ( " t3 %d request_irq %d error, rc = %d\n", pOSDExtension->host_no, fasttrak_dev->irq, rc) );
 	   	goto err_out_iounmap;
@@ -1999,7 +1999,7 @@
 	OSDI_InitializeComponents(pOSDExtension,  (pdev->vendor)<<16|pdev->device, (pdev->subsystem_vendor)<<16|pdev->subsystem_device);
 	
 	rc = request_irq( pdev->irq, (void *)t3_intr, 
-			  SA_SHIRQ, FASTTRAK_DEV_NAME, 
+			  IRQF_SHARED, FASTTRAK_DEV_NAME, 
 			  (void *)pOSDExtension );
 	if (rc) {
 	   	dev_err( &pdev->dev, "t3%x: request_irq()  %d error,"
diff -u -r tx4650/Makefile tx4650.neu//Makefile
--- tx4650/Makefile	2007-08-31 12:23:21.000000000 +0200
+++ tx4650.neu//Makefile	2010-11-29 11:02:07.000000000 +0100
@@ -56,7 +56,7 @@
 
 # add for kernel version after 2.6.18  #
 ifeq ("x", "x$(KERNEL_VER)")
-        VERSIONFILE=$(KERNEL_BLD_DIR)/include/linux/utsrelease.h
+        VERSIONFILE=$(KERNEL_BLD_DIR)/include/generated/utsrelease.h
         KERNEL_VER = $(shell cat $(VERSIONFILE) | grep -m 1 UTS_RELEASE | cut -c22-24 | head -n 1)
 endif
 
Nur in tx4650.neu/: modules.order.
