drivers/net/usb/usbnet.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
-index 0744bf2ef2d6..0b0ba7ef14e4 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
-@@ -324,7 +324,10 @@ void usbnet_skb_return (struct usbnet *dev, struct sk_buff *skb)
+@@ -324,7 +324,10 @@ void usbnet_skb_return (struct usbnet *d
return;
}
dev->net->stats.rx_packets++;
dev->net->stats.rx_bytes += skb->len;
---
-2.7.4
-
drivers/net/usb/qmi_wwan.c | 98 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 97 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
-index e3727b66d850..98add3bf8821 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -14,6 +14,7 @@
/* default ethernet address used by the modem */
static const u8 default_modem_addr[ETH_ALEN] = {0x02, 0x50, 0xf3};
-@@ -80,6 +163,8 @@ static const u8 buggy_fw_addr[ETH_ALEN] = {0x00, 0xa0, 0xc6, 0x00, 0x00, 0x00};
+@@ -80,6 +163,8 @@ static const u8 buggy_fw_addr[ETH_ALEN]
*/
static int qmi_wwan_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
{
__be16 proto;
/* This check is no longer done by usbnet */
-@@ -94,15 +179,25 @@ static int qmi_wwan_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
+@@ -94,15 +179,25 @@ static int qmi_wwan_rx_fixup(struct usbn
proto = htons(ETH_P_IPV6);
break;
case 0x00:
if (skb_headroom(skb) < ETH_HLEN)
return 0;
skb_push(skb, ETH_HLEN);
-@@ -326,6 +421,7 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
+@@ -294,6 +389,7 @@ static int qmi_wwan_bind(struct usbnet *
dev->net->dev_addr[0] &= 0xbf; /* clear "IP" bit */
}
dev->net->netdev_ops = &qmi_wwan_netdev_ops;
err:
return status;
}
---
-2.7.4
-
drivers/net/usb/qmi_wwan.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
-diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
-index 98add3bf8821..babc84a3946c 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -16,6 +16,7 @@
#include <linux/usb.h>
#include <linux/usb/cdc.h>
#include <linux/usb/usbnet.h>
-@@ -92,7 +93,7 @@ static ssize_t raw_ip_store(struct device *d, struct device_attribute *attr, co
+@@ -92,7 +93,7 @@ static ssize_t raw_ip_store(struct devic
struct usbnet *dev = netdev_priv(to_net_dev(d));
struct qmi_wwan_state *info = (void *)&dev->data;
bool enable;
if (strtobool(buf, &enable))
return -EINVAL;
-@@ -101,18 +102,22 @@ static ssize_t raw_ip_store(struct device *d, struct device_attribute *attr, co
+@@ -101,18 +102,22 @@ static ssize_t raw_ip_store(struct devic
if (enable == (info->flags & QMI_WWAN_FLAG_RAWIP))
return len;
}
if (enable)
-@@ -121,7 +126,10 @@ static ssize_t raw_ip_store(struct device *d, struct device_attribute *attr, co
+@@ -121,7 +126,10 @@ static ssize_t raw_ip_store(struct devic
info->flags &= ~QMI_WWAN_FLAG_RAWIP;
qmi_wwan_netdev_setup(dev->net);
call_netdevice_notifiers(NETDEV_POST_TYPE_CHANGE, dev->net);
}
static DEVICE_ATTR_RW(raw_ip);
---
-2.7.4
-
include/linux/usb/usbnet.h | 1 +
3 files changed, 7 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
-index c750cf7c042b..304ec6555cd8 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
-@@ -261,9 +261,11 @@ static void qmi_wwan_netdev_setup(struct net_device *net)
+@@ -70,9 +70,11 @@ static void qmi_wwan_netdev_setup(struct
net->hard_header_len = 0;
net->addr_len = 0;
net->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
netdev_dbg(net, "mode: Ethernet\n");
}
-diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
-index 80348b6a8646..d56fe32bf48d 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
-@@ -484,7 +484,10 @@ static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
+@@ -482,7 +482,10 @@ static int rx_submit (struct usbnet *dev
return -ENOLINK;
}
if (!skb) {
netif_dbg(dev, rx_err, dev->net, "no rx skb\n");
usbnet_defer_kevent (dev, EVENT_RX_MEMORY);
-diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h
-index a69877734c4e..e2ec3582e549 100644
--- a/include/linux/usb/usbnet.h
+++ b/include/linux/usb/usbnet.h
-@@ -82,6 +82,7 @@ struct usbnet {
+@@ -79,6 +79,7 @@ struct usbnet {
# define EVENT_RX_KILL 10
# define EVENT_LINK_CHANGE 11
# define EVENT_SET_RX_MODE 12
};
static inline struct usb_driver *driver_of(struct usb_interface *intf)
---
-2.7.4
-
drivers/net/usb/qmi_wwan.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
-index a4f229edcceb..8d4a6f7cba61 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
-@@ -499,6 +499,7 @@ static int qmi_wwan_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
+@@ -203,6 +203,7 @@ static int qmi_wwan_rx_fixup(struct usbn
return 1;
}
if (rawip) {
skb->dev = dev->net; /* normally set by eth_type_trans */
skb->protocol = proto;
return 1;
---
-2.7.4
-
drivers/net/usb/qmi_wwan.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
-diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
-index 9a5be8b85186..fc9dd452a3b5 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
-@@ -223,6 +223,20 @@ static int qmi_wwan_register_subdriver(struct usbnet *dev)
+@@ -329,6 +329,20 @@ err:
return rv;
}
static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
{
int status = -1;
-@@ -280,6 +294,24 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
+@@ -386,6 +400,24 @@ static int qmi_wwan_bind(struct usbnet *
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. Or, if device is assigned the well-known
* buggy firmware MAC address, replace it with a random address,
-@@ -307,6 +339,12 @@ static void qmi_wwan_unbind(struct usbnet *dev, struct usb_interface *intf)
+@@ -414,6 +446,12 @@ static void qmi_wwan_unbind(struct usbne
if (info->subdriver && info->subdriver->disconnect)
info->subdriver->disconnect(info->control);
/* allow user to unbind using either control or data */
if (intf == info->control)
other = info->data;
---
-2.7.4
-
drivers/net/usb/qmi_wwan.c | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
-index 9d1fce8a6e84..3ff76c6db4f6 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -59,6 +59,10 @@ enum qmi_wwan_flags {
static void qmi_wwan_netdev_setup(struct net_device *net)
{
struct usbnet *dev = netdev_priv(net);
-@@ -411,9 +415,14 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
+@@ -411,9 +415,14 @@ static int qmi_wwan_bind(struct usbnet *
* clearing out state the clients might need.
*
* MDM9x30 is the first QMI chipset with USB3 support. Abuse
qmi_wwan_manage_power(dev, 1);
qmi_wwan_change_dtr(dev, true);
}
-@@ -526,6 +535,16 @@ static const struct driver_info qmi_wwan_info = {
+@@ -526,6 +535,16 @@ static const struct driver_info qmi_wwan
.rx_fixup = qmi_wwan_rx_fixup,
};
#define HUAWEI_VENDOR_ID 0x12D1
/* map QMI/wwan function by a fixed interface number */
-@@ -533,6 +552,11 @@ static const struct driver_info qmi_wwan_info = {
+@@ -533,6 +552,11 @@ static const struct driver_info qmi_wwan
USB_DEVICE_INTERFACE_NUMBER(vend, prod, num), \
.driver_info = (unsigned long)&qmi_wwan_info
/* Gobi 1000 QMI/wwan interface number is 3 according to qcserial */
#define QMI_GOBI1K_DEVICE(vend, prod) \
QMI_FIXED_INTF(vend, prod, 3)
-@@ -895,6 +919,8 @@ static const struct usb_device_id products[] = {
+@@ -908,6 +932,8 @@ static const struct usb_device_id produc
{QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
{QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */
/* 4. Gobi 1000 devices */
{QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
---
-2.7.4
-