I'm new to the list and really hope that someone can help me.

I'm using a board with the following characteristics:
- KS8695P processor (ARM922T)
- Linux 2.4.27
- Atheros 5212 in a ARIES 5354MP PCI card
- armv4-le-elf HAL

This is the log I get when inserting the module
ath_hal: (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413)
Using /usr/local/lib/modules/2.4.27-vrs1/net/wlan.o
Using /usr/local/lib/modules/2.4.27-vrs1/net/ath_rate_onoe.o
ath_rate_onoe: 1.0
Using /usr/local/lib/modules/2.4.27-vrs1/net/ath_pci.o
ath0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
ath0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ath0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
ath0: turbo rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
ath0: mac 5.6 phy 4.1 5ghz radio 1.7 2ghz radio 2.3
ath0: 802.11 address: 00:02:6f:20:f5:33
ath0: Use hw queue 0 for WME_AC_BE traffic
ath0: Use hw queue 1 for WME_AC_BK traffic
ath0: Use hw queue 2 for WME_AC_VI traffic
ath0: Use hw queue 3 for WME_AC_VO traffic
ath0: Atheros 5212: mem=0x64000000, irq=2

I've had several problems until I was definitely able to compile properly the driver and had it running in my board.

First of all, I have detected a problem when compiling the driver. When the hal is linked to generate ath_hal.o, I get the following error:

    uudecode ./../hal/public/armv4-le-elf.hal.o.uu
    arm-linux-ld -EL  -o ath_hal.o -r ah_osdep.o hal.o
    arm-linux-ld: ERROR: hal.o uses hardware FP, whereas ath_hal.o uses software FP
    arm-linux-ld: failed to merge target specific data of file hal.o

This "error" only happens when I use GCC-3.2.1, If I use GCC-2.95.3 the linker doesn't yield any error. It also can be solved using GCC-3.2.1 and adding the flag "--no-warn-mismatch"  to the link command line.

It seems to me that HAL is compiled with hardware FP support. KS8695P does not have hardware FP coprocessor and software FP emulation is needed, so maybe HAL can produce kernel panics if it tries to execute any invalid instruction in my processor...

This is related with my following problem. Madwifi detects the atheros chip properly, so it seems that PCI communication is right, and traffic is forwarded properly when I use low rates. However, when I increase the traffic rate that the atheros has to transmit. Using a moderately low rate of 200 frames per second of 124 bytes, I get a kernel panic in a few seconds. This is one of the messages I get passed through ksymoops filter:

Unable to handle kernel paging request at virtual address be04e0d4
Internal error: Oops: 0
CPU: 0
pc : [<be04e0d4>]    lr : [<c003f2f0>]    Tainted: P
Using defaults from ksymoops -t elf32-i386 -a i386
sp : c014df2c  ip : c014df50  fp : c014df4c
r10: 00015218  r9 : ffffffff  r8 : 60000093
r7 : c0160720  r6 : fffffff7  r5 : c014e0a0  r4 : 00000008
r3 : 20000013  r2 : c0160720  r1 : 00000000  r0 : 00000002
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  Segment kernel
Control: 317F  Table: 00E7C000  DAC: 0000001D
Stack: (0xc014df2c to 0xc014e000)
df20:                            c0160720 c014df68 00000001 c003f8d0 60000013
df40: c014df64 c014df50 c003f2f0 c004e068 c014df9c c014dfb0 c014dfbc c014df68
df60: c003e3c0 c003f2a4 00000000 00000032 00000000 60000013 c003f884 c014c000
df80: c01590fc c01590f0 c014ed7c 41029220 00015218 c014dfbc c014dfb0 c014dfb0
dfa0: c003f838 c003f8d0 60000013 ffffffff c014dfd4 c014dfc0 c003f930 c003f894
dfc0: c0161f60 c01825ec c014dfe4 c014dfd8 c003e030 c003f8e8 c014dffc c014dfe8
dfe0: c0008660 c003e010 c015950c c01825ec 00000000 c014e000 c0008080 c0008558
Function entered at [<c004e058>] from [<c003f2f0>]
 r8 = 60000013  r7 = C003F8D0  r6 = 00000001  r5 = C014DF68
 r4 = C0160720
Function entered at [<c003f294>] from [<c003e3c0>]
 r5 = C014DFB0  r4 = C014DF9C
Function entered at [<c003f884>] from [<c003f930>]
Function entered at [<c003f8d8>] from [<c003e030>]
 r5 = C01825EC  r4 = C0161F60
Function entered at [<c003e000>] from [<c0008660>]
Function entered at [<c0008548>] from [<c0008080>]
Code: bad PC value.
Kernel panic: Aiee, killing interrupt handler!
Warning (Oops_read): Code line not seen, dumping what data is available

>>LR;  c003f2f0 <asm_do_IRQ+5c/90>
>>EIP; be04e0d4 Before first symbol   <=====
Trace; c004e058 <do_softirq+0/e4>
Trace; c003f2f0 <asm_do_IRQ+5c/90>
Trace; c003f294 <asm_do_IRQ+0/90>
Trace; c003e3c0 <__irq_svc+20/60>
Trace; c003f884 <default_idle+0/54>
Trace; c003f930 <cpu_idle+58/7c>
Trace; c003f8d8 <cpu_idle+0/7c>
Trace; c003e030 <rest_init+30/3c>
Trace; c003e000 <__init_end+0/0>
Trace; c0008660 <start_kernel+118/150>
Trace; c0008548 <start_kernel+0/150>
Trace; c0008080 <__mmap_switched+0/30>

This only happens when I use the madwifi driver, because I can forward (route) traffic between interfaces at 10Mb bidirectionaly with no problems at all.

Is anybody experiencing any of these problems? Is anybody using KS8695P and atheros?

Hope that someone can help me.