|
@@ -53,6 +53,9 @@ struct qmi_wwan_state {
|
|
|
struct usb_interface *data;
|
|
|
};
|
|
|
|
|
|
+/* default ethernet address used by the modem */
|
|
|
+static const u8 default_modem_addr[ETH_ALEN] = {0x02, 0x50, 0xf3};
|
|
|
+
|
|
|
/* Make up an ethernet header if the packet doesn't have one.
|
|
|
*
|
|
|
* A firmware bug common among several devices cause them to send raw
|
|
@@ -317,6 +320,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.
|
|
|
+ */
|
|
|
+ if (!compare_ether_addr(dev->net->dev_addr, default_modem_addr))
|
|
|
+ eth_hw_addr_random(dev->net);
|
|
|
+
|
|
|
/* make MAC addr easily distinguishable from an IP header */
|
|
|
if (possibly_iphdr(dev->net->dev_addr)) {
|
|
|
dev->net->dev_addr[0] |= 0x02; /* set local assignment bit */
|