wireless resume woes again - with solution
Posted: 20 Sep 2011, 22:08
Hi
I've installed the latest kernel and samsung-wireless recently
and noticed that the wireless does not come back after suspend-resume (again).
I've got
* Samsung N140
* kernel 2.6.38-11.49~ppa1~loms~natty
* samsung-wireless 0015.1013.2010~ppa2~loms~natty
I've done some investigations and found that dkms is doing a rather lousy job at renaming the driver. As was discussed in [http://www.voria.org/forum/viewtopic.php?f=3&t=593], the linux kernel now has a driver called "r8192e_pci", so the samsung-wireless has to use a different name ("r8192e_pci_realtek") to avoid confusion. Samsung-wireless now uses dkms, so it builds the module as "r8192e_pci" and expects dkms to rename it into "r8192e_pci_realtek" when installed. However, as it seems, this does not really work as expected. When the driver is installed into the kernel, the file is indeed called "r8192e_pci_realtek.ko". But the module name inside it is not changed. So, when the module is loaded, lsmod still lists it as "r8192e_pci".
That does not really bother anyone until we come to suspend/resume. During suspend, the /usr/lib/pm-utils/sleep.d/75modules script finds the "r8192e_pci" module in the list and unloads it. And later, at resume time, it dutifully tries to load back the driver which it remembers as "r8192e_pci". And sure enough it loads the "r8192e_pci" from kernel, NOT the "r8192e_pci_realtek" from samsung-wireless. So nothing good comes out of this.
Unfortunately, I could not find how to fix dkms. So the only solution I could come up with was to change the realtek's makefile to build the driver as "r8192e_pci_realtek" so that no renaming is necessary.
What I've done is
This fixed the suspend/resume for me.
VoRia, if you agree, could you please make this change in the package.
I've installed the latest kernel and samsung-wireless recently
and noticed that the wireless does not come back after suspend-resume (again).
I've got
* Samsung N140
* kernel 2.6.38-11.49~ppa1~loms~natty
* samsung-wireless 0015.1013.2010~ppa2~loms~natty
I've done some investigations and found that dkms is doing a rather lousy job at renaming the driver. As was discussed in [http://www.voria.org/forum/viewtopic.php?f=3&t=593], the linux kernel now has a driver called "r8192e_pci", so the samsung-wireless has to use a different name ("r8192e_pci_realtek") to avoid confusion. Samsung-wireless now uses dkms, so it builds the module as "r8192e_pci" and expects dkms to rename it into "r8192e_pci_realtek" when installed. However, as it seems, this does not really work as expected. When the driver is installed into the kernel, the file is indeed called "r8192e_pci_realtek.ko". But the module name inside it is not changed. So, when the module is loaded, lsmod still lists it as "r8192e_pci".
That does not really bother anyone until we come to suspend/resume. During suspend, the /usr/lib/pm-utils/sleep.d/75modules script finds the "r8192e_pci" module in the list and unloads it. And later, at resume time, it dutifully tries to load back the driver which it remembers as "r8192e_pci". And sure enough it loads the "r8192e_pci" from kernel, NOT the "r8192e_pci_realtek" from samsung-wireless. So nothing good comes out of this.
Unfortunately, I could not find how to fix dkms. So the only solution I could come up with was to change the realtek's makefile to build the driver as "r8192e_pci_realtek" so that no renaming is necessary.
What I've done is
Code: Select all
cd /usr/src/samsung_wireless-0015.1013.2010
sed --in-place -e 's/r8192e_pci/r8192e_pci_realtek/' HAL/rtl8192/Makefile
sed --in-place -e 's/"r8192e_pci"/"r8192e_pci_realtek"/' dkms.conf
# rebuild
dkms remove -m samsung_wireless -v 0015.1013.2010 --all
dkms add -m samsung_wireless -v 0015.1013.2010
dkms build -m samsung_wireless -v 0015.1013.2010
dkms install -m samsung_wireless -v 0015.1013.2010
VoRia, if you agree, could you please make this change in the package.