summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/drivers/net/usb/usbnet.c
diff options
context:
space:
mode:
Diffstat (limited to 'ANDROID_3.4.5/drivers/net/usb/usbnet.c')
-rw-r--r--ANDROID_3.4.5/drivers/net/usb/usbnet.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/ANDROID_3.4.5/drivers/net/usb/usbnet.c b/ANDROID_3.4.5/drivers/net/usb/usbnet.c
index b38db48b..20838aba 100644
--- a/ANDROID_3.4.5/drivers/net/usb/usbnet.c
+++ b/ANDROID_3.4.5/drivers/net/usb/usbnet.c
@@ -93,6 +93,53 @@ MODULE_PARM_DESC (msg_level, "Override default message level");
/*-------------------------------------------------------------------------*/
+
+//add by kevin
+extern int wmt_getsyspara(const char *varname, char *varval, int * varlen);
+static unsigned char char2hex(char c){
+ unsigned char ret=0xff;
+ if(c>='0'&&c<='9')
+ ret= c-'0';
+ if(c>='a'&&c<='f')
+ ret= c-'a'+10;
+ if(c>='A'&&c<='F')
+ ret= c-'A'+10;
+ return ret;
+}
+
+void check_set_mac(unsigned char *buf){
+
+ char ethbuf[50];
+ int len = sizeof(ethbuf);
+ memset((void*)ethbuf, 0, len);
+
+ //wondermedia set bt mac addr
+ if(!wmt_getsyspara("ethaddr", ethbuf, &len)){
+
+ printk("wmt eth addr %s %d\n",ethbuf,strlen(ethbuf));
+ //ethaddr=00:40:63:70:13:37
+ if(strlen(ethbuf)==17){
+ buf[0] = (char2hex(ethbuf[0])<<4)|char2hex(ethbuf[1]);
+ buf[1] = (char2hex(ethbuf[3])<<4)|char2hex(ethbuf[4]);
+ buf[2] = (char2hex(ethbuf[6])<<4)|char2hex(ethbuf[7]);
+ buf[3] = (char2hex(ethbuf[9])<<4)|char2hex(ethbuf[10]);
+ buf[4] = (char2hex(ethbuf[12])<<4)|char2hex(ethbuf[13]);
+ buf[5] = (char2hex(ethbuf[15])<<4)|char2hex(ethbuf[16]);
+
+ }
+ //ethaddr=004063701337
+ if(strlen(ethbuf)==12){
+ buf[0] = (char2hex(ethbuf[0])<<4)|char2hex(ethbuf[1]);
+ buf[1] = (char2hex(ethbuf[2])<<4)|char2hex(ethbuf[3]);
+ buf[2] = (char2hex(ethbuf[4])<<4)|char2hex(ethbuf[5]);
+ buf[3] = (char2hex(ethbuf[6])<<4)|char2hex(ethbuf[7]);
+ buf[4] = (char2hex(ethbuf[8])<<4)|char2hex(ethbuf[9]);
+ buf[5] = (char2hex(ethbuf[10])<<4)|char2hex(ethbuf[11]);
+ }
+ }
+}
+
+
/* handles CDC Ethernet and many other network "bulk data" interfaces */
int usbnet_get_endpoints(struct usbnet *dev, struct usb_interface *intf)
{
@@ -1366,6 +1413,26 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
status = -ENOMEM;
+#if 1
+ //huawei mu609,skip it's cdc ether device
+ if(xdev->descriptor.idVendor==0x12d1&&xdev->descriptor.idProduct==0x1573){
+ printk("skip %x:%x cdc ether\n",xdev->descriptor.idVendor,xdev->descriptor.idProduct);
+ goto out;
+ }
+#else
+{
+ char buf[256];
+ int varlen = 256;
+ int disable = 0;
+ if( wmt_getsyspara("wmt.cdc.disable",buf,&varlen) == 0)
+ {
+ sscanf(buf,"%d",&disable);
+ if(disable>0)
+ goto out;
+
+ }
+}
+#endif
// set up our own records
net = alloc_etherdev(sizeof(*dev));
if (!net)