Orinoco Solution (so far)
Well, my Orinoco 802.11b mini-pci card had this weird thing – sometimes it failed to start up after suspend. Why? I don’t know. I wasn’t able to understand the cause of it, and not being a coder, I had some hard time tracking kernel driver problems.
The error message was the following one:
orinoco_lock() called with hw_unavailable (dev=c1256800)
eth1: Error -110 setting multicast list.
Google is my friend. It can be yours as well.
I searched for Orinoco_pci modules, and was able to come up with this:
Ok, so I can understand my driver version is 0.13e, which comes with the Kernel, but this version didn’t seem to do the work quite right, so I had to test a newer version, way newer. I downloaded the external module pack from here (direct link to the tar.gz I’ve downloaded) and tried to compile it. I failed. Badly. I was not able to understand the cause of the failure. More experianced coder would have solved it by now, but I was not able to. I got this, in general:
orinoco_pci.c:330: error: too many arguments to function `pci_save_state’
orinoco_pci.c:347: error: too many arguments to function `pci_restore_state’
I persumed it was right – the function got one argument too many, so I tried to find another example of this function by running grep "pci_save_state" and "pci_restore_state" /usr/src/linux
I got few files, all using only one argument, So I had to change the file orinoco_pci.c in two places:
pci_save_state(pdev, card->pci_state); on line 330
pci_restore_state(pdev, card->pci_state); on line 347
Based on the examples seen in the kernel tree itself, I’ve changed these two lines to the following:
I was surprised it managed to compile correctly (tons of warnings, but no errors). I was able to manually load the module for testing, and after careful backup of the original modules, I replaced them with the newer ones.
Tested since yesterday, and so far It seems like my other wireless card, the PCMCIA card, has become a waste of money. I guess I can still use it to scan for networks…
Since there was no place in hell I was able to find this piece of information (me not being a coder), I am putting this online, for all who ever need it to watch and see.