int blan_fd_function_enable (struct usbd_function_instance *function_instance) { struct usbd_class_network_channel_descriptor *channel = &blan_class_5 ; struct usb_network_private *npd = NULL; u32 recv_urb_flags; #if 0 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,17) struct usbd_class_ethernet_networking_descriptor *ethernet = &blan_class_4; char address_str[14]; snprintf(address_str, 13, "%02x%02x%02x%02x%02x%02x", local_dev_addr[0], local_dev_addr[1], local_dev_addr[2], local_dev_addr[3], local_dev_addr[4], local_dev_addr[5]); #else char address_str[20]; sprintf(address_str, "%02x%02x%02x%02x%02x%02x", local_dev_addr[0], local_dev_addr[1], local_dev_addr[2], local_dev_addr[3], local_dev_addr[4], local_dev_addr[5]); #endif ethernet->iMACAddress = usbd_alloc_string(address_str); #endif struct usbd_class_ethernet_networking_descriptor *ethernet = &blan_class_4; char address_str[20]; sprintf(address_str, "%02x%02x%02x%02x%02x%02x", 0, 0, 0, 0, 0, 0); ethernet->iMACAddress = usbd_alloc_string(function_instance, address_str); //channel->iName = usbd_alloc_string(function_instance, system_utsname.nodename); //TRACE_MSG3(NTT, "name: %s strings index imac: %d name: %d", // system_utsname.nodename, ethernet->iMACAddress, channel->iName); #if defined(CONFIG_OTG_NETWORK_BLAN_CRC) || defined(CONFIG_OTG_NETWORK_SAFE_CRC) recv_urb_flags = 0; #else /* defined(CONFIG_OTG_NETWORK_BLAN_CRC) || defined(CONFIG_OTG_NETWORK_SAFE_CRC) */ recv_urb_flags = USBD_URB_FAST_RETURN | USBD_URB_FAST_FINISH; #endif /* defined(CONFIG_OTG_NETWORK_BLAN_CRC) || defined(CONFIG_OTG_NETWORK_SAFE_CRC) */ THROW_IF(net_fd_function_enable(function_instance, network_blan, net_fd_recv_urb_mdlm, net_fd_start_xmit_mdlm, blan_start_recv, recv_urb_flags ), error); THROW_UNLESS((npd = function_instance->privdata), error); #if !defined(CONFIG_OTG_NETWORK_BLAN_CRC) && !defined(CONFIG_OTG_NETWORK_SAFE_CRC) THROW_UNLESS((npd->blan_recv_task = otg_task_init2("blanrcv", blan_start_recv_task, function_instance, NTT)), error); //npd->blan_recv_task->taskdebug = TRUE; otg_task_start(npd->blan_recv_task); #endif /* !defined(CONFIG_OTG_NETWORK_BLAN_CRC) && !defined(CONFIG_OTG_NETWORK_SAFE_CRC) */ return 0; CATCH(error) { return -EINVAL; } }
int ecm_fd_function_enable (struct usbd_function_instance *function_instance) { struct usb_network_private *npd; struct usbd_class_ethernet_networking_descriptor *ethernet = &ecm_class_2; char address_str[14]; /* do normal network function enable first - this creates network private data */ RETURN_EINVAL_IF(net_fd_function_enable(function_instance, network_ecm, net_fd_recv_urb_ecm, net_fd_start_xmit_ecm, net_fd_start_recv_ecm, 0 )); npd = function_instance->privdata; /* if successful then lets allocate iMACAddress string */ TRACE_MSG6(NTT, "local: %02x:%02x:%02x:%02x:%02x:%02x", npd->local_dev_addr[0], npd->local_dev_addr[1], npd->local_dev_addr[2], npd->local_dev_addr[3], npd->local_dev_addr[4], npd->local_dev_addr[5]); TRACE_MSG6(NTT, "remote: %02x:%02x:%02x:%02x:%02x:%02x", npd->remote_dev_addr[0], npd->remote_dev_addr[1], npd->remote_dev_addr[2], npd->remote_dev_addr[3], npd->remote_dev_addr[4], npd->remote_dev_addr[5]); snprintf(address_str, 13, "%02x%02x%02x%02x%02x%02x", npd->remote_dev_addr[0], npd->remote_dev_addr[1], npd->remote_dev_addr[2], npd->remote_dev_addr[3], npd->remote_dev_addr[4], npd->remote_dev_addr[5]); ethernet->iMACAddress = usbd_alloc_string(function_instance, address_str); return 0; }
/*! safe_mod_init * @param function The function instance */ int safe_mod_init (void) { struct usbd_class_ethernet_networking_descriptor *ethernet; struct usbd_class_network_channel_descriptor *channel; int len = 0; char buf[255]; buf[0] = 0; #if 0 // Update the iMACAddress field in the ethernet descriptor { char address_str[14]; snprintf(address_str, 13, "%02x%02x%02x%02x%02x%02x", remote_dev_addr[0], remote_dev_addr[1], remote_dev_addr[2], remote_dev_addr[3], remote_dev_addr[4], remote_dev_addr[5]); if ((ethernet = &safe_class_4)) { if (ethernet->iMACAddress) { usbd_free_string_descriptor(ethernet->iMACAddress); } ethernet->iMACAddress = usbd_alloc_string(function_instance, address_str); } } #endif #ifdef CONFIG_OTG_NETWORK_SAFE_PADBEFORE safe_class_3.bmDataCapabilities |= BMDATA_PADBEFORE; len += sprintf(buf + len, "PADBEFORE: %02x ", safe_class_3.bmDataCapabilities); #endif #ifdef CONFIG_OTG_NETWORK_SAFE_CRC safe_class_3.bmDataCapabilities |= BMDATA_CRC; len += sprintf(buf + len, "CRC: %02x ", safe_class_3.bmDataCapabilities); #endif #ifndef CONFIG_OTG_NETWORK_SAFE_BRIDGED safe_class_3.bmNetworkCapabilities |= BMNETWORK_NONBRIDGED; len += sprintf(buf + len, "NONBRIDGE: %02x ", safe_class_3.bmNetworkCapabilities); #endif if (strlen(buf)) TRACE_MSG1(NTT,"%s", buf); return usbd_register_interface_function (&safe_interface_driver, "net-safe-if", NULL); }