diff options
Diffstat (limited to 'drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c')
| -rw-r--r-- | drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c index 241747bd5cb2..e3dd8623be4e 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c @@ -1398,6 +1398,13 @@ void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u16 flowid)  	u8 ifidx;  	int err; +	/* no need to submit if firmware can not be reached */ +	if (drvr->bus_if->state != BRCMF_BUS_UP) { +		brcmf_dbg(MSGBUF, "bus down, flowring will be removed\n"); +		brcmf_msgbuf_remove_flowring(msgbuf, flowid); +		return; +	} +  	commonring = msgbuf->commonrings[BRCMF_H2D_MSGRING_CONTROL_SUBMIT];  	brcmf_commonring_lock(commonring);  	ret_ptr = brcmf_commonring_reserve_for_write(commonring); @@ -1461,7 +1468,6 @@ static int brcmf_msgbuf_stats_read(struct seq_file *seq, void *data)  	seq_printf(seq, "\nh2d_flowrings: depth %u\n",  		   BRCMF_H2D_TXFLOWRING_MAX_ITEM);  	seq_puts(seq, "Active flowrings:\n"); -	hash = msgbuf->flow->hash;  	for (i = 0; i < msgbuf->flow->nrofrings; i++) {  		if (!msgbuf->flow->rings[i])  			continue;  |