/**
 * \page ChangeLog
 *
 * \section v37_4_0_16_TO_v37_4_0_17 Version v37.4.0.16 to version v37.4.0.17 changes
 *
 * \subsection v37_4_0_16_TO_v37_4_0_17Added Added functions
 *
 * The following functions were added between versions v37.4.0.16 and v37.4.0.17
 * \li \ref qcsapi_wifi_set_txba_disable
 * \li \ref qcsapi_security_del_hs20_icon
 * \li \ref qcsapi_wifi_get_pairwise_key_interval
 * \li \ref qcsapi_wifi_get_vap_state
 * \li \ref qcsapi_wifi_set_vap_default_state
 * \li \ref qcsapi_wifi_send_qos_map_conf
 * \li \ref qcsapi_wifi_set_chan_pri_inactive_ext
 * \li \ref qcsapi_wifi_get_txburst
 * \li \ref qcsapi_wifi_get_supported_freq_bands
 * \li \ref qcsapi_wifi_get_qos_map
 * \li \ref qcsapi_security_del_osu_server_uri
 * \li \ref qcsapi_wifi_get_sec_chan
 * \li \ref qcsapi_wifi_get_dscp_tid_map
 * \li \ref qcsapi_wifi_get_rxba_decline
 * \li \ref qcsapi_wifi_del_qos_map
 * \li \ref qcsapi_wifi_set_pairwise_key_interval
 * \li \ref qcsapi_security_add_osu_server_uri
 * \li \ref qcsapi_security_get_osu_server_uri
 * \li \ref qcsapi_security_get_osu_server_param
 * \li \ref qcsapi_wifi_set_vap_state
 * \li \ref qcsapi_wifi_get_txba_disable
 * \li \ref qcsapi_security_del_osu_server_param
 * \li \ref qcsapi_security_get_hs20_icon
 * \li \ref qcsapi_wifi_set_qos_map
 * \li \ref qcsapi_wifi_set_rxba_decline
 * \li \ref qcsapi_wifi_set_txburst
 * \li \ref qcsapi_wifi_set_sec_chan
 * \li \ref qcsapi_security_add_osu_server_param
 * \li \ref qcsapi_security_add_hs20_icon
 * \li \ref qcsapi_wifi_get_vap_default_state
 *
 * \subsection v37_4_0_16_TO_v37_4_0_17Proto Function prototype changes
 *
 * The following function prototypes were modified between versions v37.4.0.16 and v37.4.0.17
 *  - \ref qcsapi_wifi_set_group_key_interval
 *    - Old prototype: int qcsapi_wifi_set_group_key_interval(const char *ifname, const string_16 group_key_interval);
 *    - New prototype: int qcsapi_wifi_set_group_key_interval(const char *ifname, const unsigned int key_interval);
 *  - \ref qcsapi_wifi_show_vlan_config
 *    - Old prototype: int qcsapi_wifi_show_vlan_config(const char *ifname, string_1024 vcfg);
 *    - New prototype: int qcsapi_wifi_show_vlan_config(const char *ifname, string_2048 vcfg, const char *flag);
 *  - \ref qcsapi_wifi_get_group_key_interval
 *    - Old prototype: int qcsapi_wifi_get_group_key_interval(const char *ifname, string_16 group_key_interval);
 *    - New prototype: int qcsapi_wifi_get_group_key_interval(const char *ifname, unsigned int *p_key_interval);
 *  - \ref qcsapi_wifi_vlan_config
 *    - Old prototype: int qcsapi_wifi_vlan_config(const char *ifname, qcsapi_vlan_cmd cmd, uint32_t vlanid, uint32_t flags);
 *    - New prototype: int qcsapi_wifi_vlan_config(const char *ifname, qcsapi_vlan_cmd cmd, uint32_t vlanid);
 */

