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>
This commit is contained in:
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
+++ 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 Gertjan van Wingerde <gwingerde@gmail.com>
@ -203,13 +203,14 @@
+ int retval;
+
+ ee_name = rt2x00lib_get_eeprom_file_name(rt2x00dev);
+ if (!ee_name) {
+ rt2x00_err(rt2x00dev,
+ "Invalid EEPROM filename.\n"
+ "Please file bug report to %s.\n", DRV_PROJECT);
+ if (!ee_name && test_bit(REQUIRE_EEPROM_FILE, &rt2x00dev->cap_flags)) {
+ rt2x00_err(rt2x00dev, "Required EEPROM name is missing.");
+ return -EINVAL;
+ }
+
+ if (!ee_name)
+ return 0;
+
+ rt2x00_info(rt2x00dev, "Loading EEPROM data from '%s'.\n", ee_name);
+
+ retval = request_firmware(&ee, ee_name, rt2x00dev->dev);
@ -245,16 +246,9 @@
+{
+ int retval;
+
+ if (!rt2x00lib_get_eeprom_file_name(rt2x00dev))
+ return 0;
+
+ set_bit(REQUIRE_EEPROM_FILE, &rt2x00dev->cap_flags);
+
+ if (!rt2x00dev->eeprom_file) {
+ retval = rt2x00lib_request_eeprom_file(rt2x00dev);
+ if (retval)
+ return retval;
+ }
+ retval = rt2x00lib_request_eeprom_file(rt2x00dev);
+ if (retval)
+ return retval;
+
+ return 0;
+}

View File

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