diff -ru RT2500-Linux-STA-1.4.3.0.orig/STA/Module/2.6.x/Makefile RT2500-Linux-STA-1.4.3.0/STA/Module/2.6.x/Makefile --- RT2500-Linux-STA-1.4.3.0.orig/STA/Module/2.6.x/Makefile 2004-09-15 05:46:46.000000000 +0200 +++ RT2500-Linux-STA-1.4.3.0/STA/Module/2.6.x/Makefile 2004-10-20 15:48:27.113470560 +0200 @@ -1,6 +1,7 @@ # Comment/uncomment the following line to enable/disable debugging WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs +CFLAGS_rtmp_init.o += -fno-unit-at-a-time obj-m := rt2500.o diff -ru RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp_data.c RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp_data.c --- RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp_data.c 2004-09-15 05:46:42.000000000 +0200 +++ RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp_data.c 2004-10-20 15:48:27.133467520 +0200 @@ -3527,41 +3527,6 @@ ======================================================================== Routine Description: - Check Rx descriptor, return NDIS_STATUS_FAILURE if any error dound - - Arguments: - pRxD Pointer to the Rx descriptor - - Return Value: - NDIS_STATUS_SUCCESS No err - NDIS_STATUS_FAILURE Error - - Note: - - ======================================================================== -*/ -inline NDIS_STATUS RTMPCheckRxDescriptor( - IN PRXD_STRUC pRxD) -{ - // Phy errors - if (pRxD->PhyErr) - return(NDIS_STATUS_FAILURE); - - // CRC errors - if (pRxD->Crc) - return(NDIS_STATUS_FAILURE); - - // Paul 04-03 for OFDM Rx length issue - if (pRxD->DataByteCnt > 1600) - return(NDIS_STATUS_FAILURE); - - return(NDIS_STATUS_SUCCESS); -} - -/* - ======================================================================== - - Routine Description: Apply packet filter policy, return NDIS_STATUS_FAILURE if this frame should be dropped. diff -ru RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp.h RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp.h --- RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp.h 2004-09-15 05:46:42.000000000 +0200 +++ RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp.h 2004-10-20 15:48:27.149465088 +0200 @@ -125,12 +125,12 @@ #define NdisReleaseSpinLock(lock) \ { \ - spin_unlock_irqrestore(lock, IrqFlags); \ + spin_unlock_bh(lock); \ } #define NdisAcquireSpinLock(lock) \ { \ - spin_lock_irqsave(lock, IrqFlags); \ + spin_lock_bh(lock); \ } #define NdisFreeSpinLock(lock) \ @@ -1064,11 +1064,20 @@ // Enable & Disable NIC interrupt via writing interrupt mask register // Since it use ADAPTER structure, it have to be put after structure definition. // -inline VOID NICDisableInterrupt( - IN PRTMP_ADAPTER pAdapter); +static inline VOID NICDisableInterrupt( + IN PRTMP_ADAPTER pAd) +{ + RTMP_IO_WRITE32(pAd, CSR8, 0xFFFF); + RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE); +} -inline VOID NICEnableInterrupt( - IN PRTMP_ADAPTER pAdapter); +static inline VOID NICEnableInterrupt( + IN PRTMP_ADAPTER pAd) +{ + // 0xFF37 : Txdone & Rxdone, 0xFF07: Txdonw, Rxdone, PrioDone, AtimDone, + RTMP_IO_WRITE32(pAd, CSR8, 0xFE14); + RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE); +} BOOLEAN NICCheckForHang( IN PRTMP_ADAPTER pAd); @@ -1319,8 +1328,40 @@ IN ULONG Length, IN UCHAR TxRate); -inline NDIS_STATUS RTMPCheckRxDescriptor( - IN PRXD_STRUC pRxD); +/* + ======================================================================== + + Routine Description: + Check Rx descriptor, return NDIS_STATUS_FAILURE if any error dound + + Arguments: + pRxD Pointer to the Rx descriptor + + Return Value: + NDIS_STATUS_SUCCESS No err + NDIS_STATUS_FAILURE Error + + Note: + + ======================================================================== +*/ +static inline NDIS_STATUS RTMPCheckRxDescriptor( + IN PRXD_STRUC pRxD) +{ + // Phy errors + if (pRxD->PhyErr) + return(NDIS_STATUS_FAILURE); + + // CRC errors + if (pRxD->Crc) + return(NDIS_STATUS_FAILURE); + + // Paul 04-03 for OFDM Rx length issue + if (pRxD->DataByteCnt > 1600) + return(NDIS_STATUS_FAILURE); + + return(NDIS_STATUS_SUCCESS); +} NDIS_STATUS RTMPApplyPacketFilter( IN PRTMP_ADAPTER pAdapter, @@ -1333,7 +1374,7 @@ OUT UCHAR *AccessCategory); #ifdef BIG_ENDIAN -inline VOID RTMPDescriptorEndianChange( +extern inline VOID RTMPDescriptorEndianChange( IN PUCHAR pData, IN ULONG DescriptorType); diff -ru RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp_init.c RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp_init.c --- RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp_init.c 2004-09-15 05:46:42.000000000 +0200 +++ RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp_init.c 2004-10-20 15:48:27.167462352 +0200 @@ -549,21 +549,6 @@ DBGPRINT(RT_DEBUG_TRACE, "<-- NICInitTransmit\n"); } -inline VOID NICDisableInterrupt( - IN PRTMP_ADAPTER pAd) -{ - RTMP_IO_WRITE32(pAd, CSR8, 0xFFFF); - RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE); -} - -inline VOID NICEnableInterrupt( - IN PRTMP_ADAPTER pAd) -{ - // 0xFF37 : Txdone & Rxdone, 0xFF07: Txdonw, Rxdone, PrioDone, AtimDone, - RTMP_IO_WRITE32(pAd, CSR8, 0xFE14); - RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE); -} - /* ======================================================================== diff -ru RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp_main.c RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp_main.c --- RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp_main.c 2004-09-15 05:46:42.000000000 +0200 +++ RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp_main.c 2004-10-20 15:48:27.186459464 +0200 @@ -101,7 +101,7 @@ RTMP_ADAPTER *pAd; CHAR *print_name; INT chip_id = (int) ent->driver_data; - ULONG csr_addr; + unsigned long csr_addr; CSR3_STRUC StaMacReg0; CSR4_STRUC StaMacReg1; INT Status; @@ -128,7 +128,7 @@ net_dev->irq = pPci_Dev->irq; // map physical address to virtual address for accessing register - csr_addr = (ULONG) ioremap(pci_resource_start(pPci_Dev, 0), pci_resource_len(pPci_Dev, 0)); + csr_addr = (unsigned long) ioremap(pci_resource_start(pPci_Dev, 0), pci_resource_len(pPci_Dev, 0)); if (!csr_addr) { DBGPRINT(RT_DEBUG_TRACE, "ioremap failed for device %s, region 0x%X @ 0x%lX\n", @@ -139,7 +139,7 @@ // Save CSR virtual address and irq to device structure net_dev->base_addr = csr_addr; pAd = net_dev->priv; - pAd->CSRBaseAddress = csr_addr; + pAd->CSRBaseAddress = net_dev->base_addr; pAd->net_dev = net_dev; // Set DMA master @@ -195,7 +195,7 @@ for (i = 0; i < 8; i++) { - sprintf(slot_name, "ra%d", i); + sprintf(slot_name, "eth%d", i); for (device = dev_base; device != NULL; device = device->next) { @@ -212,7 +212,7 @@ goto err_out_unmap; } - sprintf(net_dev->name, "ra%d", i); + sprintf(net_dev->name, "eth%d", i); } // Register this device diff -ru RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp_tkip.c RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp_tkip.c --- RT2500-Linux-STA-1.4.3.0.orig/STA/Module/rtmp_tkip.c 2004-09-15 05:46:42.000000000 +0200 +++ RT2500-Linux-STA-1.4.3.0/STA/Module/rtmp_tkip.c 2004-10-20 15:48:27.199457488 +0200 @@ -124,7 +124,7 @@ M = pTkip->M; // Alignment case - if((nBytesInM == 0) && ((((ULONG)pSrc) & 0x3) == 0)) + if((nBytesInM == 0) && ((((unsigned long)pSrc) & 0x3) == 0)) { while(nBytes >= 4) { diff -ru RT2500-Linux-STA-1.4.3.0.orig/STA/Utilitys/raconfig.cpp RT2500-Linux-STA-1.4.3.0/STA/Utilitys/raconfig.cpp --- RT2500-Linux-STA-1.4.3.0.orig/STA/Utilitys/raconfig.cpp 2004-09-15 05:47:04.000000000 +0200 +++ RT2500-Linux-STA-1.4.3.0/STA/Utilitys/raconfig.cpp 2004-10-20 15:48:27.214455208 +0200 @@ -42,7 +42,7 @@ for (i=0; i<8; i++) { - sprintf(name, "ra%d", i); + sprintf(name, "eth%d", i); memset(Device_Name, 0x00, 255); if( OidQueryInformation(RT_OID_DEVICE_NAME, socket_id, name, Device_Name, 255) != 0) continue;