iwlwifi: mvm: add rxf and txf to dump data
[deliverable/linux.git] / drivers / net / wireless / iwlwifi / mvm / fw.c
index 52338b73722382b88ab7a730ee6b01fc0e6eac2d..2e12f41dd65b392bb00d7e269618fced44a55936 100644 (file)
@@ -400,6 +400,57 @@ out:
        return ret;
 }
 
+static void iwl_mvm_get_shared_mem_conf(struct iwl_mvm *mvm)
+{
+       struct iwl_host_cmd cmd = {
+               .id = SHARED_MEM_CFG,
+               .flags = CMD_WANT_SKB,
+               .data = { NULL, },
+               .len = { 0, },
+       };
+       struct iwl_rx_packet *pkt;
+       struct iwl_shared_mem_cfg *mem_cfg;
+       u32 i;
+
+       lockdep_assert_held(&mvm->mutex);
+
+       if (WARN_ON(iwl_mvm_send_cmd(mvm, &cmd)))
+               return;
+
+       pkt = cmd.resp_pkt;
+       if (pkt->hdr.flags & IWL_CMD_FAILED_MSK) {
+               IWL_ERR(mvm, "Bad return from SHARED_MEM_CFG (0x%08X)\n",
+                       pkt->hdr.flags);
+               goto exit;
+       }
+
+       mem_cfg = (void *)pkt->data;
+
+       mvm->shared_mem_cfg.shared_mem_addr =
+               le32_to_cpu(mem_cfg->shared_mem_addr);
+       mvm->shared_mem_cfg.shared_mem_size =
+               le32_to_cpu(mem_cfg->shared_mem_size);
+       mvm->shared_mem_cfg.sample_buff_addr =
+               le32_to_cpu(mem_cfg->sample_buff_addr);
+       mvm->shared_mem_cfg.sample_buff_size =
+               le32_to_cpu(mem_cfg->sample_buff_size);
+       mvm->shared_mem_cfg.txfifo_addr = le32_to_cpu(mem_cfg->txfifo_addr);
+       for (i = 0; i < ARRAY_SIZE(mvm->shared_mem_cfg.txfifo_size); i++)
+               mvm->shared_mem_cfg.txfifo_size[i] =
+                       le32_to_cpu(mem_cfg->txfifo_size[i]);
+       for (i = 0; i < ARRAY_SIZE(mvm->shared_mem_cfg.rxfifo_size); i++)
+               mvm->shared_mem_cfg.rxfifo_size[i] =
+                       le32_to_cpu(mem_cfg->rxfifo_size[i]);
+       mvm->shared_mem_cfg.page_buff_addr =
+               le32_to_cpu(mem_cfg->page_buff_addr);
+       mvm->shared_mem_cfg.page_buff_size =
+               le32_to_cpu(mem_cfg->page_buff_size);
+       IWL_DEBUG_INFO(mvm, "SHARED MEM CFG: got memory offsets/sizes\n");
+
+exit:
+       iwl_free_resp(&cmd);
+}
+
 void iwl_mvm_fw_dbg_collect(struct iwl_mvm *mvm)
 {
        /* stop recording */
@@ -495,6 +546,8 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
                goto error;
        }
 
+       iwl_mvm_get_shared_mem_conf(mvm);
+
        ret = iwl_mvm_sf_update(mvm, NULL, false);
        if (ret)
                IWL_ERR(mvm, "Failed to initialize Smart Fifo\n");
This page took 0.027328 seconds and 5 git commands to generate.