kernel-module-atheros: apply load parameters to correct module

In Linux 2.6.35, the kernel module accepting the parameters on load
was 'ath6kl_sdio' while in 3.10 is 'ath6kl_core'.

So we need to apply the load parameters to either module depending on
the kernel version.

This is solved by configuring the modprobe configuration file
'/etc/modprobe.d/atheros.conf' with the parameters to the correct
module instead of passing them in the command line.

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2013-08-08 11:38:37 +02:00
parent 9a7841e346
commit cb25e67665
3 changed files with 12 additions and 16 deletions

View File

@ -28,6 +28,7 @@ SRC_URI += " \
S = "${WORKDIR}/git"
ATH_ONLY_INSTALL_FW = "${@base_version_less_or_equal('PREFERRED_VERSION_linux-dey', '2.6.35.14', '', '1', d)}"
ATH6KL_MOD = "${@base_conditional('ATH_ONLY_INSTALL_FW', '1' , 'ath6kl_core', 'ath6kl_sdio', d)}"
EXTRA_OEMAKE = "DEL_PLATFORM=${MACHINE} KLIB_BUILD=${STAGING_KERNEL_DIR} ATH_ONLY_INSTALL_FW=${ATH_ONLY_INSTALL_FW}"
@ -40,6 +41,7 @@ do_install_append() {
install -m 0755 ${WORKDIR}/atheros ${D}${sysconfdir}/network/if-pre-up.d/
install -d ${D}${sysconfdir}/modprobe.d
install -m 0644 ${WORKDIR}/atheros.conf ${D}${sysconfdir}/modprobe.d/
echo "options ${ATH6KL_MOD} ath6kl_p2p=1 softmac_enable=1" >> ${D}${sysconfdir}/modprobe.d/atheros.conf
}
FILES_${PN} += " \

View File

@ -27,7 +27,7 @@ MAC_FILENAME="softmac"
# Get the wlan MAC address from kernel command line. Use a default
# value if the address has not been set.
#
MAC_ADDR="$(sed -e 's,.\+ethaddr2=\([^[:blank:]]\+\)[[:blank:]].*,\1,g' /proc/cmdline)"
MAC_ADDR="$(sed -ne 's,.\+ethaddr2=\([^[:blank:]]\+\)[[:blank:]].*,\1,g;T;p' /proc/cmdline)"
if [ -z "${MAC_ADDR}" -o "${MAC_ADDR}" = "00:00:00:00:00:00" ]; then
MAC_ADDR="00:04:F3:4C:B1:D3"
fi
@ -53,7 +53,7 @@ if ! cmp -s ${RAM_DRIVE}/${MAC_FILENAME} ${FIRMWARE_DIR}/${MAC_FILENAME}; then
fi
rm -f ${RAM_DRIVE}/${MAC_FILENAME}
BDATA_SOURCE=Digi_6203-6233-World.bin
BDATA_SOURCE="Digi_6203-6233-World.bin"
if [ -e "/sys/kernel/machine/name" ]; then
# Figure out which wireless region we are in. The US has rules for
# what channels can be used and at what power level. We use a different set of
@ -65,7 +65,7 @@ if [ -e "/sys/kernel/machine/name" ]; then
MACHINE="$(cat /sys/kernel/machine/name)"
REGION_CODE="$(cat /sys/kernel/${MACHINE}/mod_cert)"
if [ -z "${REGION_CODE}" -o "${US_CODE}" = "${REGION_CODE}" ]; then
BDATA_SOURCE=Digi_6203-6233-US.bin
BDATA_SOURCE="Digi_6203-6233-US.bin"
fi
else
logger -t atheros "Undefined machine, defaulting to world region."
@ -79,10 +79,8 @@ if [ ! -e "${BDATA_LINK}" ] || ! cmp -s "${BDATA_LINK}" "${FIRMWARE_DIR}/${BDATA
fi
# ath6kl_sdio.ko
ATH6KL_PARAMS="ath6kl_p2p=1 softmac_enable=1"
[ -f "/root/wifi_test_mode" ] && { ATH6KL_PARAMS="${ATH6KL_PARAMS} testmode=1"; test_mode_str=" in test mode"; }
grep -qs ath6kl_sdio /proc/modules || \
modprobe --ignore-install -q ath6kl_sdio ${ATH6KL_PARAMS} || echo "Loading ath6kl_sdio module${test_mode_str}: [FAILED]"
modprobe --ignore-install -q ath6kl_sdio || echo "Loading ath6kl_sdio module: [FAILED]"
# Delay required for the interface 'wlan0' to settle down before trying to configure it.
sleep 0.5

View File

@ -27,7 +27,7 @@ MAC_FILENAME="softmac"
# Get the wlan MAC address from kernel command line. Use a default
# value if the address has not been set.
#
MAC_ADDR="$(sed -e 's,.\+ethaddr2=\([^[:blank:]]\+\)[[:blank:]].*,\1,g' /proc/cmdline)"
MAC_ADDR="$(sed -ne 's,.\+ethaddr2=\([^[:blank:]]\+\)[[:blank:]].*,\1,g;T;p' /proc/cmdline)"
if [ -z "${MAC_ADDR}" -o "${MAC_ADDR}" = "00:00:00:00:00:00" ]; then
MAC_ADDR="00:04:F3:4C:B1:D3"
fi
@ -53,8 +53,8 @@ if ! cmp -s ${RAM_DRIVE}/${MAC_FILENAME} ${FIRMWARE_DIR}/${MAC_FILENAME}; then
fi
rm -f ${RAM_DRIVE}/${MAC_FILENAME}
BDATA_SOURCE="calData_AR6103_Digi_X2e_B_world.bin"
if [ -e "/sys/kernel/machine/name" ]; then
MACHINE="$(cat /sys/kernel/machine/name)"
# Figure out which wireless region we are in. The US has rules for
# what channels can be used and at what power level. We use a different set of
# rules for the other regions in the world that we sell into. The mod_cert field
@ -62,15 +62,13 @@ if [ -e "/sys/kernel/machine/name" ]; then
# appropriate calibration file is loaded.
#
US_CODE="0x0"
MACHINE="$(cat /sys/kernel/machine/name)"
REGION_CODE="$(cat /sys/kernel/${MACHINE}/mod_cert)"
if [ -z "${REGION_CODE}" -o "${US_CODE}" = "${REGION_CODE}" ]; then
BDATA_SOURCE=calData_AR6103_Digi_X2e_B.bin
else
BDATA_SOURCE=calData_AR6103_Digi_X2e_B_world.bin
BDATA_SOURCE="calData_AR6103_Digi_X2e_B.bin"
fi
else
echo "Undefined machine, defaulting to world region."
BDATA_SOURCE=calData_AR6103_Digi_X2e_B_world.bin
logger -t atheros "Undefined machine, defaulting to world region."
fi
# We don't want to rewrite NAND every time we boot so only
@ -81,10 +79,8 @@ if [ ! -e "${BDATA_LINK}" ] || ! cmp -s "${BDATA_LINK}" "${FIRMWARE_DIR}/${BDATA
fi
# ath6kl_sdio.ko
ATH6KL_PARAMS="ath6kl_p2p=1 softmac_enable=1"
[ -f "/root/wifi_test_mode" ] && { ATH6KL_PARAMS="${ATH6KL_PARAMS} testmode=1"; test_mode_str=" in test mode"; }
grep -qs ath6kl_sdio /proc/modules || \
modprobe --ignore-install -q ath6kl_sdio ${ATH6KL_PARAMS} || echo "Loading ath6kl_sdio module${test_mode_str}: [FAILED]"
modprobe --ignore-install -q ath6kl_sdio || echo "Loading ath6kl_sdio module: [FAILED]"
# Delay required for the interface 'wlan0' to settle down before trying to configure it.
sleep 0.5