switch (MsgType) { 
switch (MsgType) { 
int rndis_msg_parser (u8 configNr, u8 *buf){	u32 MsgType, MsgLength;	__le32 *tmp;	struct rndis_params		*params;		if (!buf)		return -ENOMEM;		tmp = (__le32 *) buf; 	MsgType   = le32_to_cpup(tmp++);	MsgLength = le32_to_cpup(tmp++);		if (configNr >= RNDIS_MAX_CONFIGS)		return -ENOTSUPP;	params = &rndis_per_dev_params [configNr];		/* For USB: responses may take up to 10 seconds */	switch (MsgType)	{	case REMOTE_NDIS_INITIALIZE_MSG:		DEBUG("%s: REMOTE_NDIS_INITIALIZE_MSG\n", 			__FUNCTION__ );		params->state = RNDIS_INITIALIZED;		return  rndis_init_response (configNr,					     (rndis_init_msg_type *) buf);			case REMOTE_NDIS_HALT_MSG:		DEBUG("%s: REMOTE_NDIS_HALT_MSG\n",			__FUNCTION__ );		params->state = RNDIS_UNINITIALIZED;		if (params->dev) {			netif_carrier_off (params->dev);			netif_stop_queue (params->dev);		}		return 0;			case REMOTE_NDIS_QUERY_MSG:		return rndis_query_response (configNr, 					     (rndis_query_msg_type *) buf);			case REMOTE_NDIS_SET_MSG:		return rndis_set_response (configNr, 					   (rndis_set_msg_type *) buf);			case REMOTE_NDIS_RESET_MSG:		DEBUG("%s: REMOTE_NDIS_RESET_MSG\n", 			__FUNCTION__ );		return rndis_reset_response (configNr,					     (rndis_reset_msg_type *) buf);	case REMOTE_NDIS_KEEPALIVE_MSG:		/* For USB: host does this every 5 seconds */#ifdef	VERBOSE		DEBUG("%s: REMOTE_NDIS_KEEPALIVE_MSG\n", 			__FUNCTION__ );#endif		return rndis_keepalive_response (configNr,						 (rndis_keepalive_msg_type *) 						 buf);			default: 		/* At least Windows XP emits some undefined RNDIS messages.		 * In one case those messages seemed to relate to the host		 * suspending itself.		 */		printk (KERN_WARNING			"%s: unknown RNDIS message 0x%08X len %d\n", 			__FUNCTION__ , MsgType, MsgLength);		{			unsigned i;			for (i = 0; i < MsgLength; i += 16) {				DEBUG ("%03d: "					" %02x %02x %02x %02x"					" %02x %02x %02x %02x"					" %02x %02x %02x %02x"					" %02x %02x %02x %02x"					"\n",					i,					buf[i], buf [i+1],						buf[i+2], buf[i+3],					buf[i+4], buf [i+5],						buf[i+6], buf[i+7],					buf[i+8], buf [i+9],						buf[i+10], buf[i+11],					buf[i+12], buf [i+13],						buf[i+14], buf[i+15]);			}		}		break;	}		return -ENOTSUPP;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/340600ab4cf0cc41efd01a65af97ebb7d35a7f85/rndis.c/buggy/drivers/usb/gadget/rndis.c