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.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index 05c8840392e5..0299ab6731b2 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -223,18 +223,7 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
223 goto done; 223 goto done;
224 } 224 }
225 225
226 /* handle ethernet header */ 226 ret = brcmf_fws_process_skb(ifp, skb);
227 eh = (struct ethhdr *)(skb->data);
228 if (is_multicast_ether_addr(eh->h_dest))
229 drvr->tx_multicast++;
230 if (ntohs(eh->h_proto) == ETH_P_PAE)
231 atomic_inc(&ifp->pend_8021x_cnt);
232
233 /* If the protocol uses a data header, apply it */
234 brcmf_proto_hdrpush(drvr, ifp->ifidx, 0, skb);
235
236 /* Use bus module to send data frame */
237 ret = brcmf_bus_txdata(drvr->bus_if, skb);
238 227
239done: 228done:
240 if (ret) { 229 if (ret) {
@@ -376,7 +365,7 @@ void brcmf_txfinalize(struct brcmf_pub *drvr, struct sk_buff *txp,
376 365
377 ifp = drvr->iflist[ifidx]; 366 ifp = drvr->iflist[ifidx];
378 if (!ifp) 367 if (!ifp)
379 return; 368 goto done;
380 369
381 if (res == 0) { 370 if (res == 0) {
382 eh = (struct ethhdr *)(txp->data); 371 eh = (struct ethhdr *)(txp->data);
@@ -390,6 +379,8 @@ void brcmf_txfinalize(struct brcmf_pub *drvr, struct sk_buff *txp,
390 } 379 }
391 if (!success) 380 if (!success)
392 ifp->stats.tx_errors++; 381 ifp->stats.tx_errors++;
382done:
383 brcmu_pkt_buf_free_skb(txp);
393} 384}
394 385
395void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success) 386void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success)
@@ -402,7 +393,6 @@ void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success)
402 return; 393 return;
403 394
404 brcmf_txfinalize(drvr, txp, success); 395 brcmf_txfinalize(drvr, txp, success);
405 brcmu_pkt_buf_free_skb(txp);
406} 396}
407 397
408static struct net_device_stats *brcmf_netdev_get_stats(struct net_device *ndev) 398static struct net_device_stats *brcmf_netdev_get_stats(struct net_device *ndev)