diff options
author | Andrew Lunn <andrew@lunn.ch> | 2015-01-19 16:00:15 -0600 |
---|---|---|
committer | Andrew Lunn <andrew@lunn.ch> | 2015-01-19 16:00:15 -0600 |
commit | fe6e91e3387e4f90ed4605a1a538248a31686c16 (patch) | |
tree | d4e10d0d214ca73500fcbb3dbbd25027320fddda /drivers/net/usb/qmi_wwan.c | |
parent | c6574542149dede8093e326d2c358ba447e30f33 (diff) | |
parent | 38bdf45f4aa5cb6186d50a29e6cbbd9d486a1519 (diff) |
Merge branch 'mvebu/fixes-3' into mvebu/soc
Diffstat (limited to 'drivers/net/usb/qmi_wwan.c')
-rw-r--r-- | drivers/net/usb/qmi_wwan.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index b8a82b86f90..602dc6668c3 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c @@ -56,6 +56,8 @@ struct qmi_wwan_state { /* default ethernet address used by the modem */ static const u8 default_modem_addr[ETH_ALEN] = {0x02, 0x50, 0xf3}; +static const u8 buggy_fw_addr[ETH_ALEN] = {0x00, 0xa0, 0xc6, 0x00, 0x00, 0x00}; + /* Make up an ethernet header if the packet doesn't have one. * * A firmware bug common among several devices cause them to send raw @@ -332,10 +334,12 @@ next_desc: usb_driver_release_interface(driver, info->data); } - /* Never use the same address on both ends of the link, even - * if the buggy firmware told us to. + /* Never use the same address on both ends of the link, even if the + * buggy firmware told us to. Or, if device is assigned the well-known + * buggy firmware MAC address, replace it with a random address, */ - if (ether_addr_equal(dev->net->dev_addr, default_modem_addr)) + if (ether_addr_equal(dev->net->dev_addr, default_modem_addr) || + ether_addr_equal(dev->net->dev_addr, buggy_fw_addr)) eth_hw_addr_random(dev->net); /* make MAC addr easily distinguishable from an IP header */ |