|
@@ -1354,6 +1354,20 @@ static int iwlagn_mac_add_interface(struct ieee80211_hw *hw,
|
|
|
vif_priv->ctx = ctx;
|
|
|
ctx->vif = vif;
|
|
|
|
|
|
+ /*
|
|
|
+ * In SNIFFER device type, the firmware reports the FCS to
|
|
|
+ * the host, rather than snipping it off. Unfortunately,
|
|
|
+ * mac80211 doesn't (yet) provide a per-packet flag for
|
|
|
+ * this, so that we have to set the hardware flag based
|
|
|
+ * on the interfaces added. As the monitor interface can
|
|
|
+ * only be present by itself, and will be removed before
|
|
|
+ * other interfaces are added, this is safe.
|
|
|
+ */
|
|
|
+ if (vif->type == NL80211_IFTYPE_MONITOR)
|
|
|
+ priv->hw->flags |= IEEE80211_HW_RX_INCLUDES_FCS;
|
|
|
+ else
|
|
|
+ priv->hw->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS;
|
|
|
+
|
|
|
err = iwl_setup_interface(priv, ctx);
|
|
|
if (!err || reset)
|
|
|
goto out;
|