wlan: Add support to disable channel list

Add support to disable channel list received with command
"SET_DISABLE_CHANNEL_LIST".

As part of this command, number of channels and list
of that many channels should be given. If the interface
is up on any of the channel from the list first disconnect
the interface and then disable all the channels from the list
now start the interface on the new channel.

Change-Id: I3c7810bfde78878a3e60570a13bf2741e1da599b
CRs-Fixed: 2197579
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index fdb877f..b6db4a1 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -1558,6 +1558,17 @@
 
 /** Adapter stucture definition */
 
+struct hdd_cache_channel_info {
+	int channel_num;
+	int reg_status;
+	int wiphy_status;
+};
+
+struct hdd_cache_channels {
+	int num_channels;
+	struct hdd_cache_channel_info *channel_info;
+};
+
 struct hdd_context_s
 {
    /** Global VOS context  */
@@ -1844,6 +1855,9 @@
     v_BOOL_t roaming_ini_original;
 
     uint32_t track_arp_ip;
+
+    struct hdd_cache_channels *orginal_channels;
+    struct mutex cache_channel_lock;
 };
 
 typedef enum  {
@@ -2328,4 +2342,13 @@
 }
 #endif
 
+/*
+ * hdd_parse_disable_chn_cmd() - Parse the channel list received
+ * in command.
+ * @adapter: pointer to hdd adapter
+ *
+ * @return: 0 on success, Error code on failure
+ */
+int hdd_parse_disable_chan_cmd(hdd_adapter_t *adapter, tANI_U8 *ptr);
+
 #endif    // end #if !defined( WLAN_HDD_MAIN_H )