···316316317317 hdr_len = ieee80211_hdrlen(fc);318318319319- /* Find index into station table for destination station */320320- sta_id = iwl_legacy_sta_id_or_broadcast(priv, ctx, info->control.sta);321321- if (sta_id == IWL_INVALID_STATION) {322322- IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",323323- hdr->addr1);324324- goto drop_unlock;319319+ /* For management frames use broadcast id to do not break aggregation */320320+ if (!ieee80211_is_data(fc))321321+ sta_id = ctx->bcast_sta_id;322322+ else {323323+ /* Find index into station table for destination station */324324+ sta_id = iwl_legacy_sta_id_or_broadcast(priv, ctx, info->control.sta);325325+326326+ if (sta_id == IWL_INVALID_STATION) {327327+ IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",328328+ hdr->addr1);329329+ goto drop_unlock;330330+ }325331 }326332327333 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id);
+19-1
drivers/net/wireless/iwlegacy/iwl-led.c
···4848MODULE_PARM_DESC(led_mode, "0=system default, "4949 "1=On(RF On)/Off(RF Off), 2=blinking");50505151+/* Throughput OFF time(ms) ON time (ms)5252+ * >300 25 255353+ * >200 to 300 40 405454+ * >100 to 200 55 555555+ * >70 to 100 65 655656+ * >50 to 70 75 755757+ * >20 to 50 85 855858+ * >10 to 20 95 955959+ * >5 to 10 110 1106060+ * >1 to 5 130 1306161+ * >0 to 1 167 1676262+ * <=0 SOLID ON6363+ */5164static const struct ieee80211_tpt_blink iwl_blink[] = {5252- { .throughput = 0 * 1024 - 1, .blink_time = 334 },6565+ { .throughput = 0, .blink_time = 334 },5366 { .throughput = 1 * 1024 - 1, .blink_time = 260 },5467 { .throughput = 5 * 1024 - 1, .blink_time = 220 },5568 { .throughput = 10 * 1024 - 1, .blink_time = 190 },···113100114101 if (priv->blink_on == on && priv->blink_off == off)115102 return 0;103103+104104+ if (off == 0) {105105+ /* led is SOLID_ON */106106+ on = IWL_LED_SOLID;107107+ }116108117109 IWL_DEBUG_LED(priv, "Led blink time compensation=%u\n",118110 priv->cfg->base_params->led_compensation);
+4-4
drivers/net/wireless/iwlegacy/iwl4965-base.c
···29842984 struct iwl_priv *priv = container_of(work, struct iwl_priv,29852985 txpower_work);2986298629872987+ mutex_lock(&priv->mutex);29882988+29872989 /* If a scan happened to start before we got here29882990 * then just return; the statistics notification will29892991 * kick off another scheduled work to compensate for29902992 * any temperature delta we missed here. */29912993 if (test_bit(STATUS_EXIT_PENDING, &priv->status) ||29922994 test_bit(STATUS_SCANNING, &priv->status))29932993- return;29942994-29952995- mutex_lock(&priv->mutex);29952995+ goto out;2996299629972997 /* Regardless of if we are associated, we must reconfigure the29982998 * TX power since frames can be sent on non-radar channels while···30023002 /* Update last_temperature to keep is_calib_needed from running30033003 * when it isn't needed... */30043004 priv->last_temperature = priv->temperature;30053005-30053005+out:30063006 mutex_unlock(&priv->mutex);30073007}30083008
+11-6
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
···568568569569 hdr_len = ieee80211_hdrlen(fc);570570571571- /* Find index into station table for destination station */572572- sta_id = iwl_sta_id_or_broadcast(priv, ctx, info->control.sta);573573- if (sta_id == IWL_INVALID_STATION) {574574- IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",575575- hdr->addr1);576576- goto drop_unlock;571571+ /* For management frames use broadcast id to do not break aggregation */572572+ if (!ieee80211_is_data(fc))573573+ sta_id = ctx->bcast_sta_id;574574+ else {575575+ /* Find index into station table for destination station */576576+ sta_id = iwl_sta_id_or_broadcast(priv, ctx, info->control.sta);577577+ if (sta_id == IWL_INVALID_STATION) {578578+ IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",579579+ hdr->addr1);580580+ goto drop_unlock;581581+ }577582 }578583579584 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id);