aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c')
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index 3ba9e1049f3b..05c8840392e5 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -363,21 +363,20 @@ void brcmf_rx_frames(struct device *dev, struct sk_buff_head *skb_list)
363 } 363 }
364} 364}
365 365
366void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success) 366void brcmf_txfinalize(struct brcmf_pub *drvr, struct sk_buff *txp,
367 bool success)
367{ 368{
368 u8 ifidx; 369 struct brcmf_if *ifp;
369 struct ethhdr *eh; 370 struct ethhdr *eh;
371 u8 ifidx;
370 u16 type; 372 u16 type;
371 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
372 struct brcmf_pub *drvr = bus_if->drvr;
373 struct brcmf_if *ifp;
374 int res; 373 int res;
375 374
376 res = brcmf_proto_hdrpull(drvr, false, &ifidx, txp); 375 res = brcmf_proto_hdrpull(drvr, false, &ifidx, txp);
377 376
378 ifp = drvr->iflist[ifidx]; 377 ifp = drvr->iflist[ifidx];
379 if (!ifp) 378 if (!ifp)
380 goto done; 379 return;
381 380
382 if (res == 0) { 381 if (res == 0) {
383 eh = (struct ethhdr *)(txp->data); 382 eh = (struct ethhdr *)(txp->data);
@@ -391,8 +390,18 @@ void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success)
391 } 390 }
392 if (!success) 391 if (!success)
393 ifp->stats.tx_errors++; 392 ifp->stats.tx_errors++;
393}
394 394
395done: 395void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success)
396{
397 struct brcmf_bus *bus_if = dev_get_drvdata(dev);
398 struct brcmf_pub *drvr = bus_if->drvr;
399
400 /* await txstatus signal for firmware is active */
401 if (success && brcmf_fws_fc_active(drvr->fws))
402 return;
403
404 brcmf_txfinalize(drvr, txp, success);
396 brcmu_pkt_buf_free_skb(txp); 405 brcmu_pkt_buf_free_skb(txp);
397} 406}
398 407