diff options
Diffstat (limited to 'drivers')
34 files changed, 63 insertions, 126 deletions
diff --git a/drivers/net/wireless/adm8211.c b/drivers/net/wireless/adm8211.c index f9aa1bc0a947..afe2cbc6cb24 100644 --- a/drivers/net/wireless/adm8211.c +++ b/drivers/net/wireless/adm8211.c | |||
@@ -1658,7 +1658,7 @@ static void adm8211_tx_raw(struct ieee80211_hw *dev, struct sk_buff *skb, | |||
1658 | } | 1658 | } |
1659 | 1659 | ||
1660 | /* Put adm8211_tx_hdr on skb and transmit */ | 1660 | /* Put adm8211_tx_hdr on skb and transmit */ |
1661 | static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | 1661 | static void adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb) |
1662 | { | 1662 | { |
1663 | struct adm8211_tx_hdr *txhdr; | 1663 | struct adm8211_tx_hdr *txhdr; |
1664 | size_t payload_len, hdrlen; | 1664 | size_t payload_len, hdrlen; |
@@ -1707,8 +1707,6 @@ static int adm8211_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
1707 | txhdr->retry_limit = info->control.rates[0].count; | 1707 | txhdr->retry_limit = info->control.rates[0].count; |
1708 | 1708 | ||
1709 | adm8211_tx_raw(dev, skb, plcp_signal, hdrlen); | 1709 | adm8211_tx_raw(dev, skb, plcp_signal, hdrlen); |
1710 | |||
1711 | return NETDEV_TX_OK; | ||
1712 | } | 1710 | } |
1713 | 1711 | ||
1714 | static int adm8211_alloc_rings(struct ieee80211_hw *dev) | 1712 | static int adm8211_alloc_rings(struct ieee80211_hw *dev) |
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c index 1476314afa8a..10b4393d7fe0 100644 --- a/drivers/net/wireless/at76c50x-usb.c +++ b/drivers/net/wireless/at76c50x-usb.c | |||
@@ -1728,7 +1728,7 @@ static void at76_mac80211_tx_callback(struct urb *urb) | |||
1728 | ieee80211_wake_queues(priv->hw); | 1728 | ieee80211_wake_queues(priv->hw); |
1729 | } | 1729 | } |
1730 | 1730 | ||
1731 | static int at76_mac80211_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 1731 | static void at76_mac80211_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
1732 | { | 1732 | { |
1733 | struct at76_priv *priv = hw->priv; | 1733 | struct at76_priv *priv = hw->priv; |
1734 | struct at76_tx_buffer *tx_buffer = priv->bulk_out_buffer; | 1734 | struct at76_tx_buffer *tx_buffer = priv->bulk_out_buffer; |
@@ -1741,7 +1741,8 @@ static int at76_mac80211_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
1741 | if (priv->tx_urb->status == -EINPROGRESS) { | 1741 | if (priv->tx_urb->status == -EINPROGRESS) { |
1742 | wiphy_err(priv->hw->wiphy, | 1742 | wiphy_err(priv->hw->wiphy, |
1743 | "%s called while tx urb is pending\n", __func__); | 1743 | "%s called while tx urb is pending\n", __func__); |
1744 | return NETDEV_TX_BUSY; | 1744 | dev_kfree_skb_any(skb); |
1745 | return; | ||
1745 | } | 1746 | } |
1746 | 1747 | ||
1747 | /* The following code lines are important when the device is going to | 1748 | /* The following code lines are important when the device is going to |
@@ -1795,8 +1796,6 @@ static int at76_mac80211_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
1795 | priv->tx_urb, | 1796 | priv->tx_urb, |
1796 | priv->tx_urb->hcpriv, priv->tx_urb->complete); | 1797 | priv->tx_urb->hcpriv, priv->tx_urb->complete); |
1797 | } | 1798 | } |
1798 | |||
1799 | return 0; | ||
1800 | } | 1799 | } |
1801 | 1800 | ||
1802 | static int at76_mac80211_start(struct ieee80211_hw *hw) | 1801 | static int at76_mac80211_start(struct ieee80211_hw *hw) |
diff --git a/drivers/net/wireless/ath/ar9170/ar9170.h b/drivers/net/wireless/ath/ar9170/ar9170.h index 4f845f80c098..371e4ce49528 100644 --- a/drivers/net/wireless/ath/ar9170/ar9170.h +++ b/drivers/net/wireless/ath/ar9170/ar9170.h | |||
@@ -224,7 +224,7 @@ void ar9170_handle_command_response(struct ar9170 *ar, void *buf, u32 len); | |||
224 | int ar9170_nag_limiter(struct ar9170 *ar); | 224 | int ar9170_nag_limiter(struct ar9170 *ar); |
225 | 225 | ||
226 | /* MAC */ | 226 | /* MAC */ |
227 | int ar9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb); | 227 | void ar9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb); |
228 | int ar9170_init_mac(struct ar9170 *ar); | 228 | int ar9170_init_mac(struct ar9170 *ar); |
229 | int ar9170_set_qos(struct ar9170 *ar); | 229 | int ar9170_set_qos(struct ar9170 *ar); |
230 | int ar9170_update_multicast(struct ar9170 *ar, const u64 mc_hast); | 230 | int ar9170_update_multicast(struct ar9170 *ar, const u64 mc_hast); |
diff --git a/drivers/net/wireless/ath/ar9170/main.c b/drivers/net/wireless/ath/ar9170/main.c index a9111e1161fd..b761fec0d721 100644 --- a/drivers/net/wireless/ath/ar9170/main.c +++ b/drivers/net/wireless/ath/ar9170/main.c | |||
@@ -1475,7 +1475,7 @@ static void ar9170_tx(struct ar9170 *ar) | |||
1475 | msecs_to_jiffies(AR9170_JANITOR_DELAY)); | 1475 | msecs_to_jiffies(AR9170_JANITOR_DELAY)); |
1476 | } | 1476 | } |
1477 | 1477 | ||
1478 | int ar9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 1478 | void ar9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
1479 | { | 1479 | { |
1480 | struct ar9170 *ar = hw->priv; | 1480 | struct ar9170 *ar = hw->priv; |
1481 | struct ieee80211_tx_info *info; | 1481 | struct ieee80211_tx_info *info; |
@@ -1493,11 +1493,10 @@ int ar9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
1493 | skb_queue_tail(&ar->tx_pending[queue], skb); | 1493 | skb_queue_tail(&ar->tx_pending[queue], skb); |
1494 | 1494 | ||
1495 | ar9170_tx(ar); | 1495 | ar9170_tx(ar); |
1496 | return NETDEV_TX_OK; | 1496 | return; |
1497 | 1497 | ||
1498 | err_free: | 1498 | err_free: |
1499 | dev_kfree_skb_any(skb); | 1499 | dev_kfree_skb_any(skb); |
1500 | return NETDEV_TX_OK; | ||
1501 | } | 1500 | } |
1502 | 1501 | ||
1503 | static int ar9170_op_add_interface(struct ieee80211_hw *hw, | 1502 | static int ar9170_op_add_interface(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/ath/ath5k/ath5k.h b/drivers/net/wireless/ath/ath5k/ath5k.h index 70abb61e9eff..0ee54eb333de 100644 --- a/drivers/net/wireless/ath/ath5k/ath5k.h +++ b/drivers/net/wireless/ath/ath5k/ath5k.h | |||
@@ -1164,8 +1164,8 @@ struct ath5k_txq; | |||
1164 | 1164 | ||
1165 | void set_beacon_filter(struct ieee80211_hw *hw, bool enable); | 1165 | void set_beacon_filter(struct ieee80211_hw *hw, bool enable); |
1166 | bool ath_any_vif_assoc(struct ath5k_softc *sc); | 1166 | bool ath_any_vif_assoc(struct ath5k_softc *sc); |
1167 | int ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb, | 1167 | void ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb, |
1168 | struct ath5k_txq *txq); | 1168 | struct ath5k_txq *txq); |
1169 | int ath5k_init_hw(struct ath5k_softc *sc); | 1169 | int ath5k_init_hw(struct ath5k_softc *sc); |
1170 | int ath5k_stop_hw(struct ath5k_softc *sc); | 1170 | int ath5k_stop_hw(struct ath5k_softc *sc); |
1171 | void ath5k_mode_setup(struct ath5k_softc *sc, struct ieee80211_vif *vif); | 1171 | void ath5k_mode_setup(struct ath5k_softc *sc, struct ieee80211_vif *vif); |
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 80d9cf0c4cd2..91411e9b4b68 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
@@ -1518,7 +1518,7 @@ unlock: | |||
1518 | * TX Handling * | 1518 | * TX Handling * |
1519 | \*************/ | 1519 | \*************/ |
1520 | 1520 | ||
1521 | int | 1521 | void |
1522 | ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb, | 1522 | ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb, |
1523 | struct ath5k_txq *txq) | 1523 | struct ath5k_txq *txq) |
1524 | { | 1524 | { |
@@ -1567,11 +1567,10 @@ ath5k_tx_queue(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
1567 | spin_unlock_irqrestore(&sc->txbuflock, flags); | 1567 | spin_unlock_irqrestore(&sc->txbuflock, flags); |
1568 | goto drop_packet; | 1568 | goto drop_packet; |
1569 | } | 1569 | } |
1570 | return NETDEV_TX_OK; | 1570 | return; |
1571 | 1571 | ||
1572 | drop_packet: | 1572 | drop_packet: |
1573 | dev_kfree_skb_any(skb); | 1573 | dev_kfree_skb_any(skb); |
1574 | return NETDEV_TX_OK; | ||
1575 | } | 1574 | } |
1576 | 1575 | ||
1577 | static void | 1576 | static void |
diff --git a/drivers/net/wireless/ath/ath5k/mac80211-ops.c b/drivers/net/wireless/ath/ath5k/mac80211-ops.c index a60a726a140c..1fbe3c0b9f08 100644 --- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c +++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c | |||
@@ -52,7 +52,7 @@ extern int ath5k_modparam_nohwcrypt; | |||
52 | * Mac80211 functions * | 52 | * Mac80211 functions * |
53 | \********************/ | 53 | \********************/ |
54 | 54 | ||
55 | static int | 55 | static void |
56 | ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 56 | ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
57 | { | 57 | { |
58 | struct ath5k_softc *sc = hw->priv; | 58 | struct ath5k_softc *sc = hw->priv; |
@@ -60,10 +60,10 @@ ath5k_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
60 | 60 | ||
61 | if (WARN_ON(qnum >= sc->ah->ah_capabilities.cap_queues.q_tx_num)) { | 61 | if (WARN_ON(qnum >= sc->ah->ah_capabilities.cap_queues.q_tx_num)) { |
62 | dev_kfree_skb_any(skb); | 62 | dev_kfree_skb_any(skb); |
63 | return 0; | 63 | return; |
64 | } | 64 | } |
65 | 65 | ||
66 | return ath5k_tx_queue(hw, skb, &sc->txqs[qnum]); | 66 | ath5k_tx_queue(hw, skb, &sc->txqs[qnum]); |
67 | } | 67 | } |
68 | 68 | ||
69 | 69 | ||
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c index 7367d6c1c649..71adab34006c 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c | |||
@@ -1036,7 +1036,7 @@ set_timer: | |||
1036 | /* mac80211 Callbacks */ | 1036 | /* mac80211 Callbacks */ |
1037 | /**********************/ | 1037 | /**********************/ |
1038 | 1038 | ||
1039 | static int ath9k_htc_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 1039 | static void ath9k_htc_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
1040 | { | 1040 | { |
1041 | struct ieee80211_hdr *hdr; | 1041 | struct ieee80211_hdr *hdr; |
1042 | struct ath9k_htc_priv *priv = hw->priv; | 1042 | struct ath9k_htc_priv *priv = hw->priv; |
@@ -1049,7 +1049,7 @@ static int ath9k_htc_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
1049 | padsize = padpos & 3; | 1049 | padsize = padpos & 3; |
1050 | if (padsize && skb->len > padpos) { | 1050 | if (padsize && skb->len > padpos) { |
1051 | if (skb_headroom(skb) < padsize) | 1051 | if (skb_headroom(skb) < padsize) |
1052 | return -1; | 1052 | goto fail_tx; |
1053 | skb_push(skb, padsize); | 1053 | skb_push(skb, padsize); |
1054 | memmove(skb->data, skb->data + padsize, padpos); | 1054 | memmove(skb->data, skb->data + padsize, padpos); |
1055 | } | 1055 | } |
@@ -1070,11 +1070,10 @@ static int ath9k_htc_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
1070 | goto fail_tx; | 1070 | goto fail_tx; |
1071 | } | 1071 | } |
1072 | 1072 | ||
1073 | return 0; | 1073 | return; |
1074 | 1074 | ||
1075 | fail_tx: | 1075 | fail_tx: |
1076 | dev_kfree_skb_any(skb); | 1076 | dev_kfree_skb_any(skb); |
1077 | return 0; | ||
1078 | } | 1077 | } |
1079 | 1078 | ||
1080 | static int ath9k_htc_start(struct ieee80211_hw *hw) | 1079 | static int ath9k_htc_start(struct ieee80211_hw *hw) |
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index a71550049d84..39a72ae80970 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c | |||
@@ -1142,8 +1142,7 @@ mutex_unlock: | |||
1142 | return r; | 1142 | return r; |
1143 | } | 1143 | } |
1144 | 1144 | ||
1145 | static int ath9k_tx(struct ieee80211_hw *hw, | 1145 | static void ath9k_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
1146 | struct sk_buff *skb) | ||
1147 | { | 1146 | { |
1148 | struct ath_softc *sc = hw->priv; | 1147 | struct ath_softc *sc = hw->priv; |
1149 | struct ath_common *common = ath9k_hw_common(sc->sc_ah); | 1148 | struct ath_common *common = ath9k_hw_common(sc->sc_ah); |
@@ -1200,10 +1199,9 @@ static int ath9k_tx(struct ieee80211_hw *hw, | |||
1200 | goto exit; | 1199 | goto exit; |
1201 | } | 1200 | } |
1202 | 1201 | ||
1203 | return 0; | 1202 | return; |
1204 | exit: | 1203 | exit: |
1205 | dev_kfree_skb_any(skb); | 1204 | dev_kfree_skb_any(skb); |
1206 | return 0; | ||
1207 | } | 1205 | } |
1208 | 1206 | ||
1209 | static void ath9k_stop(struct ieee80211_hw *hw) | 1207 | static void ath9k_stop(struct ieee80211_hw *hw) |
diff --git a/drivers/net/wireless/ath/carl9170/carl9170.h b/drivers/net/wireless/ath/carl9170/carl9170.h index 420d437f9580..c6a5fae634a0 100644 --- a/drivers/net/wireless/ath/carl9170/carl9170.h +++ b/drivers/net/wireless/ath/carl9170/carl9170.h | |||
@@ -534,7 +534,7 @@ void carl9170_rx(struct ar9170 *ar, void *buf, unsigned int len); | |||
534 | void carl9170_handle_command_response(struct ar9170 *ar, void *buf, u32 len); | 534 | void carl9170_handle_command_response(struct ar9170 *ar, void *buf, u32 len); |
535 | 535 | ||
536 | /* TX */ | 536 | /* TX */ |
537 | int carl9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb); | 537 | void carl9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb); |
538 | void carl9170_tx_janitor(struct work_struct *work); | 538 | void carl9170_tx_janitor(struct work_struct *work); |
539 | void carl9170_tx_process_status(struct ar9170 *ar, | 539 | void carl9170_tx_process_status(struct ar9170 *ar, |
540 | const struct carl9170_rsp *cmd); | 540 | const struct carl9170_rsp *cmd); |
diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c index 6f41e21d3a1c..0ef70b6fc512 100644 --- a/drivers/net/wireless/ath/carl9170/tx.c +++ b/drivers/net/wireless/ath/carl9170/tx.c | |||
@@ -1339,7 +1339,7 @@ err_unlock_rcu: | |||
1339 | return false; | 1339 | return false; |
1340 | } | 1340 | } |
1341 | 1341 | ||
1342 | int carl9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 1342 | void carl9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
1343 | { | 1343 | { |
1344 | struct ar9170 *ar = hw->priv; | 1344 | struct ar9170 *ar = hw->priv; |
1345 | struct ieee80211_tx_info *info; | 1345 | struct ieee80211_tx_info *info; |
@@ -1373,12 +1373,11 @@ int carl9170_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
1373 | } | 1373 | } |
1374 | 1374 | ||
1375 | carl9170_tx(ar); | 1375 | carl9170_tx(ar); |
1376 | return NETDEV_TX_OK; | 1376 | return; |
1377 | 1377 | ||
1378 | err_free: | 1378 | err_free: |
1379 | ar->tx_dropped++; | 1379 | ar->tx_dropped++; |
1380 | dev_kfree_skb_any(skb); | 1380 | dev_kfree_skb_any(skb); |
1381 | return NETDEV_TX_OK; | ||
1382 | } | 1381 | } |
1383 | 1382 | ||
1384 | void carl9170_tx_scheduler(struct ar9170 *ar) | 1383 | void carl9170_tx_scheduler(struct ar9170 *ar) |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 22bc9f17f634..57eb5b649730 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -3203,7 +3203,7 @@ static void b43_tx_work(struct work_struct *work) | |||
3203 | mutex_unlock(&wl->mutex); | 3203 | mutex_unlock(&wl->mutex); |
3204 | } | 3204 | } |
3205 | 3205 | ||
3206 | static int b43_op_tx(struct ieee80211_hw *hw, | 3206 | static void b43_op_tx(struct ieee80211_hw *hw, |
3207 | struct sk_buff *skb) | 3207 | struct sk_buff *skb) |
3208 | { | 3208 | { |
3209 | struct b43_wl *wl = hw_to_b43_wl(hw); | 3209 | struct b43_wl *wl = hw_to_b43_wl(hw); |
@@ -3211,14 +3211,12 @@ static int b43_op_tx(struct ieee80211_hw *hw, | |||
3211 | if (unlikely(skb->len < 2 + 2 + 6)) { | 3211 | if (unlikely(skb->len < 2 + 2 + 6)) { |
3212 | /* Too short, this can't be a valid frame. */ | 3212 | /* Too short, this can't be a valid frame. */ |
3213 | dev_kfree_skb_any(skb); | 3213 | dev_kfree_skb_any(skb); |
3214 | return NETDEV_TX_OK; | 3214 | return; |
3215 | } | 3215 | } |
3216 | B43_WARN_ON(skb_shinfo(skb)->nr_frags); | 3216 | B43_WARN_ON(skb_shinfo(skb)->nr_frags); |
3217 | 3217 | ||
3218 | skb_queue_tail(&wl->tx_queue, skb); | 3218 | skb_queue_tail(&wl->tx_queue, skb); |
3219 | ieee80211_queue_work(wl->hw, &wl->tx_work); | 3219 | ieee80211_queue_work(wl->hw, &wl->tx_work); |
3220 | |||
3221 | return NETDEV_TX_OK; | ||
3222 | } | 3220 | } |
3223 | 3221 | ||
3224 | static void b43_qos_params_upload(struct b43_wldev *dev, | 3222 | static void b43_qos_params_upload(struct b43_wldev *dev, |
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c index 1f11e1670bf0..c7fd73e3ad76 100644 --- a/drivers/net/wireless/b43legacy/main.c +++ b/drivers/net/wireless/b43legacy/main.c | |||
@@ -2442,8 +2442,8 @@ static int b43legacy_rng_init(struct b43legacy_wl *wl) | |||
2442 | return err; | 2442 | return err; |
2443 | } | 2443 | } |
2444 | 2444 | ||
2445 | static int b43legacy_op_tx(struct ieee80211_hw *hw, | 2445 | static void b43legacy_op_tx(struct ieee80211_hw *hw, |
2446 | struct sk_buff *skb) | 2446 | struct sk_buff *skb) |
2447 | { | 2447 | { |
2448 | struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw); | 2448 | struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw); |
2449 | struct b43legacy_wldev *dev = wl->current_dev; | 2449 | struct b43legacy_wldev *dev = wl->current_dev; |
@@ -2466,7 +2466,6 @@ out: | |||
2466 | /* Drop the packet. */ | 2466 | /* Drop the packet. */ |
2467 | dev_kfree_skb_any(skb); | 2467 | dev_kfree_skb_any(skb); |
2468 | } | 2468 | } |
2469 | return NETDEV_TX_OK; | ||
2470 | } | 2469 | } |
2471 | 2470 | ||
2472 | static int b43legacy_op_conf_tx(struct ieee80211_hw *hw, u16 queue, | 2471 | static int b43legacy_op_conf_tx(struct ieee80211_hw *hw, u16 queue, |
diff --git a/drivers/net/wireless/iwlegacy/iwl-4965.h b/drivers/net/wireless/iwlegacy/iwl-4965.h index 79e206770f71..01f8163daf16 100644 --- a/drivers/net/wireless/iwlegacy/iwl-4965.h +++ b/drivers/net/wireless/iwlegacy/iwl-4965.h | |||
@@ -253,7 +253,7 @@ void iwl4965_eeprom_release_semaphore(struct iwl_priv *priv); | |||
253 | int iwl4965_eeprom_check_version(struct iwl_priv *priv); | 253 | int iwl4965_eeprom_check_version(struct iwl_priv *priv); |
254 | 254 | ||
255 | /* mac80211 handlers (for 4965) */ | 255 | /* mac80211 handlers (for 4965) */ |
256 | int iwl4965_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb); | 256 | void iwl4965_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb); |
257 | int iwl4965_mac_start(struct ieee80211_hw *hw); | 257 | int iwl4965_mac_start(struct ieee80211_hw *hw); |
258 | void iwl4965_mac_stop(struct ieee80211_hw *hw); | 258 | void iwl4965_mac_stop(struct ieee80211_hw *hw); |
259 | void iwl4965_configure_filter(struct ieee80211_hw *hw, | 259 | void iwl4965_configure_filter(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/iwlegacy/iwl3945-base.c b/drivers/net/wireless/iwlegacy/iwl3945-base.c index ef94d161b783..a6af9817efce 100644 --- a/drivers/net/wireless/iwlegacy/iwl3945-base.c +++ b/drivers/net/wireless/iwlegacy/iwl3945-base.c | |||
@@ -3170,7 +3170,7 @@ static void iwl3945_mac_stop(struct ieee80211_hw *hw) | |||
3170 | IWL_DEBUG_MAC80211(priv, "leave\n"); | 3170 | IWL_DEBUG_MAC80211(priv, "leave\n"); |
3171 | } | 3171 | } |
3172 | 3172 | ||
3173 | static int iwl3945_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 3173 | static void iwl3945_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
3174 | { | 3174 | { |
3175 | struct iwl_priv *priv = hw->priv; | 3175 | struct iwl_priv *priv = hw->priv; |
3176 | 3176 | ||
@@ -3183,7 +3183,6 @@ static int iwl3945_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
3183 | dev_kfree_skb_any(skb); | 3183 | dev_kfree_skb_any(skb); |
3184 | 3184 | ||
3185 | IWL_DEBUG_MAC80211(priv, "leave\n"); | 3185 | IWL_DEBUG_MAC80211(priv, "leave\n"); |
3186 | return NETDEV_TX_OK; | ||
3187 | } | 3186 | } |
3188 | 3187 | ||
3189 | void iwl3945_config_ap(struct iwl_priv *priv) | 3188 | void iwl3945_config_ap(struct iwl_priv *priv) |
diff --git a/drivers/net/wireless/iwlegacy/iwl4965-base.c b/drivers/net/wireless/iwlegacy/iwl4965-base.c index c0e07685059a..4d53d0ff5fc7 100644 --- a/drivers/net/wireless/iwlegacy/iwl4965-base.c +++ b/drivers/net/wireless/iwlegacy/iwl4965-base.c | |||
@@ -2631,7 +2631,7 @@ void iwl4965_mac_stop(struct ieee80211_hw *hw) | |||
2631 | IWL_DEBUG_MAC80211(priv, "leave\n"); | 2631 | IWL_DEBUG_MAC80211(priv, "leave\n"); |
2632 | } | 2632 | } |
2633 | 2633 | ||
2634 | int iwl4965_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 2634 | void iwl4965_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
2635 | { | 2635 | { |
2636 | struct iwl_priv *priv = hw->priv; | 2636 | struct iwl_priv *priv = hw->priv; |
2637 | 2637 | ||
@@ -2644,7 +2644,6 @@ int iwl4965_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
2644 | dev_kfree_skb_any(skb); | 2644 | dev_kfree_skb_any(skb); |
2645 | 2645 | ||
2646 | IWL_DEBUG_MACDUMP(priv, "leave\n"); | 2646 | IWL_DEBUG_MACDUMP(priv, "leave\n"); |
2647 | return NETDEV_TX_OK; | ||
2648 | } | 2647 | } |
2649 | 2648 | ||
2650 | void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw, | 2649 | void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index d08fa938501a..8cdbd8c4027f 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -3330,7 +3330,7 @@ void iwlagn_mac_stop(struct ieee80211_hw *hw) | |||
3330 | IWL_DEBUG_MAC80211(priv, "leave\n"); | 3330 | IWL_DEBUG_MAC80211(priv, "leave\n"); |
3331 | } | 3331 | } |
3332 | 3332 | ||
3333 | int iwlagn_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 3333 | void iwlagn_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
3334 | { | 3334 | { |
3335 | struct iwl_priv *priv = hw->priv; | 3335 | struct iwl_priv *priv = hw->priv; |
3336 | 3336 | ||
@@ -3343,7 +3343,6 @@ int iwlagn_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
3343 | dev_kfree_skb_any(skb); | 3343 | dev_kfree_skb_any(skb); |
3344 | 3344 | ||
3345 | IWL_DEBUG_MACDUMP(priv, "leave\n"); | 3345 | IWL_DEBUG_MACDUMP(priv, "leave\n"); |
3346 | return NETDEV_TX_OK; | ||
3347 | } | 3346 | } |
3348 | 3347 | ||
3349 | void iwlagn_mac_update_tkip_key(struct ieee80211_hw *hw, | 3348 | void iwlagn_mac_update_tkip_key(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h index d00e1ea50a8d..88c7210dfb91 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.h +++ b/drivers/net/wireless/iwlwifi/iwl-agn.h | |||
@@ -356,7 +356,7 @@ iwlagn_remove_notification(struct iwl_priv *priv, | |||
356 | struct iwl_notification_wait *wait_entry); | 356 | struct iwl_notification_wait *wait_entry); |
357 | 357 | ||
358 | /* mac80211 handlers (for 4965) */ | 358 | /* mac80211 handlers (for 4965) */ |
359 | int iwlagn_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb); | 359 | void iwlagn_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb); |
360 | int iwlagn_mac_start(struct ieee80211_hw *hw); | 360 | int iwlagn_mac_start(struct ieee80211_hw *hw); |
361 | void iwlagn_mac_stop(struct ieee80211_hw *hw); | 361 | void iwlagn_mac_stop(struct ieee80211_hw *hw); |
362 | void iwlagn_configure_filter(struct ieee80211_hw *hw, | 362 | void iwlagn_configure_filter(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/libertas_tf/main.c b/drivers/net/wireless/libertas_tf/main.c index 9278b3c8ee30..d4005081f1df 100644 --- a/drivers/net/wireless/libertas_tf/main.c +++ b/drivers/net/wireless/libertas_tf/main.c | |||
@@ -225,7 +225,7 @@ static void lbtf_free_adapter(struct lbtf_private *priv) | |||
225 | lbtf_deb_leave(LBTF_DEB_MAIN); | 225 | lbtf_deb_leave(LBTF_DEB_MAIN); |
226 | } | 226 | } |
227 | 227 | ||
228 | static int lbtf_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 228 | static void lbtf_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
229 | { | 229 | { |
230 | struct lbtf_private *priv = hw->priv; | 230 | struct lbtf_private *priv = hw->priv; |
231 | 231 | ||
@@ -236,7 +236,6 @@ static int lbtf_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
236 | * there are no buffered multicast frames to send | 236 | * there are no buffered multicast frames to send |
237 | */ | 237 | */ |
238 | ieee80211_stop_queues(priv->hw); | 238 | ieee80211_stop_queues(priv->hw); |
239 | return NETDEV_TX_OK; | ||
240 | } | 239 | } |
241 | 240 | ||
242 | static void lbtf_tx_work(struct work_struct *work) | 241 | static void lbtf_tx_work(struct work_struct *work) |
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index 5d39b2840584..56f439d58013 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c | |||
@@ -541,7 +541,7 @@ static bool mac80211_hwsim_tx_frame(struct ieee80211_hw *hw, | |||
541 | } | 541 | } |
542 | 542 | ||
543 | 543 | ||
544 | static int mac80211_hwsim_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 544 | static void mac80211_hwsim_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
545 | { | 545 | { |
546 | bool ack; | 546 | bool ack; |
547 | struct ieee80211_tx_info *txi; | 547 | struct ieee80211_tx_info *txi; |
@@ -551,7 +551,7 @@ static int mac80211_hwsim_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
551 | if (skb->len < 10) { | 551 | if (skb->len < 10) { |
552 | /* Should not happen; just a sanity check for addr1 use */ | 552 | /* Should not happen; just a sanity check for addr1 use */ |
553 | dev_kfree_skb(skb); | 553 | dev_kfree_skb(skb); |
554 | return NETDEV_TX_OK; | 554 | return; |
555 | } | 555 | } |
556 | 556 | ||
557 | ack = mac80211_hwsim_tx_frame(hw, skb); | 557 | ack = mac80211_hwsim_tx_frame(hw, skb); |
@@ -571,7 +571,6 @@ static int mac80211_hwsim_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
571 | if (!(txi->flags & IEEE80211_TX_CTL_NO_ACK) && ack) | 571 | if (!(txi->flags & IEEE80211_TX_CTL_NO_ACK) && ack) |
572 | txi->flags |= IEEE80211_TX_STAT_ACK; | 572 | txi->flags |= IEEE80211_TX_STAT_ACK; |
573 | ieee80211_tx_status_irqsafe(hw, skb); | 573 | ieee80211_tx_status_irqsafe(hw, skb); |
574 | return NETDEV_TX_OK; | ||
575 | } | 574 | } |
576 | 575 | ||
577 | 576 | ||
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index 03f2584aed12..df5959f36d0b 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
@@ -1573,7 +1573,7 @@ static void mwl8k_txq_deinit(struct ieee80211_hw *hw, int index) | |||
1573 | txq->txd = NULL; | 1573 | txq->txd = NULL; |
1574 | } | 1574 | } |
1575 | 1575 | ||
1576 | static int | 1576 | static void |
1577 | mwl8k_txq_xmit(struct ieee80211_hw *hw, int index, struct sk_buff *skb) | 1577 | mwl8k_txq_xmit(struct ieee80211_hw *hw, int index, struct sk_buff *skb) |
1578 | { | 1578 | { |
1579 | struct mwl8k_priv *priv = hw->priv; | 1579 | struct mwl8k_priv *priv = hw->priv; |
@@ -1635,7 +1635,7 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, int index, struct sk_buff *skb) | |||
1635 | wiphy_debug(hw->wiphy, | 1635 | wiphy_debug(hw->wiphy, |
1636 | "failed to dma map skb, dropping TX frame.\n"); | 1636 | "failed to dma map skb, dropping TX frame.\n"); |
1637 | dev_kfree_skb(skb); | 1637 | dev_kfree_skb(skb); |
1638 | return NETDEV_TX_OK; | 1638 | return; |
1639 | } | 1639 | } |
1640 | 1640 | ||
1641 | spin_lock_bh(&priv->tx_lock); | 1641 | spin_lock_bh(&priv->tx_lock); |
@@ -1672,8 +1672,6 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, int index, struct sk_buff *skb) | |||
1672 | mwl8k_tx_start(priv); | 1672 | mwl8k_tx_start(priv); |
1673 | 1673 | ||
1674 | spin_unlock_bh(&priv->tx_lock); | 1674 | spin_unlock_bh(&priv->tx_lock); |
1675 | |||
1676 | return NETDEV_TX_OK; | ||
1677 | } | 1675 | } |
1678 | 1676 | ||
1679 | 1677 | ||
@@ -3742,22 +3740,19 @@ static void mwl8k_rx_poll(unsigned long data) | |||
3742 | /* | 3740 | /* |
3743 | * Core driver operations. | 3741 | * Core driver operations. |
3744 | */ | 3742 | */ |
3745 | static int mwl8k_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 3743 | static void mwl8k_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
3746 | { | 3744 | { |
3747 | struct mwl8k_priv *priv = hw->priv; | 3745 | struct mwl8k_priv *priv = hw->priv; |
3748 | int index = skb_get_queue_mapping(skb); | 3746 | int index = skb_get_queue_mapping(skb); |
3749 | int rc; | ||
3750 | 3747 | ||
3751 | if (!priv->radio_on) { | 3748 | if (!priv->radio_on) { |
3752 | wiphy_debug(hw->wiphy, | 3749 | wiphy_debug(hw->wiphy, |
3753 | "dropped TX frame since radio disabled\n"); | 3750 | "dropped TX frame since radio disabled\n"); |
3754 | dev_kfree_skb(skb); | 3751 | dev_kfree_skb(skb); |
3755 | return NETDEV_TX_OK; | 3752 | return; |
3756 | } | 3753 | } |
3757 | 3754 | ||
3758 | rc = mwl8k_txq_xmit(hw, index, skb); | 3755 | mwl8k_txq_xmit(hw, index, skb); |
3759 | |||
3760 | return rc; | ||
3761 | } | 3756 | } |
3762 | 3757 | ||
3763 | static int mwl8k_start(struct ieee80211_hw *hw) | 3758 | static int mwl8k_start(struct ieee80211_hw *hw) |
diff --git a/drivers/net/wireless/p54/lmac.h b/drivers/net/wireless/p54/lmac.h index 5ca117e6f95b..eb581abc1079 100644 --- a/drivers/net/wireless/p54/lmac.h +++ b/drivers/net/wireless/p54/lmac.h | |||
@@ -526,7 +526,7 @@ int p54_init_leds(struct p54_common *priv); | |||
526 | void p54_unregister_leds(struct p54_common *priv); | 526 | void p54_unregister_leds(struct p54_common *priv); |
527 | 527 | ||
528 | /* xmit functions */ | 528 | /* xmit functions */ |
529 | int p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb); | 529 | void p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb); |
530 | int p54_tx_cancel(struct p54_common *priv, __le32 req_id); | 530 | int p54_tx_cancel(struct p54_common *priv, __le32 req_id); |
531 | void p54_tx(struct p54_common *priv, struct sk_buff *skb); | 531 | void p54_tx(struct p54_common *priv, struct sk_buff *skb); |
532 | 532 | ||
diff --git a/drivers/net/wireless/p54/main.c b/drivers/net/wireless/p54/main.c index d7a92af24dd5..356e6bb443a6 100644 --- a/drivers/net/wireless/p54/main.c +++ b/drivers/net/wireless/p54/main.c | |||
@@ -157,7 +157,7 @@ static int p54_beacon_update(struct p54_common *priv, | |||
157 | * to cancel the old beacon template by hand, instead the firmware | 157 | * to cancel the old beacon template by hand, instead the firmware |
158 | * will release the previous one through the feedback mechanism. | 158 | * will release the previous one through the feedback mechanism. |
159 | */ | 159 | */ |
160 | WARN_ON(p54_tx_80211(priv->hw, beacon)); | 160 | p54_tx_80211(priv->hw, beacon); |
161 | priv->tsf_high32 = 0; | 161 | priv->tsf_high32 = 0; |
162 | priv->tsf_low32 = 0; | 162 | priv->tsf_low32 = 0; |
163 | 163 | ||
diff --git a/drivers/net/wireless/p54/txrx.c b/drivers/net/wireless/p54/txrx.c index a408ff333920..7834c26c2954 100644 --- a/drivers/net/wireless/p54/txrx.c +++ b/drivers/net/wireless/p54/txrx.c | |||
@@ -696,7 +696,7 @@ static u8 p54_convert_algo(u32 cipher) | |||
696 | } | 696 | } |
697 | } | 697 | } |
698 | 698 | ||
699 | int p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb) | 699 | void p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb) |
700 | { | 700 | { |
701 | struct p54_common *priv = dev->priv; | 701 | struct p54_common *priv = dev->priv; |
702 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | 702 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); |
@@ -717,12 +717,8 @@ int p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
717 | &hdr_flags, &aid, &burst_allowed); | 717 | &hdr_flags, &aid, &burst_allowed); |
718 | 718 | ||
719 | if (p54_tx_qos_accounting_alloc(priv, skb, queue)) { | 719 | if (p54_tx_qos_accounting_alloc(priv, skb, queue)) { |
720 | if (!IS_QOS_QUEUE(queue)) { | 720 | dev_kfree_skb_any(skb); |
721 | dev_kfree_skb_any(skb); | 721 | return; |
722 | return NETDEV_TX_OK; | ||
723 | } else { | ||
724 | return NETDEV_TX_BUSY; | ||
725 | } | ||
726 | } | 722 | } |
727 | 723 | ||
728 | padding = (unsigned long)(skb->data - (sizeof(*hdr) + sizeof(*txhdr))) & 3; | 724 | padding = (unsigned long)(skb->data - (sizeof(*hdr) + sizeof(*txhdr))) & 3; |
@@ -865,5 +861,4 @@ int p54_tx_80211(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
865 | p54info->extra_len = extra_len; | 861 | p54info->extra_len = extra_len; |
866 | 862 | ||
867 | p54_tx(priv, skb); | 863 | p54_tx(priv, skb); |
868 | return NETDEV_TX_OK; | ||
869 | } | 864 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 1df432c1f2c7..19453d23e90d 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -1185,7 +1185,7 @@ void rt2x00lib_rxdone(struct queue_entry *entry); | |||
1185 | /* | 1185 | /* |
1186 | * mac80211 handlers. | 1186 | * mac80211 handlers. |
1187 | */ | 1187 | */ |
1188 | int rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb); | 1188 | void rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb); |
1189 | int rt2x00mac_start(struct ieee80211_hw *hw); | 1189 | int rt2x00mac_start(struct ieee80211_hw *hw); |
1190 | void rt2x00mac_stop(struct ieee80211_hw *hw); | 1190 | void rt2x00mac_stop(struct ieee80211_hw *hw); |
1191 | int rt2x00mac_add_interface(struct ieee80211_hw *hw, | 1191 | int rt2x00mac_add_interface(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c index 1b3edef9e3d2..c2c35838c2f3 100644 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c | |||
@@ -99,7 +99,7 @@ static int rt2x00mac_tx_rts_cts(struct rt2x00_dev *rt2x00dev, | |||
99 | return retval; | 99 | return retval; |
100 | } | 100 | } |
101 | 101 | ||
102 | int rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 102 | void rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
103 | { | 103 | { |
104 | struct rt2x00_dev *rt2x00dev = hw->priv; | 104 | struct rt2x00_dev *rt2x00dev = hw->priv; |
105 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); | 105 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); |
@@ -155,12 +155,11 @@ int rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
155 | if (rt2x00queue_threshold(queue)) | 155 | if (rt2x00queue_threshold(queue)) |
156 | rt2x00queue_pause_queue(queue); | 156 | rt2x00queue_pause_queue(queue); |
157 | 157 | ||
158 | return NETDEV_TX_OK; | 158 | return; |
159 | 159 | ||
160 | exit_fail: | 160 | exit_fail: |
161 | ieee80211_stop_queue(rt2x00dev->hw, qid); | 161 | ieee80211_stop_queue(rt2x00dev->hw, qid); |
162 | dev_kfree_skb_any(skb); | 162 | dev_kfree_skb_any(skb); |
163 | return NETDEV_TX_OK; | ||
164 | } | 163 | } |
165 | EXPORT_SYMBOL_GPL(rt2x00mac_tx); | 164 | EXPORT_SYMBOL_GPL(rt2x00mac_tx); |
166 | 165 | ||
diff --git a/drivers/net/wireless/rtl818x/rtl8180/dev.c b/drivers/net/wireless/rtl818x/rtl8180/dev.c index b85debb4f7b1..80db5cabc9b9 100644 --- a/drivers/net/wireless/rtl818x/rtl8180/dev.c +++ b/drivers/net/wireless/rtl818x/rtl8180/dev.c | |||
@@ -240,7 +240,7 @@ static irqreturn_t rtl8180_interrupt(int irq, void *dev_id) | |||
240 | return IRQ_HANDLED; | 240 | return IRQ_HANDLED; |
241 | } | 241 | } |
242 | 242 | ||
243 | static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | 243 | static void rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb) |
244 | { | 244 | { |
245 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | 245 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); |
246 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; | 246 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; |
@@ -321,8 +321,6 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
321 | spin_unlock_irqrestore(&priv->lock, flags); | 321 | spin_unlock_irqrestore(&priv->lock, flags); |
322 | 322 | ||
323 | rtl818x_iowrite8(priv, &priv->map->TX_DMA_POLLING, (1 << (prio + 4))); | 323 | rtl818x_iowrite8(priv, &priv->map->TX_DMA_POLLING, (1 << (prio + 4))); |
324 | |||
325 | return 0; | ||
326 | } | 324 | } |
327 | 325 | ||
328 | void rtl8180_set_anaparam(struct rtl8180_priv *priv, u32 anaparam) | 326 | void rtl8180_set_anaparam(struct rtl8180_priv *priv, u32 anaparam) |
@@ -687,7 +685,6 @@ static void rtl8180_beacon_work(struct work_struct *work) | |||
687 | struct ieee80211_hw *dev = vif_priv->dev; | 685 | struct ieee80211_hw *dev = vif_priv->dev; |
688 | struct ieee80211_mgmt *mgmt; | 686 | struct ieee80211_mgmt *mgmt; |
689 | struct sk_buff *skb; | 687 | struct sk_buff *skb; |
690 | int err = 0; | ||
691 | 688 | ||
692 | /* don't overflow the tx ring */ | 689 | /* don't overflow the tx ring */ |
693 | if (ieee80211_queue_stopped(dev, 0)) | 690 | if (ieee80211_queue_stopped(dev, 0)) |
@@ -708,8 +705,7 @@ static void rtl8180_beacon_work(struct work_struct *work) | |||
708 | /* TODO: use actual beacon queue */ | 705 | /* TODO: use actual beacon queue */ |
709 | skb_set_queue_mapping(skb, 0); | 706 | skb_set_queue_mapping(skb, 0); |
710 | 707 | ||
711 | err = rtl8180_tx(dev, skb); | 708 | rtl8180_tx(dev, skb); |
712 | WARN_ON(err); | ||
713 | 709 | ||
714 | resched: | 710 | resched: |
715 | /* | 711 | /* |
diff --git a/drivers/net/wireless/rtl818x/rtl8187/dev.c b/drivers/net/wireless/rtl818x/rtl8187/dev.c index 1f5df12cb156..c5a5e788f25f 100644 --- a/drivers/net/wireless/rtl818x/rtl8187/dev.c +++ b/drivers/net/wireless/rtl818x/rtl8187/dev.c | |||
@@ -227,7 +227,7 @@ static void rtl8187_tx_cb(struct urb *urb) | |||
227 | } | 227 | } |
228 | } | 228 | } |
229 | 229 | ||
230 | static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | 230 | static void rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb) |
231 | { | 231 | { |
232 | struct rtl8187_priv *priv = dev->priv; | 232 | struct rtl8187_priv *priv = dev->priv; |
233 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | 233 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); |
@@ -241,7 +241,7 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
241 | urb = usb_alloc_urb(0, GFP_ATOMIC); | 241 | urb = usb_alloc_urb(0, GFP_ATOMIC); |
242 | if (!urb) { | 242 | if (!urb) { |
243 | kfree_skb(skb); | 243 | kfree_skb(skb); |
244 | return NETDEV_TX_OK; | 244 | return; |
245 | } | 245 | } |
246 | 246 | ||
247 | flags = skb->len; | 247 | flags = skb->len; |
@@ -309,8 +309,6 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
309 | kfree_skb(skb); | 309 | kfree_skb(skb); |
310 | } | 310 | } |
311 | usb_free_urb(urb); | 311 | usb_free_urb(urb); |
312 | |||
313 | return NETDEV_TX_OK; | ||
314 | } | 312 | } |
315 | 313 | ||
316 | static void rtl8187_rx_cb(struct urb *urb) | 314 | static void rtl8187_rx_cb(struct urb *urb) |
diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c index b0996bf8a214..059ab036b01d 100644 --- a/drivers/net/wireless/rtlwifi/core.c +++ b/drivers/net/wireless/rtlwifi/core.c | |||
@@ -82,7 +82,7 @@ static void rtl_op_stop(struct ieee80211_hw *hw) | |||
82 | mutex_unlock(&rtlpriv->locks.conf_mutex); | 82 | mutex_unlock(&rtlpriv->locks.conf_mutex); |
83 | } | 83 | } |
84 | 84 | ||
85 | static int rtl_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 85 | static void rtl_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
86 | { | 86 | { |
87 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 87 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
88 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | 88 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); |
@@ -97,11 +97,10 @@ static int rtl_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
97 | 97 | ||
98 | rtlpriv->intf_ops->adapter_tx(hw, skb); | 98 | rtlpriv->intf_ops->adapter_tx(hw, skb); |
99 | 99 | ||
100 | return NETDEV_TX_OK; | 100 | return; |
101 | 101 | ||
102 | err_free: | 102 | err_free: |
103 | dev_kfree_skb_any(skb); | 103 | dev_kfree_skb_any(skb); |
104 | return NETDEV_TX_OK; | ||
105 | } | 104 | } |
106 | 105 | ||
107 | static int rtl_op_add_interface(struct ieee80211_hw *hw, | 106 | static int rtl_op_add_interface(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/wl1251/main.c b/drivers/net/wireless/wl1251/main.c index 5a1c13878eaf..12c9e635a6d6 100644 --- a/drivers/net/wireless/wl1251/main.c +++ b/drivers/net/wireless/wl1251/main.c | |||
@@ -375,7 +375,7 @@ out: | |||
375 | mutex_unlock(&wl->mutex); | 375 | mutex_unlock(&wl->mutex); |
376 | } | 376 | } |
377 | 377 | ||
378 | static int wl1251_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 378 | static void wl1251_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
379 | { | 379 | { |
380 | struct wl1251 *wl = hw->priv; | 380 | struct wl1251 *wl = hw->priv; |
381 | unsigned long flags; | 381 | unsigned long flags; |
@@ -401,8 +401,6 @@ static int wl1251_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
401 | wl->tx_queue_stopped = true; | 401 | wl->tx_queue_stopped = true; |
402 | spin_unlock_irqrestore(&wl->wl_lock, flags); | 402 | spin_unlock_irqrestore(&wl->wl_lock, flags); |
403 | } | 403 | } |
404 | |||
405 | return NETDEV_TX_OK; | ||
406 | } | 404 | } |
407 | 405 | ||
408 | static int wl1251_op_start(struct ieee80211_hw *hw) | 406 | static int wl1251_op_start(struct ieee80211_hw *hw) |
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c index 95aa19ae84e5..947491a1d9cc 100644 --- a/drivers/net/wireless/wl12xx/main.c +++ b/drivers/net/wireless/wl12xx/main.c | |||
@@ -1034,7 +1034,7 @@ int wl1271_plt_stop(struct wl1271 *wl) | |||
1034 | return ret; | 1034 | return ret; |
1035 | } | 1035 | } |
1036 | 1036 | ||
1037 | static int wl1271_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 1037 | static void wl1271_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
1038 | { | 1038 | { |
1039 | struct wl1271 *wl = hw->priv; | 1039 | struct wl1271 *wl = hw->priv; |
1040 | unsigned long flags; | 1040 | unsigned long flags; |
@@ -1073,8 +1073,6 @@ static int wl1271_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
1073 | 1073 | ||
1074 | if (!test_bit(WL1271_FLAG_FW_TX_BUSY, &wl->flags)) | 1074 | if (!test_bit(WL1271_FLAG_FW_TX_BUSY, &wl->flags)) |
1075 | ieee80211_queue_work(wl->hw, &wl->tx_work); | 1075 | ieee80211_queue_work(wl->hw, &wl->tx_work); |
1076 | |||
1077 | return NETDEV_TX_OK; | ||
1078 | } | 1076 | } |
1079 | 1077 | ||
1080 | static struct notifier_block wl1271_dev_notifier = { | 1078 | static struct notifier_block wl1271_dev_notifier = { |
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index 74a269ebbeb9..5037c8b2b415 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c | |||
@@ -850,7 +850,7 @@ static int fill_ctrlset(struct zd_mac *mac, | |||
850 | * control block of the skbuff will be initialized. If necessary the incoming | 850 | * control block of the skbuff will be initialized. If necessary the incoming |
851 | * mac80211 queues will be stopped. | 851 | * mac80211 queues will be stopped. |
852 | */ | 852 | */ |
853 | static int zd_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 853 | static void zd_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
854 | { | 854 | { |
855 | struct zd_mac *mac = zd_hw_mac(hw); | 855 | struct zd_mac *mac = zd_hw_mac(hw); |
856 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | 856 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); |
@@ -865,11 +865,10 @@ static int zd_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
865 | r = zd_usb_tx(&mac->chip.usb, skb); | 865 | r = zd_usb_tx(&mac->chip.usb, skb); |
866 | if (r) | 866 | if (r) |
867 | goto fail; | 867 | goto fail; |
868 | return 0; | 868 | return; |
869 | 869 | ||
870 | fail: | 870 | fail: |
871 | dev_kfree_skb(skb); | 871 | dev_kfree_skb(skb); |
872 | return 0; | ||
873 | } | 872 | } |
874 | 873 | ||
875 | /** | 874 | /** |
diff --git a/drivers/staging/brcm80211/sys/wl_mac80211.c b/drivers/staging/brcm80211/sys/wl_mac80211.c index bdd629d72a75..c83bdcc640a5 100644 --- a/drivers/staging/brcm80211/sys/wl_mac80211.c +++ b/drivers/staging/brcm80211/sys/wl_mac80211.c | |||
@@ -104,9 +104,6 @@ static int wl_request_fw(struct wl_info *wl, struct pci_dev *pdev); | |||
104 | static void wl_release_fw(struct wl_info *wl); | 104 | static void wl_release_fw(struct wl_info *wl); |
105 | 105 | ||
106 | /* local prototypes */ | 106 | /* local prototypes */ |
107 | static int wl_start(struct sk_buff *skb, struct wl_info *wl); | ||
108 | static int wl_start_int(struct wl_info *wl, struct ieee80211_hw *hw, | ||
109 | struct sk_buff *skb); | ||
110 | static void wl_dpc(unsigned long data); | 107 | static void wl_dpc(unsigned long data); |
111 | 108 | ||
112 | MODULE_AUTHOR("Broadcom Corporation"); | 109 | MODULE_AUTHOR("Broadcom Corporation"); |
@@ -135,7 +132,6 @@ module_param(phymsglevel, int, 0); | |||
135 | 132 | ||
136 | #define HW_TO_WL(hw) (hw->priv) | 133 | #define HW_TO_WL(hw) (hw->priv) |
137 | #define WL_TO_HW(wl) (wl->pub->ieee_hw) | 134 | #define WL_TO_HW(wl) (wl->pub->ieee_hw) |
138 | static int wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb); | ||
139 | static int wl_ops_start(struct ieee80211_hw *hw); | 135 | static int wl_ops_start(struct ieee80211_hw *hw); |
140 | static void wl_ops_stop(struct ieee80211_hw *hw); | 136 | static void wl_ops_stop(struct ieee80211_hw *hw); |
141 | static int wl_ops_add_interface(struct ieee80211_hw *hw, | 137 | static int wl_ops_add_interface(struct ieee80211_hw *hw, |
@@ -173,20 +169,18 @@ static int wl_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | |||
173 | enum ieee80211_ampdu_mlme_action action, | 169 | enum ieee80211_ampdu_mlme_action action, |
174 | struct ieee80211_sta *sta, u16 tid, u16 *ssn); | 170 | struct ieee80211_sta *sta, u16 tid, u16 *ssn); |
175 | 171 | ||
176 | static int wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | 172 | static void wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb) |
177 | { | 173 | { |
178 | int status; | ||
179 | struct wl_info *wl = hw->priv; | 174 | struct wl_info *wl = hw->priv; |
180 | WL_LOCK(wl); | 175 | WL_LOCK(wl); |
181 | if (!wl->pub->up) { | 176 | if (!wl->pub->up) { |
182 | WL_ERROR("ops->tx called while down\n"); | 177 | WL_ERROR("ops->tx called while down\n"); |
183 | status = -ENETDOWN; | 178 | kfree_skb(skb); |
184 | goto done; | 179 | goto done; |
185 | } | 180 | } |
186 | status = wl_start(skb, wl); | 181 | wlc_sendpkt_mac80211(wl->wlc, skb, hw); |
187 | done: | 182 | done: |
188 | WL_UNLOCK(wl); | 183 | WL_UNLOCK(wl); |
189 | return status; | ||
190 | } | 184 | } |
191 | 185 | ||
192 | static int wl_ops_start(struct ieee80211_hw *hw) | 186 | static int wl_ops_start(struct ieee80211_hw *hw) |
@@ -1316,22 +1310,6 @@ void wl_free(struct wl_info *wl) | |||
1316 | osl_detach(osh); | 1310 | osl_detach(osh); |
1317 | } | 1311 | } |
1318 | 1312 | ||
1319 | /* transmit a packet */ | ||
1320 | static int BCMFASTPATH wl_start(struct sk_buff *skb, struct wl_info *wl) | ||
1321 | { | ||
1322 | if (!wl) | ||
1323 | return -ENETDOWN; | ||
1324 | |||
1325 | return wl_start_int(wl, WL_TO_HW(wl), skb); | ||
1326 | } | ||
1327 | |||
1328 | static int BCMFASTPATH | ||
1329 | wl_start_int(struct wl_info *wl, struct ieee80211_hw *hw, struct sk_buff *skb) | ||
1330 | { | ||
1331 | wlc_sendpkt_mac80211(wl->wlc, skb, hw); | ||
1332 | return NETDEV_TX_OK; | ||
1333 | } | ||
1334 | |||
1335 | void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state, | 1313 | void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state, |
1336 | int prio) | 1314 | int prio) |
1337 | { | 1315 | { |
diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c index 2163d60c2eaf..3724e1e67ec2 100644 --- a/drivers/staging/winbond/wbusb.c +++ b/drivers/staging/winbond/wbusb.c | |||
@@ -118,13 +118,14 @@ static void wbsoft_configure_filter(struct ieee80211_hw *dev, | |||
118 | *total_flags = new_flags; | 118 | *total_flags = new_flags; |
119 | } | 119 | } |
120 | 120 | ||
121 | static int wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | 121 | static void wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb) |
122 | { | 122 | { |
123 | struct wbsoft_priv *priv = dev->priv; | 123 | struct wbsoft_priv *priv = dev->priv; |
124 | 124 | ||
125 | if (priv->sMlmeFrame.IsInUsed != PACKET_FREE_TO_USE) { | 125 | if (priv->sMlmeFrame.IsInUsed != PACKET_FREE_TO_USE) { |
126 | priv->sMlmeFrame.wNumTxMMPDUDiscarded++; | 126 | priv->sMlmeFrame.wNumTxMMPDUDiscarded++; |
127 | return NETDEV_TX_BUSY; | 127 | kfree_skb(skb); |
128 | return; | ||
128 | } | 129 | } |
129 | 130 | ||
130 | priv->sMlmeFrame.IsInUsed = PACKET_COME_FROM_MLME; | 131 | priv->sMlmeFrame.IsInUsed = PACKET_COME_FROM_MLME; |
@@ -140,8 +141,6 @@ static int wbsoft_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
140 | */ | 141 | */ |
141 | 142 | ||
142 | Mds_Tx(priv); | 143 | Mds_Tx(priv); |
143 | |||
144 | return NETDEV_TX_OK; | ||
145 | } | 144 | } |
146 | 145 | ||
147 | static int wbsoft_start(struct ieee80211_hw *dev) | 146 | static int wbsoft_start(struct ieee80211_hw *dev) |