hdr_len = ieee80211_hdrlen(fc);
  
 -      /* Find index into station table for destination station */
 -      sta_id = iwl_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_priv;
 +      /* 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_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;
++                      goto drop_unlock_priv;
 +              }
        }
  
        IWL_DEBUG_TX(priv, "station Id %d\n", sta_id);