diff options
author | John W. Linville <linville@tuxdriver.com> | 2012-07-12 15:21:48 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-07-12 15:21:48 -0400 |
commit | 8a50ace27134c8ef2b9ca4c47dd91cb733f52a53 (patch) | |
tree | cb43f5d627f53645dc19b3a70ef0d0cf0263a684 /drivers/net/wireless/iwlwifi | |
parent | d07d152892aadd8dc3209ecef6788dfc83475676 (diff) | |
parent | 3ec4588231914344834805a6828551cd5c65afd8 (diff) |
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/commands.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/lib.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/main.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/rx.c | 44 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-config.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/2000.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/pcie/trans.c | 7 |
8 files changed, 20 insertions, 40 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/commands.h b/drivers/net/wireless/iwlwifi/dvm/commands.h index 97bea16f3592..4a361c55c543 100644 --- a/drivers/net/wireless/iwlwifi/dvm/commands.h +++ b/drivers/net/wireless/iwlwifi/dvm/commands.h | |||
@@ -1905,6 +1905,7 @@ struct iwl_bt_cmd { | |||
1905 | #define IWLAGN_BT_PRIO_BOOST_MAX 0xFF | 1905 | #define IWLAGN_BT_PRIO_BOOST_MAX 0xFF |
1906 | #define IWLAGN_BT_PRIO_BOOST_MIN 0x00 | 1906 | #define IWLAGN_BT_PRIO_BOOST_MIN 0x00 |
1907 | #define IWLAGN_BT_PRIO_BOOST_DEFAULT 0xF0 | 1907 | #define IWLAGN_BT_PRIO_BOOST_DEFAULT 0xF0 |
1908 | #define IWLAGN_BT_PRIO_BOOST_DEFAULT32 0xF0F0F0F0 | ||
1908 | 1909 | ||
1909 | #define IWLAGN_BT_MAX_KILL_DEFAULT 5 | 1910 | #define IWLAGN_BT_MAX_KILL_DEFAULT 5 |
1910 | 1911 | ||
diff --git a/drivers/net/wireless/iwlwifi/dvm/lib.c b/drivers/net/wireless/iwlwifi/dvm/lib.c index 207ae91a83aa..bef88c1a2c9b 100644 --- a/drivers/net/wireless/iwlwifi/dvm/lib.c +++ b/drivers/net/wireless/iwlwifi/dvm/lib.c | |||
@@ -265,6 +265,8 @@ void iwlagn_send_advance_bt_config(struct iwl_priv *priv) | |||
265 | bt_cmd_v2.tx_prio_boost = 0; | 265 | bt_cmd_v2.tx_prio_boost = 0; |
266 | bt_cmd_v2.rx_prio_boost = 0; | 266 | bt_cmd_v2.rx_prio_boost = 0; |
267 | } else { | 267 | } else { |
268 | /* older version only has 8 bits */ | ||
269 | WARN_ON(priv->cfg->bt_params->bt_prio_boost & ~0xFF); | ||
268 | bt_cmd_v1.prio_boost = | 270 | bt_cmd_v1.prio_boost = |
269 | priv->cfg->bt_params->bt_prio_boost; | 271 | priv->cfg->bt_params->bt_prio_boost; |
270 | bt_cmd_v1.tx_prio_boost = 0; | 272 | bt_cmd_v1.tx_prio_boost = 0; |
diff --git a/drivers/net/wireless/iwlwifi/dvm/main.c b/drivers/net/wireless/iwlwifi/dvm/main.c index 612f05d757db..84d3db5aa506 100644 --- a/drivers/net/wireless/iwlwifi/dvm/main.c +++ b/drivers/net/wireless/iwlwifi/dvm/main.c | |||
@@ -1232,7 +1232,6 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans, | |||
1232 | struct iwl_trans_config trans_cfg; | 1232 | struct iwl_trans_config trans_cfg; |
1233 | static const u8 no_reclaim_cmds[] = { | 1233 | static const u8 no_reclaim_cmds[] = { |
1234 | REPLY_RX_PHY_CMD, | 1234 | REPLY_RX_PHY_CMD, |
1235 | REPLY_RX, | ||
1236 | REPLY_RX_MPDU_CMD, | 1235 | REPLY_RX_MPDU_CMD, |
1237 | REPLY_COMPRESSED_BA, | 1236 | REPLY_COMPRESSED_BA, |
1238 | STATISTICS_NOTIFICATION, | 1237 | STATISTICS_NOTIFICATION, |
diff --git a/drivers/net/wireless/iwlwifi/dvm/rx.c b/drivers/net/wireless/iwlwifi/dvm/rx.c index c1f7a18e08dd..fee5cffa1669 100644 --- a/drivers/net/wireless/iwlwifi/dvm/rx.c +++ b/drivers/net/wireless/iwlwifi/dvm/rx.c | |||
@@ -88,7 +88,6 @@ const char *iwl_dvm_cmd_strings[REPLY_MAX] = { | |||
88 | IWL_CMD_ENTRY(REPLY_PHY_CALIBRATION_CMD), | 88 | IWL_CMD_ENTRY(REPLY_PHY_CALIBRATION_CMD), |
89 | IWL_CMD_ENTRY(REPLY_RX_PHY_CMD), | 89 | IWL_CMD_ENTRY(REPLY_RX_PHY_CMD), |
90 | IWL_CMD_ENTRY(REPLY_RX_MPDU_CMD), | 90 | IWL_CMD_ENTRY(REPLY_RX_MPDU_CMD), |
91 | IWL_CMD_ENTRY(REPLY_RX), | ||
92 | IWL_CMD_ENTRY(REPLY_COMPRESSED_BA), | 91 | IWL_CMD_ENTRY(REPLY_COMPRESSED_BA), |
93 | IWL_CMD_ENTRY(CALIBRATION_CFG_CMD), | 92 | IWL_CMD_ENTRY(CALIBRATION_CFG_CMD), |
94 | IWL_CMD_ENTRY(CALIBRATION_RES_NOTIFICATION), | 93 | IWL_CMD_ENTRY(CALIBRATION_RES_NOTIFICATION), |
@@ -895,8 +894,7 @@ static int iwlagn_calc_rssi(struct iwl_priv *priv, | |||
895 | return max_rssi - agc - IWLAGN_RSSI_OFFSET; | 894 | return max_rssi - agc - IWLAGN_RSSI_OFFSET; |
896 | } | 895 | } |
897 | 896 | ||
898 | /* Called for REPLY_RX (legacy ABG frames), or | 897 | /* Called for REPLY_RX_MPDU_CMD */ |
899 | * REPLY_RX_MPDU_CMD (HT high-throughput N frames). */ | ||
900 | static int iwlagn_rx_reply_rx(struct iwl_priv *priv, | 898 | static int iwlagn_rx_reply_rx(struct iwl_priv *priv, |
901 | struct iwl_rx_cmd_buffer *rxb, | 899 | struct iwl_rx_cmd_buffer *rxb, |
902 | struct iwl_device_cmd *cmd) | 900 | struct iwl_device_cmd *cmd) |
@@ -911,37 +909,17 @@ static int iwlagn_rx_reply_rx(struct iwl_priv *priv, | |||
911 | u32 ampdu_status; | 909 | u32 ampdu_status; |
912 | u32 rate_n_flags; | 910 | u32 rate_n_flags; |
913 | 911 | ||
914 | /** | 912 | if (!priv->last_phy_res_valid) { |
915 | * REPLY_RX and REPLY_RX_MPDU_CMD are handled differently. | 913 | IWL_ERR(priv, "MPDU frame without cached PHY data\n"); |
916 | * REPLY_RX: physical layer info is in this buffer | 914 | return 0; |
917 | * REPLY_RX_MPDU_CMD: physical layer info was sent in separate | ||
918 | * command and cached in priv->last_phy_res | ||
919 | * | ||
920 | * Here we set up local variables depending on which command is | ||
921 | * received. | ||
922 | */ | ||
923 | if (pkt->hdr.cmd == REPLY_RX) { | ||
924 | phy_res = (struct iwl_rx_phy_res *)pkt->data; | ||
925 | header = (struct ieee80211_hdr *)(pkt->data + sizeof(*phy_res) | ||
926 | + phy_res->cfg_phy_cnt); | ||
927 | |||
928 | len = le16_to_cpu(phy_res->byte_count); | ||
929 | rx_pkt_status = *(__le32 *)(pkt->data + sizeof(*phy_res) + | ||
930 | phy_res->cfg_phy_cnt + len); | ||
931 | ampdu_status = le32_to_cpu(rx_pkt_status); | ||
932 | } else { | ||
933 | if (!priv->last_phy_res_valid) { | ||
934 | IWL_ERR(priv, "MPDU frame without cached PHY data\n"); | ||
935 | return 0; | ||
936 | } | ||
937 | phy_res = &priv->last_phy_res; | ||
938 | amsdu = (struct iwl_rx_mpdu_res_start *)pkt->data; | ||
939 | header = (struct ieee80211_hdr *)(pkt->data + sizeof(*amsdu)); | ||
940 | len = le16_to_cpu(amsdu->byte_count); | ||
941 | rx_pkt_status = *(__le32 *)(pkt->data + sizeof(*amsdu) + len); | ||
942 | ampdu_status = iwlagn_translate_rx_status(priv, | ||
943 | le32_to_cpu(rx_pkt_status)); | ||
944 | } | 915 | } |
916 | phy_res = &priv->last_phy_res; | ||
917 | amsdu = (struct iwl_rx_mpdu_res_start *)pkt->data; | ||
918 | header = (struct ieee80211_hdr *)(pkt->data + sizeof(*amsdu)); | ||
919 | len = le16_to_cpu(amsdu->byte_count); | ||
920 | rx_pkt_status = *(__le32 *)(pkt->data + sizeof(*amsdu) + len); | ||
921 | ampdu_status = iwlagn_translate_rx_status(priv, | ||
922 | le32_to_cpu(rx_pkt_status)); | ||
945 | 923 | ||
946 | if ((unlikely(phy_res->cfg_phy_cnt > 20))) { | 924 | if ((unlikely(phy_res->cfg_phy_cnt > 20))) { |
947 | IWL_DEBUG_DROP(priv, "dsp size out of range [0,20]: %d\n", | 925 | IWL_DEBUG_DROP(priv, "dsp size out of range [0,20]: %d\n", |
diff --git a/drivers/net/wireless/iwlwifi/iwl-config.h b/drivers/net/wireless/iwlwifi/iwl-config.h index 10e47938b635..87f465a49df1 100644 --- a/drivers/net/wireless/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/iwlwifi/iwl-config.h | |||
@@ -177,7 +177,7 @@ struct iwl_base_params { | |||
177 | struct iwl_bt_params { | 177 | struct iwl_bt_params { |
178 | bool advanced_bt_coexist; | 178 | bool advanced_bt_coexist; |
179 | u8 bt_init_traffic_load; | 179 | u8 bt_init_traffic_load; |
180 | u8 bt_prio_boost; | 180 | u32 bt_prio_boost; |
181 | u16 agg_time_limit; | 181 | u16 agg_time_limit; |
182 | bool bt_sco_disable; | 182 | bool bt_sco_disable; |
183 | bool bt_session_2; | 183 | bool bt_session_2; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h index 867d8e194da4..92576a3e84ef 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans.h +++ b/drivers/net/wireless/iwlwifi/iwl-trans.h | |||
@@ -458,6 +458,7 @@ struct iwl_trans { | |||
458 | /* The following fields are internal only */ | 458 | /* The following fields are internal only */ |
459 | struct kmem_cache *dev_cmd_pool; | 459 | struct kmem_cache *dev_cmd_pool; |
460 | size_t dev_cmd_headroom; | 460 | size_t dev_cmd_headroom; |
461 | char dev_cmd_pool_name[50]; | ||
461 | 462 | ||
462 | /* pointer to trans specific struct */ | 463 | /* pointer to trans specific struct */ |
463 | /*Ensure that this pointer will always be aligned to sizeof pointer */ | 464 | /*Ensure that this pointer will always be aligned to sizeof pointer */ |
diff --git a/drivers/net/wireless/iwlwifi/pcie/2000.c b/drivers/net/wireless/iwlwifi/pcie/2000.c index fd4e78f56fa6..9fbde32f7559 100644 --- a/drivers/net/wireless/iwlwifi/pcie/2000.c +++ b/drivers/net/wireless/iwlwifi/pcie/2000.c | |||
@@ -112,7 +112,7 @@ static const struct iwl_bt_params iwl2030_bt_params = { | |||
112 | .advanced_bt_coexist = true, | 112 | .advanced_bt_coexist = true, |
113 | .agg_time_limit = BT_AGG_THRESHOLD_DEF, | 113 | .agg_time_limit = BT_AGG_THRESHOLD_DEF, |
114 | .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE, | 114 | .bt_init_traffic_load = IWL_BT_COEX_TRAFFIC_LOAD_NONE, |
115 | .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT, | 115 | .bt_prio_boost = IWLAGN_BT_PRIO_BOOST_DEFAULT32, |
116 | .bt_sco_disable = true, | 116 | .bt_sco_disable = true, |
117 | .bt_session_2 = true, | 117 | .bt_session_2 = true, |
118 | }; | 118 | }; |
diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c index 203d575e4493..69bf6156fdf6 100644 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c | |||
@@ -2080,7 +2080,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, | |||
2080 | { | 2080 | { |
2081 | struct iwl_trans_pcie *trans_pcie; | 2081 | struct iwl_trans_pcie *trans_pcie; |
2082 | struct iwl_trans *trans; | 2082 | struct iwl_trans *trans; |
2083 | char cmd_pool_name[100]; | ||
2084 | u16 pci_cmd; | 2083 | u16 pci_cmd; |
2085 | int err; | 2084 | int err; |
2086 | 2085 | ||
@@ -2178,12 +2177,12 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, | |||
2178 | init_waitqueue_head(&trans->wait_command_queue); | 2177 | init_waitqueue_head(&trans->wait_command_queue); |
2179 | spin_lock_init(&trans->reg_lock); | 2178 | spin_lock_init(&trans->reg_lock); |
2180 | 2179 | ||
2181 | snprintf(cmd_pool_name, sizeof(cmd_pool_name), "iwl_cmd_pool:%s", | 2180 | snprintf(trans->dev_cmd_pool_name, sizeof(trans->dev_cmd_pool_name), |
2182 | dev_name(trans->dev)); | 2181 | "iwl_cmd_pool:%s", dev_name(trans->dev)); |
2183 | 2182 | ||
2184 | trans->dev_cmd_headroom = 0; | 2183 | trans->dev_cmd_headroom = 0; |
2185 | trans->dev_cmd_pool = | 2184 | trans->dev_cmd_pool = |
2186 | kmem_cache_create(cmd_pool_name, | 2185 | kmem_cache_create(trans->dev_cmd_pool_name, |
2187 | sizeof(struct iwl_device_cmd) | 2186 | sizeof(struct iwl_device_cmd) |
2188 | + trans->dev_cmd_headroom, | 2187 | + trans->dev_cmd_headroom, |
2189 | sizeof(void *), | 2188 | sizeof(void *), |