diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-commands.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-tx.c | 11 |
2 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h index e91507531923..cfd6c8423113 100644 --- a/drivers/net/wireless/iwlwifi/iwl-commands.h +++ b/drivers/net/wireless/iwlwifi/iwl-commands.h | |||
@@ -2612,6 +2612,7 @@ struct iwl_ssid_ie { | |||
2612 | #define TX_CMD_LIFE_TIME_INFINITE cpu_to_le32(0xFFFFFFFF) | 2612 | #define TX_CMD_LIFE_TIME_INFINITE cpu_to_le32(0xFFFFFFFF) |
2613 | #define IWL_GOOD_CRC_TH cpu_to_le16(1) | 2613 | #define IWL_GOOD_CRC_TH cpu_to_le16(1) |
2614 | #define IWL_MAX_SCAN_SIZE 1024 | 2614 | #define IWL_MAX_SCAN_SIZE 1024 |
2615 | #define IWL_MAX_CMD_SIZE 4096 | ||
2615 | #define IWL_MAX_PROBE_REQUEST 200 | 2616 | #define IWL_MAX_PROBE_REQUEST 200 |
2616 | 2617 | ||
2617 | /* | 2618 | /* |
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c index 8f4071562857..066491fc75f2 100644 --- a/drivers/net/wireless/iwlwifi/iwl-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-tx.c | |||
@@ -366,7 +366,7 @@ int iwl_tx_queue_init(struct iwl_priv *priv, struct iwl_tx_queue *txq, | |||
366 | for (i = 0; i < actual_slots; i++) { | 366 | for (i = 0; i < actual_slots; i++) { |
367 | /* only happens for cmd queue */ | 367 | /* only happens for cmd queue */ |
368 | if (i == slots_num) | 368 | if (i == slots_num) |
369 | len += IWL_MAX_SCAN_SIZE; | 369 | len = IWL_MAX_CMD_SIZE; |
370 | 370 | ||
371 | txq->cmd[i] = kmalloc(len, GFP_KERNEL); | 371 | txq->cmd[i] = kmalloc(len, GFP_KERNEL); |
372 | if (!txq->cmd[i]) | 372 | if (!txq->cmd[i]) |
@@ -1027,9 +1027,12 @@ int iwl_enqueue_hcmd(struct iwl_priv *priv, struct iwl_host_cmd *cmd) | |||
1027 | 1027 | ||
1028 | /* If any of the command structures end up being larger than | 1028 | /* If any of the command structures end up being larger than |
1029 | * the TFD_MAX_PAYLOAD_SIZE, and it sent as a 'small' command then | 1029 | * the TFD_MAX_PAYLOAD_SIZE, and it sent as a 'small' command then |
1030 | * we will need to increase the size of the TFD entries */ | 1030 | * we will need to increase the size of the TFD entries |
1031 | * Also, check to see if command buffer should not exceed the size | ||
1032 | * of device_cmd and max_cmd_size. */ | ||
1031 | BUG_ON((fix_size > TFD_MAX_PAYLOAD_SIZE) && | 1033 | BUG_ON((fix_size > TFD_MAX_PAYLOAD_SIZE) && |
1032 | !(cmd->flags & CMD_SIZE_HUGE)); | 1034 | !(cmd->flags & CMD_SIZE_HUGE)); |
1035 | BUG_ON(fix_size > IWL_MAX_CMD_SIZE); | ||
1033 | 1036 | ||
1034 | if (iwl_is_rfkill(priv) || iwl_is_ctkill(priv)) { | 1037 | if (iwl_is_rfkill(priv) || iwl_is_ctkill(priv)) { |
1035 | IWL_WARN(priv, "Not sending command - %s KILL\n", | 1038 | IWL_WARN(priv, "Not sending command - %s KILL\n", |
@@ -1073,8 +1076,8 @@ int iwl_enqueue_hcmd(struct iwl_priv *priv, struct iwl_host_cmd *cmd) | |||
1073 | if (cmd->flags & CMD_SIZE_HUGE) | 1076 | if (cmd->flags & CMD_SIZE_HUGE) |
1074 | out_cmd->hdr.sequence |= SEQ_HUGE_FRAME; | 1077 | out_cmd->hdr.sequence |= SEQ_HUGE_FRAME; |
1075 | len = sizeof(struct iwl_device_cmd); | 1078 | len = sizeof(struct iwl_device_cmd); |
1076 | len += (idx == TFD_CMD_SLOTS) ? IWL_MAX_SCAN_SIZE : 0; | 1079 | if (idx == TFD_CMD_SLOTS) |
1077 | 1080 | len = IWL_MAX_CMD_SIZE; | |
1078 | 1081 | ||
1079 | #ifdef CONFIG_IWLWIFI_DEBUG | 1082 | #ifdef CONFIG_IWLWIFI_DEBUG |
1080 | switch (out_cmd->hdr.cmd) { | 1083 | switch (out_cmd->hdr.cmd) { |