Rt2500 auf AMD64

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Teil ist Artikel der Hardware Serie.
Laptops Motherboards Servers Eingabegeräte RAID Controller TV Karten Wireless Andere Hardware Andere Architekturen alphabetischer Hardware Index



Inhaltsverzeichnis

[Bearbeiten] Quellen patchen

Unter Gentoo existiert mittlerweile ein Ebuild auch für ~amd64 (also unstable). Es ist direkt über Portage verfügbar. Nach Eingabe des folgenden Befehls wird der Treiber installiert:

emerge net-wireless/rt2500

Auch kismet arbeitet mit diesem Treiber mittlerweile problemlos.

Das folgend dargestellte Patchen der Quellcodes ist daher nur noch in Ausnahmefällen notwendig:

Bevor der Treiber kompiliert werden kann, muss der Quellcode gepatcht werden.

[Bearbeiten] rtmp_main.c

bei Zeile 101

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;

bei Zeile 128

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",

bei Zeile 139

// 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

[Bearbeiten] rtmp_tkip.c

bei Zeile 124

M = pTkip->M;

// Alignment case
- if((nBytesInM == 0) && ((((ULONG)pSrc) & 0x3) == 0))
+ if((nBytesInM == 0) && ((((unsigned long)pSrc) & 0x3) == 0))
{
while(nBytes >= 4)
{


[Bearbeiten] Probleme mit SMP/Dualcore

Auf einem SMP (d.h. Dual/Multicore) System wird der Treiber nicht kompiliert. Man kann entweder wieder auf eine nicht SMP umgebung zurückwechseln (d.h. mit entsprechendem Kernel booten) oder man fügt der /usr/src/linux/.config die Zeile:

CONFIG_BROKEN_ON_SMP=y

hinzu.

Man kann nun das rt2500 Modul laden, aber ein Aufruf von

ifconfig ra0 up 

führt dann auf einem SMP System zum Systemcrash

'Persönliche Werkzeuge