2022-09-27 17:29:24

by Larry Finger

[permalink] [raw]
Subject: Problem with modprobe

Hi,

The driver for the Realtek RTL8821CE network card show some asymmetrical
behavior between loading and unloading.

Starting from scratch, a load command provides the expected results:

finger@localhost:~/rtw88>sudo modprobe -v rtw88_8821ce
insmod
/lib/modules/6.1.0-rc3-wireless-next-00623-g2bc09edc7fa2-dirty/kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko

insmod
/lib/modules/6.1.0-rc3-wireless-next-00623-g2bc09edc7fa2-dirty/kernel/drivers/net/wireless/realtek/rtw88/rtw88_pci.ko

insmod
/lib/modules/6.1.0-rc3-wireless-next-00623-g2bc09edc7fa2-dirty/kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821c.ko

insmod
/lib/modules/6.1.0-rc3-wireless-next-00623-g2bc09edc7fa2-dirty/kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821ce.ko

Unloading produces a different result:

finger@localhost:~/rtw88>sudo modprobe -rv rtw88_8821ce
rmmod rtw88_8821ce
rmmod rtw88_pci
rmmod rtw88_8821c

Note that rtw88_core is still loaded and needs to be unloaded separately:

finger@localhost:~/rtw88>sudo modprobe -rv rtw88_core
rmmod rtw88_core

The appropriate lines from modules.dep reformatted for clarity are as follows:

kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko:
kernel/net/mac80211/mac80211.ko
kernel/lib/crypto/libarc4.ko
kernel/net/wireless/cfg80211.ko
kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821c.ko:
kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko
kernel/net/mac80211/mac80211.ko
kernel/lib/crypto/libarc4.ko
kernel/net/wireless/cfg80211.ko
kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821ce.ko:
kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821c.ko
kernel/drivers/net/wireless/realtek/rtw88/rtw88_pci.ko
kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko
kernel/net/mac80211/mac80211.ko
kernel/lib/crypto/libarc4.ko
kernel/net/wireless/cfg80211.ko
kernel/drivers/net/wireless/realtek/rtw88/rtw88_pci.ko:
kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko
kernel/net/mac80211/mac80211.ko
kernel/lib/crypto/libarc4.ko
kernel/net/wireless/cfg80211.ko

What is the explanation for the failure to auto-unload rtw88_core?

Thanks,

Larry


2022-09-27 17:38:39

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: Problem with modprobe

On Tue, Sep 27, 2022 at 12:11:24PM -0500, Larry Finger wrote:
> Hi,
>
> The driver for the Realtek RTL8821CE network card show some asymmetrical
> behavior between loading and unloading.
>
> Starting from scratch, a load command provides the expected results:
>
> finger@localhost:~/rtw88>sudo modprobe -v rtw88_8821ce
> insmod /lib/modules/6.1.0-rc3-wireless-next-00623-g2bc09edc7fa2-dirty/kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko
>
> insmod /lib/modules/6.1.0-rc3-wireless-next-00623-g2bc09edc7fa2-dirty/kernel/drivers/net/wireless/realtek/rtw88/rtw88_pci.ko
>
> insmod /lib/modules/6.1.0-rc3-wireless-next-00623-g2bc09edc7fa2-dirty/kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821c.ko
>
> insmod /lib/modules/6.1.0-rc3-wireless-next-00623-g2bc09edc7fa2-dirty/kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821ce.ko
>
> Unloading produces a different result:
>
> finger@localhost:~/rtw88>sudo modprobe -rv rtw88_8821ce
> rmmod rtw88_8821ce
> rmmod rtw88_pci
> rmmod rtw88_8821c
>
> Note that rtw88_core is still loaded and needs to be unloaded separately:
>
> finger@localhost:~/rtw88>sudo modprobe -rv rtw88_core
> rmmod rtw88_core
>
> The appropriate lines from modules.dep reformatted for clarity are as follows:
>
> kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko:
> kernel/net/mac80211/mac80211.ko
> kernel/lib/crypto/libarc4.ko
> kernel/net/wireless/cfg80211.ko
> kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821c.ko:
> kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko
> kernel/net/mac80211/mac80211.ko
> kernel/lib/crypto/libarc4.ko
> kernel/net/wireless/cfg80211.ko
> kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821ce.ko:
> kernel/drivers/net/wireless/realtek/rtw88/rtw88_8821c.ko
> kernel/drivers/net/wireless/realtek/rtw88/rtw88_pci.ko
> kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko
> kernel/net/mac80211/mac80211.ko
> kernel/lib/crypto/libarc4.ko
> kernel/net/wireless/cfg80211.ko
> kernel/drivers/net/wireless/realtek/rtw88/rtw88_pci.ko:
> kernel/drivers/net/wireless/realtek/rtw88/rtw88_core.ko
> kernel/net/mac80211/mac80211.ko
> kernel/lib/crypto/libarc4.ko
> kernel/net/wireless/cfg80211.ko
>
> What is the explanation for the failure to auto-unload rtw88_core?

I don't think we ever auto-unload dependant modules as we don't know if
they are still in use or not (hint, module references is not a
representation if the module is in use or not.)

So this is working as intended, right? And how it's always worked?

thanks,

greg k-h

2022-09-27 18:33:28

by Larry Finger

[permalink] [raw]
Subject: Re: Problem with modprobe

Greg,

On 9/27/22 12:35, Greg KH wrote:
> I don't think we ever auto-unload dependant modules as we don't know if
> they are still in use or not (hint, module references is not a
> representation if the module is in use or not.)
>
> So this is working as intended, right? And how it's always worked?

Thanks for the explanation.I will need to document this behavior and explain to
the users that it takes two steps to unload. At least the load works correctly.

Thanks again,

Larry