diff options
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | 18 |
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 | ||
239 | done: | 228 | done: |
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++; |
382 | done: | ||
383 | brcmu_pkt_buf_free_skb(txp); | ||
393 | } | 384 | } |
394 | 385 | ||
395 | void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success) | 386 | void 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 | ||
408 | static struct net_device_stats *brcmf_netdev_get_stats(struct net_device *ndev) | 398 | static struct net_device_stats *brcmf_netdev_get_stats(struct net_device *ndev) |