Intel pro 100 (8255x) not responding to commands as expected
Posted: Fri May 03, 2013 1:44 pm
I've read through Intel's manual, and looked at the source code for the linux and freeBSD drivers for examples on how to setup and configure the intel pro 100 (8255x) network card. As far as I can tell, I'm writing the command to the correct PCI device at the correct offsets from the CSR IO Mapped Base Address Register, but the device is not responding according to how the documentation claims it will. I am being told to load 0 into the CSR SCB General Pointer (offset of 0x4 from the IO Mapped BAR) then use the Load CU Base Address SCB command (0x0060).
They then tell me to wait for that register to return 0 on read, and then run the same sequence with the Receive Unit (RU).
The first sequence writes the correct value to what appears to be the correct register, but then I read the register every tenth of a millisecond or so, and it's still 0x0060 instead of 0x0000
If I don't wait, or do that command at all, and write the command for the RU down to the device, (0x0006), the interrupt is generated (and was supposed to happen for that first write as well). But from what I can tell, the RU is now in suspended mode and I get a different result when I read back the byte I just wrote (0x0004 vs. 0x0006)
I know that I am writing down to the correct locations, because when I use PORT software reset command, it works just fine.
Code: Select all
__outl(CSR_BAR + E_CSR_SCB_GEN_PTR, 0x00000000);
__outb(CSR_BAR + E_CSR_SCB_COM_WORD, 0x60);
The first sequence writes the correct value to what appears to be the correct register, but then I read the register every tenth of a millisecond or so, and it's still 0x0060 instead of 0x0000
If I don't wait, or do that command at all, and write the command for the RU down to the device, (0x0006), the interrupt is generated (and was supposed to happen for that first write as well). But from what I can tell, the RU is now in suspended mode and I get a different result when I read back the byte I just wrote (0x0004 vs. 0x0006)
I know that I am writing down to the correct locations, because when I use PORT software reset command, it works just fine.