···316317 hdr_len = ieee80211_hdrlen(fc);318319- /* Find index into station table for destination station */320- sta_id = iwl_legacy_sta_id_or_broadcast(priv, ctx, info->control.sta);321- if (sta_id == IWL_INVALID_STATION) {322- IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",323- hdr->addr1);324- goto drop_unlock;000000325 }326327 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id);
···316317 hdr_len = ieee80211_hdrlen(fc);318319+ /* For management frames use broadcast id to do not break aggregation */320+ if (!ieee80211_is_data(fc))321+ sta_id = ctx->bcast_sta_id;322+ else {323+ /* Find index into station table for destination station */324+ sta_id = iwl_legacy_sta_id_or_broadcast(priv, ctx, info->control.sta);325+326+ if (sta_id == IWL_INVALID_STATION) {327+ IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",328+ hdr->addr1);329+ goto drop_unlock;330+ }331 }332333 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id);
···48MODULE_PARM_DESC(led_mode, "0=system default, "49 "1=On(RF On)/Off(RF Off), 2=blinking");5051+/* Throughput OFF time(ms) ON time (ms)52+ * >300 25 2553+ * >200 to 300 40 4054+ * >100 to 200 55 5555+ * >70 to 100 65 6556+ * >50 to 70 75 7557+ * >20 to 50 85 8558+ * >10 to 20 95 9559+ * >5 to 10 110 11060+ * >1 to 5 130 13061+ * >0 to 1 167 16762+ * <=0 SOLID ON63+ */64static const struct ieee80211_tpt_blink iwl_blink[] = {65+ { .throughput = 0, .blink_time = 334 },66 { .throughput = 1 * 1024 - 1, .blink_time = 260 },67 { .throughput = 5 * 1024 - 1, .blink_time = 220 },68 { .throughput = 10 * 1024 - 1, .blink_time = 190 },···100101 if (priv->blink_on == on && priv->blink_off == off)102 return 0;103+104+ if (off == 0) {105+ /* led is SOLID_ON */106+ on = IWL_LED_SOLID;107+ }108109 IWL_DEBUG_LED(priv, "Led blink time compensation=%u\n",110 priv->cfg->base_params->led_compensation);
+4-4
drivers/net/wireless/iwlegacy/iwl4965-base.c
···2984 struct iwl_priv *priv = container_of(work, struct iwl_priv,2985 txpower_work);2986002987 /* If a scan happened to start before we got here2988 * then just return; the statistics notification will2989 * kick off another scheduled work to compensate for2990 * any temperature delta we missed here. */2991 if (test_bit(STATUS_EXIT_PENDING, &priv->status) ||2992 test_bit(STATUS_SCANNING, &priv->status))2993- return;2994-2995- mutex_lock(&priv->mutex);29962997 /* Regardless of if we are associated, we must reconfigure the2998 * TX power since frames can be sent on non-radar channels while···3002 /* Update last_temperature to keep is_calib_needed from running3003 * when it isn't needed... */3004 priv->last_temperature = priv->temperature;3005-3006 mutex_unlock(&priv->mutex);3007}3008
···2984 struct iwl_priv *priv = container_of(work, struct iwl_priv,2985 txpower_work);29862987+ mutex_lock(&priv->mutex);2988+2989 /* If a scan happened to start before we got here2990 * then just return; the statistics notification will2991 * kick off another scheduled work to compensate for2992 * any temperature delta we missed here. */2993 if (test_bit(STATUS_EXIT_PENDING, &priv->status) ||2994 test_bit(STATUS_SCANNING, &priv->status))2995+ goto out;0029962997 /* Regardless of if we are associated, we must reconfigure the2998 * TX power since frames can be sent on non-radar channels while···3002 /* Update last_temperature to keep is_calib_needed from running3003 * when it isn't needed... */3004 priv->last_temperature = priv->temperature;3005+out:3006 mutex_unlock(&priv->mutex);3007}3008
+11-6
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
···568569 hdr_len = ieee80211_hdrlen(fc);570571- /* Find index into station table for destination station */572- sta_id = iwl_sta_id_or_broadcast(priv, ctx, info->control.sta);573- if (sta_id == IWL_INVALID_STATION) {574- IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",575- hdr->addr1);576- goto drop_unlock;00000577 }578579 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id);
···568569 hdr_len = ieee80211_hdrlen(fc);570571+ /* For management frames use broadcast id to do not break aggregation */572+ if (!ieee80211_is_data(fc))573+ sta_id = ctx->bcast_sta_id;574+ else {575+ /* Find index into station table for destination station */576+ sta_id = iwl_sta_id_or_broadcast(priv, ctx, info->control.sta);577+ if (sta_id == IWL_INVALID_STATION) {578+ IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n",579+ hdr->addr1);580+ goto drop_unlock;581+ }582 }583584 IWL_DEBUG_TX(priv, "station Id %d\n", sta_id);