OSDN Git Service

mwifiex: get rid of drv_info* adapter variables
authorXinming Hu <huxm@marvell.com>
Wed, 16 Nov 2016 13:09:07 +0000 (18:39 +0530)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 12 Jan 2017 14:44:29 +0000 (16:44 +0200)
We can avoid drv_info_dump and drv_info_size adapter variables.
This info can be passed to mwifiex_upload_device_dump() as parameters

Signed-off-by: Xinming Hu <huxm@marvell.com>
Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwifiex/main.c
drivers/net/wireless/marvell/mwifiex/main.h
drivers/net/wireless/marvell/mwifiex/pcie.c
drivers/net/wireless/marvell/mwifiex/sdio.c

index 1ed17f8..c1821aa 100644 (file)
@@ -1026,7 +1026,7 @@ void mwifiex_multi_chan_resync(struct mwifiex_adapter *adapter)
 }
 EXPORT_SYMBOL_GPL(mwifiex_multi_chan_resync);
 
-void mwifiex_drv_info_dump(struct mwifiex_adapter *adapter)
+int mwifiex_drv_info_dump(struct mwifiex_adapter *adapter, void **drv_info)
 {
        void *p;
        char drv_version[64];
@@ -1036,21 +1036,17 @@ void mwifiex_drv_info_dump(struct mwifiex_adapter *adapter)
        int i, idx;
        struct netdev_queue *txq;
        struct mwifiex_debug_info *debug_info;
-
-       if (adapter->drv_info_dump) {
-               vfree(adapter->drv_info_dump);
-               adapter->drv_info_dump = NULL;
-               adapter->drv_info_size = 0;
-       }
+       void *drv_info_dump;
 
        mwifiex_dbg(adapter, MSG, "===mwifiex driverinfo dump start===\n");
 
-       adapter->drv_info_dump = vzalloc(MWIFIEX_DRV_INFO_SIZE_MAX);
+       /* memory allocate here should be free in mwifiex_upload_device_dump*/
+       drv_info_dump = vzalloc(MWIFIEX_DRV_INFO_SIZE_MAX);
 
-       if (!adapter->drv_info_dump)
-               return;
+       if (!drv_info_dump)
+               return 0;
 
-       p = (char *)(adapter->drv_info_dump);
+       p = (char *)(drv_info_dump);
        p += sprintf(p, "driver_name = " "\"mwifiex\"\n");
 
        mwifiex_drv_get_driver_version(adapter, drv_version,
@@ -1134,18 +1130,20 @@ void mwifiex_drv_info_dump(struct mwifiex_adapter *adapter)
                kfree(debug_info);
        }
 
-       adapter->drv_info_size = p - adapter->drv_info_dump;
        mwifiex_dbg(adapter, MSG, "===mwifiex driverinfo dump end===\n");
+       *drv_info = drv_info_dump;
+       return p - drv_info_dump;
 }
 EXPORT_SYMBOL_GPL(mwifiex_drv_info_dump);
 
-void mwifiex_upload_device_dump(struct mwifiex_adapter *adapter)
+void mwifiex_upload_device_dump(struct mwifiex_adapter *adapter, void *drv_info,
+                               int drv_info_size)
 {
        u8 idx, *dump_data, *fw_dump_ptr;
        u32 dump_len;
 
        dump_len = (strlen("========Start dump driverinfo========\n") +
-                      adapter->drv_info_size +
+                      drv_info_size +
                       strlen("\n========End dump========\n"));
 
        for (idx = 0; idx < adapter->num_mem_types; idx++) {
@@ -1175,8 +1173,8 @@ void mwifiex_upload_device_dump(struct mwifiex_adapter *adapter)
 
        strcpy(fw_dump_ptr, "========Start dump driverinfo========\n");
        fw_dump_ptr += strlen("========Start dump driverinfo========\n");
-       memcpy(fw_dump_ptr, adapter->drv_info_dump, adapter->drv_info_size);
-       fw_dump_ptr += adapter->drv_info_size;
+       memcpy(fw_dump_ptr, drv_info, drv_info_size);
+       fw_dump_ptr += drv_info_size;
        strcpy(fw_dump_ptr, "\n========End dump========\n");
        fw_dump_ptr += strlen("\n========End dump========\n");
 
@@ -1214,18 +1212,12 @@ done:
                struct memory_type_mapping *entry =
                        &adapter->mem_type_mapping_tbl[idx];
 
-               if (entry->mem_ptr) {
-                       vfree(entry->mem_ptr);
-                       entry->mem_ptr = NULL;
-               }
+               vfree(entry->mem_ptr);
+               entry->mem_ptr = NULL;
                entry->mem_size = 0;
        }
 
-       if (adapter->drv_info_dump) {
-               vfree(adapter->drv_info_dump);
-               adapter->drv_info_dump = NULL;
-               adapter->drv_info_size = 0;
-       }
+       vfree(drv_info);
 }
 EXPORT_SYMBOL_GPL(mwifiex_upload_device_dump);
 
index e915ea0..cf51e5d 100644 (file)
@@ -994,8 +994,6 @@ struct mwifiex_adapter {
        u8 key_api_major_ver, key_api_minor_ver;
        struct memory_type_mapping *mem_type_mapping_tbl;
        u8 num_mem_types;
-       void *drv_info_dump;
-       u32 drv_info_size;
        bool scan_chan_gap_enabled;
        struct sk_buff_head rx_data_q;
        bool mfg_mode;
@@ -1641,8 +1639,9 @@ void mwifiex_hist_data_add(struct mwifiex_private *priv,
 u8 mwifiex_adjust_data_rate(struct mwifiex_private *priv,
                            u8 rx_rate, u8 ht_info);
 
-void mwifiex_drv_info_dump(struct mwifiex_adapter *adapter);
-void mwifiex_upload_device_dump(struct mwifiex_adapter *adapter);
+int mwifiex_drv_info_dump(struct mwifiex_adapter *adapter, void **drv_info);
+void mwifiex_upload_device_dump(struct mwifiex_adapter *adapter, void *drv_info,
+                               int drv_info_size);
 void *mwifiex_alloc_dma_align_buf(int rx_len, gfp_t flags);
 void mwifiex_queue_main_work(struct mwifiex_adapter *adapter);
 int mwifiex_get_wakeup_reason(struct mwifiex_private *priv, u16 action,
index 4db07da..fb9808a 100644 (file)
@@ -2715,9 +2715,12 @@ static void mwifiex_pcie_fw_dump(struct mwifiex_adapter *adapter)
 
 static void mwifiex_pcie_device_dump_work(struct mwifiex_adapter *adapter)
 {
-       mwifiex_drv_info_dump(adapter);
+       int drv_info_size;
+       void *drv_info;
+
+       drv_info_size = mwifiex_drv_info_dump(adapter, &drv_info);
        mwifiex_pcie_fw_dump(adapter);
-       mwifiex_upload_device_dump(adapter);
+       mwifiex_upload_device_dump(adapter, drv_info, drv_info_size);
 }
 
 static unsigned long iface_work_flags;
index 43facba..3abc1df 100644 (file)
@@ -2548,13 +2548,15 @@ done:
 static void mwifiex_sdio_device_dump_work(struct mwifiex_adapter *adapter)
 {
        struct sdio_mmc_card *card = adapter->card;
+       int drv_info_size;
+       void *drv_info;
 
-       mwifiex_drv_info_dump(adapter);
+       drv_info_size = mwifiex_drv_info_dump(adapter, &drv_info);
        if (card->fw_dump_enh)
                mwifiex_sdio_generic_fw_dump(adapter);
        else
                mwifiex_sdio_fw_dump(adapter);
-       mwifiex_upload_device_dump(adapter);
+       mwifiex_upload_device_dump(adapter, drv_info, drv_info_size);
 }
 
 static void mwifiex_sdio_work(struct work_struct *work)