+--- a/drivers/net/usb/rndis_host.c
++++ b/drivers/net/usb/rndis_host.c
+@@ -630,6 +630,16 @@ static const struct driver_info zte_rndi
+ .tx_fixup = rndis_tx_fixup,
+ };
+
++static const struct driver_info asr_rndis_info = {
++ .description = "Asr RNDIS device",
++ .flags = FLAG_WWAN | FLAG_POINTTOPOINT | FLAG_FRAMING_RN | FLAG_NO_SETINT | FLAG_NOARP,
++ .bind = rndis_bind,
++ .unbind = rndis_unbind,
++ .status = rndis_status,
++ .rx_fixup = rndis_rx_fixup,
++ .tx_fixup = rndis_tx_fixup,
++};
++
+ /*-------------------------------------------------------------------------*/
+
+ static const struct usb_device_id products [] = {
+@@ -666,6 +676,36 @@ static const struct usb_device_id produc
+ USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
+ .driver_info = (unsigned long) &rndis_info,
+ }, {
++ /* Quectel EG060V rndis device */
++ USB_DEVICE_AND_INTERFACE_INFO(0x2c7c, 0x6004,
++ USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
++ .driver_info = (unsigned long) &asr_rndis_info,
++}, {
++ /* Quectel EC200A rndis device */
++ USB_DEVICE_AND_INTERFACE_INFO(0x2c7c, 0x6005,
++ USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
++ .driver_info = (unsigned long) &asr_rndis_info,
++}, {
++ /* Quectel EC200T rndis device */
++ USB_DEVICE_AND_INTERFACE_INFO(0x2c7c, 0x6026,
++ USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
++ .driver_info = (unsigned long) &asr_rndis_info,
++}, {
++ /* Simcom A7906E rndis device */
++ USB_DEVICE_AND_INTERFACE_INFO(0x1e0e, 0x9011,
++ USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
++ .driver_info = (unsigned long) &asr_rndis_info,
++}, {
++ /* Meig SLM770A */
++ USB_DEVICE_AND_INTERFACE_INFO(0x2dee, 0x4d57,
++ USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
++ .driver_info = (unsigned long) &asr_rndis_info,
++}, {
++ /* Meig SLM828 */
++ USB_DEVICE_AND_INTERFACE_INFO(0x2dee, 0x4d49,
++ USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
++ .driver_info = (unsigned long) &asr_rndis_info,
++}, {
+ /* Novatel Verizon USB730L */
+ USB_INTERFACE_INFO(USB_CLASS_MISC, 4, 1),
+ .driver_info = (unsigned long) &rndis_info,