Rt2500 auf AMD64
Aus Gentoo Linux Wiki
| 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
