mac80211: rt2x00: improve eeprom_file property handling

Call the rt2x00lib_get_eeprom_file_name only once and from the function
where the EEPROM filename is required.

Error only out if an EEPROM file is mandatory. Use the
REQUIRE_EEPROM_FILE bit to determine if it is mandatory.

Do not set the REQUIRE_EEPROM_FILE bit while requesting an EEPROM file.
It should be (and is) set before requesting an EEPROM file.

Do not redirect users to upstream while using a function of a custom
patch.

Signed-off-by: Mathias Kresin <dev@kresin.me>
lede-17.01
Mathias Kresin 2016-11-04 07:43:38 +01:00 committed by John Crispin
parent b5638bb64e
commit 2516c0572e
2 changed files with 11 additions and 17 deletions

View File

@ -152,7 +152,7 @@
--- /dev/null --- /dev/null
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
@@ -0,0 +1,111 @@ @@ -0,0 +1,105 @@
+/* +/*
+ Copyright (C) 2004 - 2009 Ivo van Doorn <IvDoorn@gmail.com> + Copyright (C) 2004 - 2009 Ivo van Doorn <IvDoorn@gmail.com>
+ Copyright (C) 2004 - 2009 Gertjan van Wingerde <gwingerde@gmail.com> + Copyright (C) 2004 - 2009 Gertjan van Wingerde <gwingerde@gmail.com>
@ -203,13 +203,14 @@
+ int retval; + int retval;
+ +
+ ee_name = rt2x00lib_get_eeprom_file_name(rt2x00dev); + ee_name = rt2x00lib_get_eeprom_file_name(rt2x00dev);
+ if (!ee_name) { + if (!ee_name && test_bit(REQUIRE_EEPROM_FILE, &rt2x00dev->cap_flags)) {
+ rt2x00_err(rt2x00dev, + rt2x00_err(rt2x00dev, "Required EEPROM name is missing.");
+ "Invalid EEPROM filename.\n"
+ "Please file bug report to %s.\n", DRV_PROJECT);
+ return -EINVAL; + return -EINVAL;
+ } + }
+ +
+ if (!ee_name)
+ return 0;
+
+ rt2x00_info(rt2x00dev, "Loading EEPROM data from '%s'.\n", ee_name); + rt2x00_info(rt2x00dev, "Loading EEPROM data from '%s'.\n", ee_name);
+ +
+ retval = request_firmware(&ee, ee_name, rt2x00dev->dev); + retval = request_firmware(&ee, ee_name, rt2x00dev->dev);
@ -245,16 +246,9 @@
+{ +{
+ int retval; + int retval;
+ +
+ if (!rt2x00lib_get_eeprom_file_name(rt2x00dev)) + retval = rt2x00lib_request_eeprom_file(rt2x00dev);
+ return 0; + if (retval)
+ + return retval;
+ set_bit(REQUIRE_EEPROM_FILE, &rt2x00dev->cap_flags);
+
+ if (!rt2x00dev->eeprom_file) {
+ retval = rt2x00lib_request_eeprom_file(rt2x00dev);
+ if (retval)
+ return retval;
+ }
+ +
+ return 0; + return 0;
+} +}

View File

@ -97,5 +97,5 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+ return 0; + return 0;
+ +
ee_name = rt2x00lib_get_eeprom_file_name(rt2x00dev); ee_name = rt2x00lib_get_eeprom_file_name(rt2x00dev);
if (!ee_name) { if (!ee_name && test_bit(REQUIRE_EEPROM_FILE, &rt2x00dev->cap_flags)) {
rt2x00_err(rt2x00dev, rt2x00_err(rt2x00dev, "Required EEPROM name is missing.");