diff options
Diffstat (limited to 'drivers/usb/gadget/f_rndis.c')
| -rw-r--r-- | drivers/usb/gadget/f_rndis.c | 30 | 
1 files changed, 11 insertions, 19 deletions
diff --git a/drivers/usb/gadget/f_rndis.c b/drivers/usb/gadget/f_rndis.c index d4f823f463e..b1681e45aca 100644 --- a/drivers/usb/gadget/f_rndis.c +++ b/drivers/usb/gadget/f_rndis.c @@ -71,6 +71,8 @@ struct f_rndis {  	struct gether			port;  	u8				ctrl_id, data_id;  	u8				ethaddr[ETH_ALEN]; +	u32				vendorID; +	const char			*manufacturer;  	int				config;  	struct usb_ep			*notify; @@ -768,12 +770,10 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)  	rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, 0);  	rndis_set_host_mac(rndis->config, rndis->ethaddr); -#if 0 -// FIXME -	if (rndis_set_param_vendor(rndis->config, vendorID, -				manufacturer)) -		goto fail0; -#endif +	if (rndis->manufacturer && rndis->vendorID && +			rndis_set_param_vendor(rndis->config, rndis->vendorID, +					       rndis->manufacturer)) +		goto fail;  	/* NOTE:  all that is done without knowing or caring about  	 * the network link ... which is unavailable to this code @@ -820,6 +820,7 @@ rndis_unbind(struct usb_configuration *c, struct usb_function *f)  	rndis_deregister(rndis->config);  	rndis_exit(); +	rndis_string_defs[0].id = 0;  	if (gadget_is_superspeed(c->cdev->gadget))  		usb_free_descriptors(f->ss_descriptors); @@ -840,20 +841,9 @@ static inline bool can_support_rndis(struct usb_configuration *c)  	return true;  } -/** - * rndis_bind_config - add RNDIS network link to a configuration - * @c: the configuration to support the network link - * @ethaddr: a buffer in which the ethernet address of the host side - *	side of the link was recorded - * Context: single threaded during gadget setup - * - * Returns zero on success, else negative errno. - * - * Caller must have called @gether_setup().  Caller is also responsible - * for calling @gether_cleanup() before module unload. - */  int -rndis_bind_config(struct usb_configuration *c, u8 ethaddr[ETH_ALEN]) +rndis_bind_config_vendor(struct usb_configuration *c, u8 ethaddr[ETH_ALEN], +				u32 vendorID, const char *manufacturer)  {  	struct f_rndis	*rndis;  	int		status; @@ -898,6 +888,8 @@ rndis_bind_config(struct usb_configuration *c, u8 ethaddr[ETH_ALEN])  		goto fail;  	memcpy(rndis->ethaddr, ethaddr, ETH_ALEN); +	rndis->vendorID = vendorID; +	rndis->manufacturer = manufacturer;  	/* RNDIS activates when the host changes this filter */  	rndis->port.cdc_filter = 0;  |