aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2016-08-04 02:57:59 -0400
committerLuca Coelho <luciano.coelho@intel.com>2016-09-19 02:14:11 -0400
commit61b0f5d7c41408ff523a5cd3925feafa82b971f5 (patch)
tree6075337ef1cf77abb4e65d3fb54f6f569b07ee02
parent5a710b8606cc3ec12f60a400248a051743ee35d1 (diff)
iwlwifi: mvm: compare full command ID
When comparing command IDs, the group should be taken into account so the same command/notification from a different group doesn't trigger anything unexpected. Fix this by comparing to the wide ID. Fixes: commit 1738d60b31d7 ("iwlwifi: mvm: handle RX MPDUs separately") Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/ops.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
index 43ea1e5fdfc6..de34c9f4f0f4 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
@@ -966,10 +966,11 @@ static void iwl_mvm_rx(struct iwl_op_mode *op_mode,
966{ 966{
967 struct iwl_rx_packet *pkt = rxb_addr(rxb); 967 struct iwl_rx_packet *pkt = rxb_addr(rxb);
968 struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); 968 struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode);
969 u16 cmd = WIDE_ID(pkt->hdr.group_id, pkt->hdr.cmd);
969 970
970 if (likely(pkt->hdr.cmd == REPLY_RX_MPDU_CMD)) 971 if (likely(cmd == WIDE_ID(LEGACY_GROUP, REPLY_RX_MPDU_CMD)))
971 iwl_mvm_rx_rx_mpdu(mvm, napi, rxb); 972 iwl_mvm_rx_rx_mpdu(mvm, napi, rxb);
972 else if (pkt->hdr.cmd == REPLY_RX_PHY_CMD) 973 else if (cmd == WIDE_ID(LEGACY_GROUP, REPLY_RX_PHY_CMD))
973 iwl_mvm_rx_rx_phy_cmd(mvm, rxb); 974 iwl_mvm_rx_rx_phy_cmd(mvm, rxb);
974 else 975 else
975 iwl_mvm_rx_common(mvm, rxb, pkt); 976 iwl_mvm_rx_common(mvm, rxb, pkt);
@@ -981,13 +982,14 @@ static void iwl_mvm_rx_mq(struct iwl_op_mode *op_mode,
981{ 982{
982 struct iwl_rx_packet *pkt = rxb_addr(rxb); 983 struct iwl_rx_packet *pkt = rxb_addr(rxb);
983 struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); 984 struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode);
985 u16 cmd = WIDE_ID(pkt->hdr.group_id, pkt->hdr.cmd);
984 986
985 if (likely(pkt->hdr.cmd == REPLY_RX_MPDU_CMD)) 987 if (likely(cmd == WIDE_ID(LEGACY_GROUP, REPLY_RX_MPDU_CMD)))
986 iwl_mvm_rx_mpdu_mq(mvm, napi, rxb, 0); 988 iwl_mvm_rx_mpdu_mq(mvm, napi, rxb, 0);
987 else if (unlikely(pkt->hdr.group_id == DATA_PATH_GROUP && 989 else if (unlikely(cmd == WIDE_ID(DATA_PATH_GROUP,
988 pkt->hdr.cmd == RX_QUEUES_NOTIFICATION)) 990 RX_QUEUES_NOTIFICATION)))
989 iwl_mvm_rx_queue_notif(mvm, rxb, 0); 991 iwl_mvm_rx_queue_notif(mvm, rxb, 0);
990 else if (pkt->hdr.cmd == FRAME_RELEASE) 992 else if (cmd == WIDE_ID(LEGACY_GROUP, FRAME_RELEASE))
991 iwl_mvm_rx_frame_release(mvm, napi, rxb, 0); 993 iwl_mvm_rx_frame_release(mvm, napi, rxb, 0);
992 else 994 else
993 iwl_mvm_rx_common(mvm, rxb, pkt); 995 iwl_mvm_rx_common(mvm, rxb, pkt);
@@ -1666,13 +1668,14 @@ static void iwl_mvm_rx_mq_rss(struct iwl_op_mode *op_mode,
1666{ 1668{
1667 struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode); 1669 struct iwl_mvm *mvm = IWL_OP_MODE_GET_MVM(op_mode);
1668 struct iwl_rx_packet *pkt = rxb_addr(rxb); 1670 struct iwl_rx_packet *pkt = rxb_addr(rxb);
1671 u16 cmd = WIDE_ID(pkt->hdr.group_id, pkt->hdr.cmd);
1669 1672
1670 if (unlikely(pkt->hdr.cmd == FRAME_RELEASE)) 1673 if (unlikely(cmd == WIDE_ID(LEGACY_GROUP, FRAME_RELEASE)))
1671 iwl_mvm_rx_frame_release(mvm, napi, rxb, queue); 1674 iwl_mvm_rx_frame_release(mvm, napi, rxb, queue);
1672 else if (unlikely(pkt->hdr.cmd == RX_QUEUES_NOTIFICATION && 1675 else if (unlikely(cmd == WIDE_ID(DATA_PATH_GROUP,
1673 pkt->hdr.group_id == DATA_PATH_GROUP)) 1676 RX_QUEUES_NOTIFICATION)))
1674 iwl_mvm_rx_queue_notif(mvm, rxb, queue); 1677 iwl_mvm_rx_queue_notif(mvm, rxb, queue);
1675 else if (likely(pkt->hdr.cmd == REPLY_RX_MPDU_CMD)) 1678 else if (likely(cmd == WIDE_ID(LEGACY_GROUP, REPLY_RX_MPDU_CMD)))
1676 iwl_mvm_rx_mpdu_mq(mvm, napi, rxb, queue); 1679 iwl_mvm_rx_mpdu_mq(mvm, napi, rxb, queue);
1677} 1680}
1678 1681