Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / iwlwifi / mvm / mac-ctxt.c
index 2779235daa356457f05a3a5c46c0b2b6fa8fcff9..86e312a4f6291d53c1bb366ed13e7d2e1a73381d 100644 (file)
@@ -196,7 +196,7 @@ u32 iwl_mvm_mac_get_queues_mask(struct iwl_mvm *mvm,
        u32 qmask, ac;
 
        if (vif->type == NL80211_IFTYPE_P2P_DEVICE)
-               return BIT(IWL_OFFCHANNEL_QUEUE);
+               return BIT(IWL_MVM_OFFCHANNEL_QUEUE);
 
        qmask = (vif->cab_queue != IEEE80211_INVAL_HW_QUEUE) ?
                BIT(vif->cab_queue) : 0;
@@ -692,7 +692,12 @@ static int iwl_mvm_mac_ctxt_cmd_listener(struct iwl_mvm *mvm,
        WARN_ON(vif->type != NL80211_IFTYPE_MONITOR);
 
        iwl_mvm_mac_ctxt_cmd_common(mvm, vif, &cmd, action);
-       /* No other data to be filled */
+
+       cmd.filter_flags = cpu_to_le32(MAC_FILTER_IN_PROMISC |
+                                      MAC_FILTER_IN_CONTROL_AND_MGMT |
+                                      MAC_FILTER_IN_BEACON |
+                                      MAC_FILTER_IN_PROBE_REQUEST);
+
        return iwl_mvm_mac_ctxt_send_cmd(mvm, &cmd);
 }
 
@@ -798,7 +803,7 @@ static int iwl_mvm_mac_ctxt_send_beacon(struct iwl_mvm *mvm,
                                             TX_CMD_FLG_TSF);
 
        mvm->mgmt_last_antenna_idx =
-               iwl_mvm_next_antenna(mvm, mvm->nvm_data->valid_tx_ant,
+               iwl_mvm_next_antenna(mvm, iwl_fw_valid_tx_ant(mvm->fw),
                                     mvm->mgmt_last_antenna_idx);
 
        beacon_cmd.tx.rate_n_flags =
@@ -1013,3 +1018,22 @@ int iwl_mvm_mac_ctxt_remove(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
        mvmvif->uploaded = false;
        return 0;
 }
+
+int iwl_mvm_rx_beacon_notif(struct iwl_mvm *mvm,
+                           struct iwl_rx_cmd_buffer *rxb,
+                           struct iwl_device_cmd *cmd)
+{
+       struct iwl_rx_packet *pkt = rxb_addr(rxb);
+       struct iwl_beacon_notif *beacon = (void *)pkt->data;
+       u16 status __maybe_unused =
+               le16_to_cpu(beacon->beacon_notify_hdr.status.status);
+       u32 rate __maybe_unused =
+               le32_to_cpu(beacon->beacon_notify_hdr.initial_rate);
+
+       IWL_DEBUG_RX(mvm, "beacon status %#x retries:%d tsf:0x%16llX rate:%d\n",
+                    status & TX_STATUS_MSK,
+                    beacon->beacon_notify_hdr.failure_frame,
+                    le64_to_cpu(beacon->tsf),
+                    rate);
+       return 0;
+}