diff options
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c')
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c | 29 | 
1 files changed, 16 insertions, 13 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c index 236cb9fa460..2621dd3d7dc 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c @@ -800,13 +800,13 @@ int brcmf_c_preinit_dcmds(struct brcmf_pub *drvr)  	char iovbuf[BRCMF_EVENTING_MASK_LEN + 12];	/*  Room for  				 "event_msgs" + '\0' + bitvec  */  	char buf[128], *ptr; -	u32 dongle_align = drvr->bus_if->align; -	u32 glom = 0;  	u32 roaming = 1;  	uint bcn_timeout = 3;  	int scan_assoc_time = 40;  	int scan_unassoc_time = 40;  	int i; +	struct brcmf_bus_dcmd *cmdlst; +	struct list_head *cur, *q;  	mutex_lock(&drvr->proto_block); @@ -827,17 +827,6 @@ int brcmf_c_preinit_dcmds(struct brcmf_pub *drvr)  	/* Print fw version info */  	brcmf_dbg(ERROR, "Firmware version = %s\n", buf); -	/* Match Host and Dongle rx alignment */ -	brcmf_c_mkiovar("bus:txglomalign", (char *)&dongle_align, 4, iovbuf, -		    sizeof(iovbuf)); -	brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, -				  sizeof(iovbuf)); - -	/* disable glom option per default */ -	brcmf_c_mkiovar("bus:txglom", (char *)&glom, 4, iovbuf, sizeof(iovbuf)); -	brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, -				  sizeof(iovbuf)); -  	/* Setup timeout if Beacons are lost and roam is off to report  		 link down */  	brcmf_c_mkiovar("bcn_timeout", (char *)&bcn_timeout, 4, iovbuf, @@ -874,6 +863,20 @@ int brcmf_c_preinit_dcmds(struct brcmf_pub *drvr)  						 0, true);  	} +	/* set bus specific command if there is any */ +	list_for_each_safe(cur, q, &drvr->bus_if->dcmd_list) { +		cmdlst = list_entry(cur, struct brcmf_bus_dcmd, list); +		if (cmdlst->name && cmdlst->param && cmdlst->param_len) { +			brcmf_c_mkiovar(cmdlst->name, cmdlst->param, +					cmdlst->param_len, iovbuf, +					sizeof(iovbuf)); +			brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, +						 iovbuf, sizeof(iovbuf)); +		} +		list_del(cur); +		kfree(cmdlst); +	} +  	mutex_unlock(&drvr->proto_block);  	return 0;  |