Page MenuHomeFreeBSD

D38383.id116504.diff
No OneTemporary

D38383.id116504.diff

diff --git a/share/man/man4/u3g.4 b/share/man/man4/u3g.4
--- a/share/man/man4/u3g.4
+++ b/share/man/man4/u3g.4
@@ -74,7 +74,7 @@
.It
QUECTEL EC25, EM05, EM12-G.
.It
- Huawei B190, E180v, E220 ('<Huawei Mobile>')
+ Huawei B190, E180v, E220, E3372, E3372v153, E5573Cs322, ('<Huawei Mobile>')
.It
Novatel U740, MC950D, X950D, etc.
.It
diff --git a/sys/dev/usb/net/if_cdce.c b/sys/dev/usb/net/if_cdce.c
--- a/sys/dev/usb/net/if_cdce.c
+++ b/sys/dev/usb/net/if_cdce.c
@@ -265,6 +265,9 @@
static const STRUCT_USB_HOST_ID cdce_switch_devs[] = {
{USB_VPI(USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_E3272_INIT, MSC_EJECT_HUAWEI2)},
+ {USB_VPI(USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_E3372v153_INIT, MSC_EJECT_HUAWEI2)},
+ {USB_VPI(USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_E3372_INIT, MSC_EJECT_HUAWEI4)},
+ {USB_VPI(USB_VENDOR_HUAWEI, USB_PRODUCT_HUAWEI_E5573Cs322_ECM, MSC_EJECT_HUAWEI3)},
};
static const STRUCT_USB_HOST_ID cdce_host_devs[] = {
diff --git a/sys/dev/usb/quirk/usb_quirk.h b/sys/dev/usb/quirk/usb_quirk.h
--- a/sys/dev/usb/quirk/usb_quirk.h
+++ b/sys/dev/usb/quirk/usb_quirk.h
@@ -108,6 +108,8 @@
UQ_MSC_EJECT_SAEL_M460, /* ejects after Sael USB commands */
UQ_MSC_EJECT_HUAWEISCSI, /* ejects after Huawei SCSI command */
UQ_MSC_EJECT_HUAWEISCSI2, /* ejects after Huawei SCSI 2 command */
+ UQ_MSC_EJECT_HUAWEISCSI3, /* ejects after Huawei SCSI 3 command */
+ UQ_MSC_EJECT_HUAWEISCSI4, /* ejects after Huawei SCSI 4 command */
UQ_MSC_EJECT_TCT, /* ejects after TCT SCSI command */
UQ_BAD_MIDI, /* device claims MIDI class, but isn't */
diff --git a/sys/dev/usb/quirk/usb_quirk.c b/sys/dev/usb/quirk/usb_quirk.c
--- a/sys/dev/usb/quirk/usb_quirk.c
+++ b/sys/dev/usb/quirk/usb_quirk.c
@@ -698,6 +698,8 @@
[UQ_MSC_EJECT_SAEL_M460] = "UQ_MSC_EJECT_SAEL_M460",
[UQ_MSC_EJECT_HUAWEISCSI] = "UQ_MSC_EJECT_HUAWEISCSI",
[UQ_MSC_EJECT_HUAWEISCSI2] = "UQ_MSC_EJECT_HUAWEISCSI2",
+ [UQ_MSC_EJECT_HUAWEISCSI3] = "UQ_MSC_EJECT_HUAWEISCSI3",
+ [UQ_MSC_EJECT_HUAWEISCSI4] = "UQ_MSC_EJECT_HUAWEISCSI4",
[UQ_MSC_EJECT_TCT] = "UQ_MSC_EJECT_TCT",
[UQ_BAD_MIDI] = "UQ_BAD_MIDI",
[UQ_AU_VENDOR_CLASS] = "UQ_AU_VENDOR_CLASS",
diff --git a/sys/dev/usb/serial/u3g.c b/sys/dev/usb/serial/u3g.c
--- a/sys/dev/usb/serial/u3g.c
+++ b/sys/dev/usb/serial/u3g.c
@@ -89,7 +89,9 @@
#define U3GINIT_SAEL_M460 8 /* Requires vendor init */
#define U3GINIT_HUAWEISCSI 9 /* Requires Huawei SCSI init command */
#define U3GINIT_HUAWEISCSI2 10 /* Requires Huawei SCSI init command (2) */
-#define U3GINIT_TCT 11 /* Requires TCT Mobile init command */
+#define U3GINIT_HUAWEISCSI3 11 /* Requires Huawei SCSI init command (3) */
+#define U3GINIT_HUAWEISCSI4 12 /* Requires Huawei SCSI init command (4) */
+#define U3GINIT_TCT 13 /* Requires TCT Mobile init command */
enum {
U3G_BULK_WR,
@@ -318,8 +320,6 @@
U3G_DEV(HUAWEI, E143F, U3GINIT_HUAWEI),
U3G_DEV(HUAWEI, E173, 0),
U3G_DEV(HUAWEI, E173_INIT, U3GINIT_HUAWEISCSI),
- U3G_DEV(HUAWEI, E3131, 0),
- U3G_DEV(HUAWEI, E3131_INIT, U3GINIT_HUAWEISCSI2),
U3G_DEV(HUAWEI, E180V, U3GINIT_HUAWEI),
U3G_DEV(HUAWEI, E220, U3GINIT_HUAWEI),
U3G_DEV(HUAWEI, E220BIS, U3GINIT_HUAWEI),
@@ -342,6 +342,12 @@
U3G_DEV(HUAWEI, ETS2055, U3GINIT_HUAWEI),
U3G_DEV(HUAWEI, E3272_INIT, U3GINIT_HUAWEISCSI2),
U3G_DEV(HUAWEI, E3272, 0),
+ U3G_DEV(HUAWEI, E3372_INIT, U3GINIT_HUAWEISCSI3),
+ U3G_DEV(HUAWEI, E3372v153_INIT, U3GINIT_HUAWEISCSI2),
+ U3G_DEV(HUAWEI, E3372v153_NCM, 0),
+ U3G_DEV(HUAWEI, E5573Cs322_NCM, 0),
+ U3G_DEV(HUAWEI, E5573Cs322_ECM, 0),
+ U3G_DEV(HUAWEI, E5573Cs322_ACM, 0),
U3G_DEV(KYOCERA2, CDMA_MSM_K, 0),
U3G_DEV(KYOCERA2, KPC680, 0),
U3G_DEV(LONGCHEER, WM66, U3GINIT_HUAWEI),
@@ -815,6 +821,10 @@
method = U3GINIT_HUAWEISCSI;
else if (usb_test_quirk(uaa, UQ_MSC_EJECT_HUAWEISCSI2))
method = U3GINIT_HUAWEISCSI2;
+ else if (usb_test_quirk(uaa, UQ_MSC_EJECT_HUAWEISCSI3))
+ method = U3GINIT_HUAWEISCSI3;
+ else if (usb_test_quirk(uaa, UQ_MSC_EJECT_HUAWEISCSI4))
+ method = U3GINIT_HUAWEISCSI4;
else if (usb_test_quirk(uaa, UQ_MSC_EJECT_TCT))
method = U3GINIT_TCT;
else if (usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa) == 0)
@@ -837,6 +847,12 @@
break;
case U3GINIT_HUAWEISCSI2:
error = usb_msc_eject(udev, 0, MSC_EJECT_HUAWEI2);
+ break;
+ case U3GINIT_HUAWEISCSI3:
+ error = usb_msc_eject(udev, 0, MSC_EJECT_HUAWEI3);
+ break;
+ case U3GINIT_HUAWEISCSI4:
+ error = usb_msc_eject(udev, 0, MSC_EJECT_HUAWEI4);
break;
case U3GINIT_SCSIEJECT:
error = usb_msc_eject(udev, 0, MSC_EJECT_STOPUNIT);
diff --git a/sys/dev/usb/usb_msctest.h b/sys/dev/usb/usb_msctest.h
--- a/sys/dev/usb/usb_msctest.h
+++ b/sys/dev/usb/usb_msctest.h
@@ -36,6 +36,8 @@
MSC_EJECT_CMOTECH,
MSC_EJECT_HUAWEI,
MSC_EJECT_HUAWEI2,
+ MSC_EJECT_HUAWEI3,
+ MSC_EJECT_HUAWEI4,
MSC_EJECT_TCT,
};
diff --git a/sys/dev/usb/usb_msctest.c b/sys/dev/usb/usb_msctest.c
--- a/sys/dev/usb/usb_msctest.c
+++ b/sys/dev/usb/usb_msctest.c
@@ -107,6 +107,12 @@
static uint8_t scsi_huawei_eject2[] = { 0x11, 0x06, 0x20, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 };
+static uint8_t scsi_huawei_eject3[] = { 0x11, 0x06, 0x20, 0x00, 0x00, 0x01,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00 };
+static uint8_t scsi_huawei_eject4[] = { 0x11, 0x06, 0x30, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00 };
static uint8_t scsi_tct_eject[] = { 0x06, 0xf5, 0x04, 0x02, 0x52, 0x70 };
static uint8_t scsi_sync_cache[] = { 0x35, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 };
@@ -1003,6 +1009,16 @@
case MSC_EJECT_HUAWEI2:
err = bbb_command_start(sc, DIR_IN, 0, NULL, 0,
&scsi_huawei_eject2, sizeof(scsi_huawei_eject2),
+ USB_MS_HZ);
+ break;
+ case MSC_EJECT_HUAWEI3:
+ err = bbb_command_start(sc, DIR_IN, 0, NULL, 0,
+ &scsi_huawei_eject3, sizeof(scsi_huawei_eject3),
+ USB_MS_HZ);
+ break;
+ case MSC_EJECT_HUAWEI4:
+ err = bbb_command_start(sc, DIR_IN, 0, NULL, 0,
+ &scsi_huawei_eject4, sizeof(scsi_huawei_eject4),
USB_MS_HZ);
break;
case MSC_EJECT_TCT:
diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs
--- a/sys/dev/usb/usbdevs
+++ b/sys/dev/usb/usbdevs
@@ -2552,9 +2552,7 @@
product HUAWEI K3771 0x14ca K3771
product HUAWEI K3772 0x14cf K3772
product HUAWEI K3770_INIT 0x14d1 K3770 Initial
-product HUAWEI E3131_INIT 0x14fe 3G modem initial
product HUAWEI E392 0x1505 LTE modem
-product HUAWEI E3131 0x1506 3G modem
product HUAWEI K3765_INIT 0x1520 K3765 Initial
product HUAWEI K4505_INIT 0x1521 K4505 Initial
product HUAWEI K3772_INIT 0x1526 K3772 Initial
@@ -2568,6 +2566,12 @@
product HUAWEI E173_INIT 0x1c0b 3G modem initial
product HUAWEI E3272 0x1c1e LTE modem
product HUAWEI E3372_INIT 0x1f01 LTE modem initial
+product HUAWEI E3372_NCM 0x1506 LTE modem in NCM mode
+product HUAWEI E3372v153_INIT 0x14fe LTE modem initial
+product HUAWEI E3372v153_NCM 0x155f LTE modem in NCM mode
+product HUAWEI E5573Cs322_NCM 0x155e LTE AP modem NCM mode
+product HUAWEI E5573Cs322_ECM 0x14db LTE AP modem ECM mode
+product HUAWEI E5573Cs322_ACM 0x1442 LTE AP modem ACM mode
/* HUAWEI 3com products */
product HUAWEI3COM WUB320G 0x0009 Aolynk WUB320g

File Metadata

Mime Type
text/plain
Expires
Wed, Feb 25, 2:12 AM (7 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28981956
Default Alt Text
D38383.id116504.diff (7 KB)

Event Timeline