diff options
| -rw-r--r-- | drivers/net/wireless/b43/main.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlegacy/iwl-4965-tx.c | 18 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlegacy/iwl-led.c | 20 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlegacy/iwl4965-base.c | 8 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 17 |
5 files changed, 47 insertions, 17 deletions
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index d59b0168c14a..5af40d9170a0 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
| @@ -72,6 +72,7 @@ MODULE_FIRMWARE("b43/ucode11.fw"); | |||
| 72 | MODULE_FIRMWARE("b43/ucode13.fw"); | 72 | MODULE_FIRMWARE("b43/ucode13.fw"); |
| 73 | MODULE_FIRMWARE("b43/ucode14.fw"); | 73 | MODULE_FIRMWARE("b43/ucode14.fw"); |
| 74 | MODULE_FIRMWARE("b43/ucode15.fw"); | 74 | MODULE_FIRMWARE("b43/ucode15.fw"); |
| 75 | MODULE_FIRMWARE("b43/ucode16_mimo.fw"); | ||
| 75 | MODULE_FIRMWARE("b43/ucode5.fw"); | 76 | MODULE_FIRMWARE("b43/ucode5.fw"); |
| 76 | MODULE_FIRMWARE("b43/ucode9.fw"); | 77 | MODULE_FIRMWARE("b43/ucode9.fw"); |
| 77 | 78 | ||
diff --git a/drivers/net/wireless/iwlegacy/iwl-4965-tx.c b/drivers/net/wireless/iwlegacy/iwl-4965-tx.c index fbec88d48f1b..79ac081832fb 100644 --- a/drivers/net/wireless/iwlegacy/iwl-4965-tx.c +++ b/drivers/net/wireless/iwlegacy/iwl-4965-tx.c | |||
| @@ -316,12 +316,18 @@ int iwl4965_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
| 316 | 316 | ||
| 317 | hdr_len = ieee80211_hdrlen(fc); | 317 | hdr_len = ieee80211_hdrlen(fc); |
| 318 | 318 | ||
| 319 | /* Find index into station table for destination station */ | 319 | /* For management frames use broadcast id to do not break aggregation */ |
| 320 | sta_id = iwl_legacy_sta_id_or_broadcast(priv, ctx, info->control.sta); | 320 | if (!ieee80211_is_data(fc)) |
| 321 | if (sta_id == IWL_INVALID_STATION) { | 321 | sta_id = ctx->bcast_sta_id; |
| 322 | IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n", | 322 | else { |
| 323 | hdr->addr1); | 323 | /* Find index into station table for destination station */ |
| 324 | goto drop_unlock; | 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 | } | ||
| 325 | } | 331 | } |
| 326 | 332 | ||
| 327 | IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); | 333 | IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); |
diff --git a/drivers/net/wireless/iwlegacy/iwl-led.c b/drivers/net/wireless/iwlegacy/iwl-led.c index 15eb8b707157..bda0d61b2c0d 100644 --- a/drivers/net/wireless/iwlegacy/iwl-led.c +++ b/drivers/net/wireless/iwlegacy/iwl-led.c | |||
| @@ -48,8 +48,21 @@ module_param(led_mode, int, S_IRUGO); | |||
| 48 | MODULE_PARM_DESC(led_mode, "0=system default, " | 48 | MODULE_PARM_DESC(led_mode, "0=system default, " |
| 49 | "1=On(RF On)/Off(RF Off), 2=blinking"); | 49 | "1=On(RF On)/Off(RF Off), 2=blinking"); |
| 50 | 50 | ||
| 51 | /* Throughput OFF time(ms) ON time (ms) | ||
| 52 | * >300 25 25 | ||
| 53 | * >200 to 300 40 40 | ||
| 54 | * >100 to 200 55 55 | ||
| 55 | * >70 to 100 65 65 | ||
| 56 | * >50 to 70 75 75 | ||
| 57 | * >20 to 50 85 85 | ||
| 58 | * >10 to 20 95 95 | ||
| 59 | * >5 to 10 110 110 | ||
| 60 | * >1 to 5 130 130 | ||
| 61 | * >0 to 1 167 167 | ||
| 62 | * <=0 SOLID ON | ||
| 63 | */ | ||
| 51 | static const struct ieee80211_tpt_blink iwl_blink[] = { | 64 | static const struct ieee80211_tpt_blink iwl_blink[] = { |
| 52 | { .throughput = 0 * 1024 - 1, .blink_time = 334 }, | 65 | { .throughput = 0, .blink_time = 334 }, |
| 53 | { .throughput = 1 * 1024 - 1, .blink_time = 260 }, | 66 | { .throughput = 1 * 1024 - 1, .blink_time = 260 }, |
| 54 | { .throughput = 5 * 1024 - 1, .blink_time = 220 }, | 67 | { .throughput = 5 * 1024 - 1, .blink_time = 220 }, |
| 55 | { .throughput = 10 * 1024 - 1, .blink_time = 190 }, | 68 | { .throughput = 10 * 1024 - 1, .blink_time = 190 }, |
| @@ -101,6 +114,11 @@ static int iwl_legacy_led_cmd(struct iwl_priv *priv, | |||
| 101 | if (priv->blink_on == on && priv->blink_off == off) | 114 | if (priv->blink_on == on && priv->blink_off == off) |
| 102 | return 0; | 115 | return 0; |
| 103 | 116 | ||
| 117 | if (off == 0) { | ||
| 118 | /* led is SOLID_ON */ | ||
| 119 | on = IWL_LED_SOLID; | ||
| 120 | } | ||
| 121 | |||
| 104 | IWL_DEBUG_LED(priv, "Led blink time compensation=%u\n", | 122 | IWL_DEBUG_LED(priv, "Led blink time compensation=%u\n", |
| 105 | priv->cfg->base_params->led_compensation); | 123 | priv->cfg->base_params->led_compensation); |
| 106 | led_cmd.on = iwl_legacy_blink_compensation(priv, on, | 124 | led_cmd.on = iwl_legacy_blink_compensation(priv, on, |
diff --git a/drivers/net/wireless/iwlegacy/iwl4965-base.c b/drivers/net/wireless/iwlegacy/iwl4965-base.c index d484c3678163..a62fe24ee594 100644 --- a/drivers/net/wireless/iwlegacy/iwl4965-base.c +++ b/drivers/net/wireless/iwlegacy/iwl4965-base.c | |||
| @@ -2984,15 +2984,15 @@ static void iwl4965_bg_txpower_work(struct work_struct *work) | |||
| 2984 | struct iwl_priv *priv = container_of(work, struct iwl_priv, | 2984 | struct iwl_priv *priv = container_of(work, struct iwl_priv, |
| 2985 | txpower_work); | 2985 | txpower_work); |
| 2986 | 2986 | ||
| 2987 | mutex_lock(&priv->mutex); | ||
| 2988 | |||
| 2987 | /* If a scan happened to start before we got here | 2989 | /* If a scan happened to start before we got here |
| 2988 | * then just return; the statistics notification will | 2990 | * then just return; the statistics notification will |
| 2989 | * kick off another scheduled work to compensate for | 2991 | * kick off another scheduled work to compensate for |
| 2990 | * any temperature delta we missed here. */ | 2992 | * any temperature delta we missed here. */ |
| 2991 | if (test_bit(STATUS_EXIT_PENDING, &priv->status) || | 2993 | if (test_bit(STATUS_EXIT_PENDING, &priv->status) || |
| 2992 | test_bit(STATUS_SCANNING, &priv->status)) | 2994 | test_bit(STATUS_SCANNING, &priv->status)) |
| 2993 | return; | 2995 | goto out; |
| 2994 | |||
| 2995 | mutex_lock(&priv->mutex); | ||
| 2996 | 2996 | ||
| 2997 | /* Regardless of if we are associated, we must reconfigure the | 2997 | /* Regardless of if we are associated, we must reconfigure the |
| 2998 | * TX power since frames can be sent on non-radar channels while | 2998 | * TX power since frames can be sent on non-radar channels while |
| @@ -3002,7 +3002,7 @@ static void iwl4965_bg_txpower_work(struct work_struct *work) | |||
| 3002 | /* Update last_temperature to keep is_calib_needed from running | 3002 | /* Update last_temperature to keep is_calib_needed from running |
| 3003 | * when it isn't needed... */ | 3003 | * when it isn't needed... */ |
| 3004 | priv->last_temperature = priv->temperature; | 3004 | priv->last_temperature = priv->temperature; |
| 3005 | 3005 | out: | |
| 3006 | mutex_unlock(&priv->mutex); | 3006 | mutex_unlock(&priv->mutex); |
| 3007 | } | 3007 | } |
| 3008 | 3008 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c index 2dd7d54a796f..0712b67283a4 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c | |||
| @@ -568,12 +568,17 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
| 568 | 568 | ||
| 569 | hdr_len = ieee80211_hdrlen(fc); | 569 | hdr_len = ieee80211_hdrlen(fc); |
| 570 | 570 | ||
| 571 | /* Find index into station table for destination station */ | 571 | /* For management frames use broadcast id to do not break aggregation */ |
| 572 | sta_id = iwl_sta_id_or_broadcast(priv, ctx, info->control.sta); | 572 | if (!ieee80211_is_data(fc)) |
| 573 | if (sta_id == IWL_INVALID_STATION) { | 573 | sta_id = ctx->bcast_sta_id; |
| 574 | IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n", | 574 | else { |
| 575 | hdr->addr1); | 575 | /* Find index into station table for destination station */ |
| 576 | goto drop_unlock; | 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 | } | ||
| 577 | } | 582 | } |
| 578 | 583 | ||
| 579 | IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); | 584 | IWL_DEBUG_TX(priv, "station Id %d\n", sta_id); |
