aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/dvm/mac80211.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/dvm/mac80211.c')
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/mac80211.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/mac80211.c b/drivers/net/wireless/iwlwifi/dvm/mac80211.c
index a275eb902b7..c862c090634 100644
--- a/drivers/net/wireless/iwlwifi/dvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/dvm/mac80211.c
@@ -524,7 +524,7 @@ static void iwlagn_mac_tx(struct ieee80211_hw *hw,
524 ieee80211_get_tx_rate(hw, IEEE80211_SKB_CB(skb))->bitrate); 524 ieee80211_get_tx_rate(hw, IEEE80211_SKB_CB(skb))->bitrate);
525 525
526 if (iwlagn_tx_skb(priv, control->sta, skb)) 526 if (iwlagn_tx_skb(priv, control->sta, skb))
527 dev_kfree_skb_any(skb); 527 ieee80211_free_txskb(hw, skb);
528} 528}
529 529
530static void iwlagn_mac_update_tkip_key(struct ieee80211_hw *hw, 530static void iwlagn_mac_update_tkip_key(struct ieee80211_hw *hw,
@@ -1357,6 +1357,20 @@ static int iwlagn_mac_add_interface(struct ieee80211_hw *hw,
1357 vif_priv->ctx = ctx; 1357 vif_priv->ctx = ctx;
1358 ctx->vif = vif; 1358 ctx->vif = vif;
1359 1359
1360 /*
1361 * In SNIFFER device type, the firmware reports the FCS to
1362 * the host, rather than snipping it off. Unfortunately,
1363 * mac80211 doesn't (yet) provide a per-packet flag for
1364 * this, so that we have to set the hardware flag based
1365 * on the interfaces added. As the monitor interface can
1366 * only be present by itself, and will be removed before
1367 * other interfaces are added, this is safe.
1368 */
1369 if (vif->type == NL80211_IFTYPE_MONITOR)
1370 priv->hw->flags |= IEEE80211_HW_RX_INCLUDES_FCS;
1371 else
1372 priv->hw->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS;
1373
1360 err = iwl_setup_interface(priv, ctx); 1374 err = iwl_setup_interface(priv, ctx);
1361 if (!err || reset) 1375 if (!err || reset)
1362 goto out; 1376 goto out;