[Intel-wired-lan] [PATCH v5] igb: Assign random MAC address instead of fail in case of invalid one
Lixue Liang
lianglixuehao at 126.com
Thu Jun 9 08:39:04 UTC 2022
From: Lixue Liang <lianglixue at greatwall.com.cn>
In some cases, when the user uses igb_set_eeprom to modify the MAC address
to be invalid, or an invalid MAC address appears when with uninitialized
samples, the igb driver will fail to load. If there is no network card
device, the user could not conveniently modify it to a valid MAC address,
for example using ethtool to modify.
Through module parameter to set,when the MAC address is invalid, a random
valid MAC address can be used to continue loading and output relevant log
reminders. In this way, users can conveniently correct invalid MAC address.
Signed-off-by: Lixue Liang <lianglixue at greatwall.com.cn>
---
Changelog:
* v5:
- Through the setting of module parameters, it is allowed to complete
the loading of the igb network card driver with an invalid MAC address.
Suggested-by <alexander.duyck at gmail.com>
* v4:
- Change the igb_mian in the title to igb
- Fix dev_err message: replace "already assigned random MAC address"
with "Invalid MAC address. Assigned random MAC address"
Suggested-by Tony <anthony.l.nguyen at intel.com>
* v3:
- Add space after comma in commit message
- Correct spelling of MAC address
Suggested-by Paul <pmenzel at molgen.mpg.de>
* v2:
- Change memcpy to ether_addr_copy
- Change dev_info to dev_err
- Fix the description of the commit message
- Change eth_random_addr to eth_hw_addr_random
Reported-by: kernel test robot <lkp at intel.com>
drivers/net/ethernet/intel/igb/igb_main.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 34b33b21e0dc..8162e8999ccb 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -238,8 +238,11 @@ MODULE_LICENSE("GPL v2");
#define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)
static int debug = -1;
+static unsigned int invalid_mac_address_allow;
module_param(debug, int, 0);
+module_param(invalid_mac_address_allow, uint, 0);
MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
+MODULE_PARM_DESC(invalid_mac_address_allow, "Allow NIC driver to be loaded with invalid MAC address");
struct igb_reg_info {
u32 ofs;
@@ -3359,9 +3362,16 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
eth_hw_addr_set(netdev, hw->mac.addr);
if (!is_valid_ether_addr(netdev->dev_addr)) {
- dev_err(&pdev->dev, "Invalid MAC Address\n");
- err = -EIO;
- goto err_eeprom;
+ if (!invalid_mac_address_allow) {
+ dev_err(&pdev->dev, "Invalid MAC Address\n");
+ err = -EIO;
+ goto err_eeprom;
+ } else {
+ eth_hw_addr_random(netdev);
+ ether_addr_copy(hw->mac.addr, netdev->dev_addr);
+ dev_err(&pdev->dev,
+ "Invalid MAC address. Assigned random MAC address\n");
+ }
}
igb_set_default_mac_filter(adapter);
--
2.27.0
More information about the Intel-wired-lan
mailing list