|
@@ -316,12 +316,18 @@ int iwl4965_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
|
|
|
|
|
|
hdr_len = ieee80211_hdrlen(fc);
|
|
|
|
|
|
- /* Find index into station table for destination station */
|
|
|
- sta_id = iwl_legacy_sta_id_or_broadcast(priv, ctx, info->control.sta);
|
|
|
- if (sta_id == IWL_INVALID_STATION) {
|
|
|
- IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",
|
|
|
- hdr->addr1);
|
|
|
- goto drop_unlock;
|
|
|
+ /* For management frames use broadcast id to do not break aggregation */
|
|
|
+ if (!ieee80211_is_data(fc))
|
|
|
+ sta_id = ctx->bcast_sta_id;
|
|
|
+ else {
|
|
|
+ /* Find index into station table for destination station */
|
|
|
+ sta_id = iwl_legacy_sta_id_or_broadcast(priv, ctx, info->control.sta);
|
|
|
+
|
|
|
+ if (sta_id == IWL_INVALID_STATION) {
|
|
|
+ IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",
|
|
|
+ hdr->addr1);
|
|
|
+ goto drop_unlock;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
IWL_DEBUG_TX(priv, "station Id %d\n", sta_id);
|