/*SH1
*******************************************************************************
**                                                                           **
**         Copyright (c) 2010 Quantenna Communications Inc                   **
**                            All Rights Reserved                            **
**                                                                           **
**  Author      : Quantenna Communications Inc                               **
**  File        : shared_params.h                                            **
**  Description :                                                            **
**                                                                           **
*******************************************************************************
**                                                                           **
**  Redistribution and use in source and binary forms, with or without       **
**  modification, are permitted provided that the following conditions       **
**  are met:                                                                 **
**  1. Redistributions of source code must retain the above copyright        **
**     notice, this list of conditions and the following disclaimer.         **
**  2. Redistributions in binary form must reproduce the above copyright     **
**     notice, this list of conditions and the following disclaimer in the   **
**     documentation and/or other materials provided with the distribution.  **
**  3. The name of the author may not be used to endorse or promote products **
**     derived from this software without specific prior written permission. **
**                                                                           **
**  Alternatively, this software may be distributed under the terms of the   **
**  GNU General Public License ("GPL") version 2, or (at your option) any    **
**  later version as published by the Free Software Foundation.              **
**                                                                           **
**  In the case this software is distributed under the GPL license,          **
**  you should have received a copy of the GNU General Public License        **
**  along with this software; if not, write to the Free Software             **
**  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  **
**                                                                           **
**  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR       **
**  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES**
**  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  **
**  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,         **
**  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT **
**  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,**
**  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY    **
**  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT      **
**  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF **
**  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.        **
**                                                                           **
*******************************************************************************
EH1*/

#ifndef _SHARED_DEFS_H_
#define _SHARED_DEFS_H_

#include "shared_defs_common.h"

#define QTN_SWITCH_CHANNEL_TIME_AVG	3750	/* microseconds */

#define IEEE80211_MAX_NAV	32767

/* SCS (ACI/CCI Detection and Mitigation) APIs */
enum qtn_vap_scs_cmds {
	IEEE80211_SCS_SET_ENABLE = 1,
	IEEE80211_SCS_SET_DEBUG_ENABLE,
	IEEE80211_SCS_SET_SAMPLE_ENABLE,
	IEEE80211_SCS_SET_SAMPLE_DWELL_TIME,
	IEEE80211_SCS_SET_SAMPLE_INTERVAL,
	IEEE80211_SCS_SET_THRSHLD_SMPL_PKTNUM,
	IEEE80211_SCS_SET_THRSHLD_PRI_CCA,
	IEEE80211_SCS_SET_THRSHLD_SEC_CCA,
	IEEE80211_SCS_SET_THRSHLD_SMPL_AIRTIME,
	IEEE80211_SCS_SET_WF_CCA,
	IEEE80211_SCS_SET_WF_RSSI,
	IEEE80211_SCS_SET_WF_CRC_ERR,
	IEEE80211_SCS_SET_WF_LPRE,
	IEEE80211_SCS_SET_WF_SPRE,
	IEEE80211_SCS_SET_WF_RETRIES,
	IEEE80211_SCS_SET_WF_DFS,
	IEEE80211_SCS_SET_WF_MAX_TX_PWR,
	IEEE80211_SCS_SET_REPORT_ONLY,
	IEEE80211_SCS_SET_CCA_INTF_RATIO,
	IEEE80211_SCS_SET_CCA_IDLE_THRSHLD,
	IEEE80211_SCS_SET_CCA_INTF_LO_THR,
	IEEE80211_SCS_SET_CCA_INTF_HI_THR,
	IEEE80211_SCS_SET_CCA_SMPL_DUR,
	IEEE80211_SCS_GET_REPORT,
	IEEE80211_SCS_GET_INTERNAL_STATS,
	IEEE80211_SCS_SET_CCA_INTF_SMTH_FCTR,
	IEEE80211_SCS_RESET_RANKING_TABLE,
	IEEE80211_SCS_SET_CHAN_MTRC_MRGN,
	IEEE80211_SCS_SET_RSSI_SMTH_FCTR,
	IEEE80211_SCS_SET_ATTEN_ADJUST,
	IEEE80211_SCS_SET_ATTEN_SWITCH_ENABLE,
	IEEE80211_SCS_SET_THRSHLD_ATTEN_INC,
	IEEE80211_SCS_SET_THRSHLD_DFS_REENTRY,
	IEEE80211_SCS_SET_THRSHLD_DFS_REENTRY_MINRATE,
	IEEE80211_SCS_SET_PMBL_ERR_SMTH_FCTR,
	IEEE80211_SCS_SET_PMBL_ERR_RANGE,
	IEEE80211_SCS_SET_PMBL_ERR_MAPPED_INTF_RANGE,
	IEEE80211_SCS_SET_THRSHLD_LOAD,
	IEEE80211_SCS_SET_PMBL_ERR_WF,
	IEEE80211_SCS_SET_THRSHLD_AGING_NOR,
	IEEE80211_SCS_SET_THRSHLD_AGING_DFSREENT,
	IEEE80211_SCS_SET_THRSHLD_DFS_REENTRY_INTF,
	IEEE80211_SCS_SET_PMP_RPT_CCA_SMTH_FCTR,
	IEEE80211_SCS_SET_PMP_RX_TIME_SMTH_FCTR,
	IEEE80211_SCS_SET_PMP_TX_TIME_SMTH_FCTR,
	IEEE80211_SCS_SET_PMP_STATS_STABLE_PERCENT,
	IEEE80211_SCS_SET_PMP_STATS_STABLE_RANGE,
	IEEE80211_SCS_SET_PMP_STATS_CLEAR_INTERVAL,
	IEEE80211_SCS_SET_PMP_TXTIME_COMPENSATION,
	IEEE80211_SCS_SET_PMP_RXTIME_COMPENSATION,
	IEEE80211_SCS_SET_PMP_TDLSTIME_COMPENSATION,
	IEEE80211_SCS_SET_SWITCH_CHANNEL_MANUALLY,
	IEEE80211_SCS_SET_AS_RX_TIME_SMTH_FCTR,
	IEEE80211_SCS_SET_AS_TX_TIME_SMTH_FCTR,
	IEEE80211_SCS_SET_STATS_START,
	IEEE80211_SCS_SET_CCA_IDLE_SMTH_FCTR,
	IEEE80211_SCS_SET_PMBL_ERR_THRSHLD,
	IEEE80211_SCS_SET_CCA_INTF_DFS_MARGIN,
	IEEE80211_SCS_SET_LEAVE_DFS_CHAN_MTRC_MRGN,
	IEEE80211_SCS_SET_CCA_THRESHOLD_TYPE,
	IEEE80211_SCS_SET_MAX
};

#define IEEE80211_SCS_STATE_INIT			0
#define IEEE80211_SCS_STATE_RESET			1
#define IEEE80211_SCS_STATE_CHANNEL_SWITCHING		2
#define IEEE80211_SCS_STATE_MEASUREMENT_CHANGE_CLEAN	3    /* param change */
#define IEEE80211_SCS_STATE_PERIOD_CLEAN		4

#define IEEE80211_SCS_COMPARE_INIT_TIMER	5
#define IEEE80211_SCS_COMPARE_TIMER_INTVAL	2
#define IEEE80211_CCA_SAMPLE_DUR		IEEE80211_SCS_COMPARE_TIMER_INTVAL /* seconds */
#define IEEE80211_SCS_CHAN_CURRENT		0
#define IEEE80211_SCS_CHAN_ALL			0xFF
#define IEEE80211_SCS_THRSHLD_MAX		100	/* metric */
#define IEEE80211_SCS_THRSHLD_MIN		1	/* metric */
#define IEEE80211_SCS_SMPL_DWELL_TIME_MAX	24	/* milliseconds, limited by max NAV reservation */
#define IEEE80211_SCS_SMPL_DWELL_TIME_MIN	5	/* milliseconds */
#define IEEE80211_SCS_SMPL_DWELL_TIME_DEFAULT	10	/* milliseconds */
#define IEEE80211_SCS_SMPL_INTV_MAX		3600	/* seconds */
#define IEEE80211_SCS_SMPL_INTV_MIN		1	/* seconds */
#define IEEE80211_SCS_SMPL_INTV_DEFAULT		5	/* seconds */
#define IEEE80211_SCS_THRSHLD_SMPL_PKTNUM_DEFAULT	16	/* packet number */
#define IEEE80211_SCS_THRSHLD_SMPL_PKTNUM_MAX	1000	/* packet number */
#define IEEE80211_SCS_THRSHLD_SMPL_PKTNUM_MIN	1	/* packet number */
#define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_DEFAULT	200	/* ms */
#define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_MAX	1000	/* ms */
#define IEEE80211_SCS_THRSHLD_SMPL_AIRTIME_MIN	1	/* ms */
#define IEEE80211_SCS_THRSHLD_PMBL_ERR_MAX	10000	/* count */
#define IEEE80211_SCS_THRSHLD_PMBL_ERR_MIN	1	/* count */

/*
 * Packet rate threshold is determined by how many packets we can hold in buffer without drop
 * during off-channel period. It is limited by:
 * - sw queue length of each node/tid
 * - global resource shared by all node/tid, such as tqew descriptors and msdu headers.
 * Current value doesn't apply to the scenario when tqew descriptors are already used up by large
 * number of stations.
 */
#define IEEE80211_SCS_THRSHLD_SMPL_TX_PKTRATE	(1024 - 128)	/* margin = 128 + hw ring size */
#define IEEE80211_SCS_THRSHLD_SMPL_RX_PKTRATE	IEEE80211_SCS_THRSHLD_SMPL_TX_PKTRATE /* assume qtn peer */
#define IEEE80211_SCS_THRSHLD_ATTEN_INC_DFT	5	/* db */
#define IEEE80211_SCS_THRSHLD_ATTEN_INC_MIN     0       /* db */
#define IEEE80211_SCS_THRSHLD_ATTEN_INC_MAX     20      /* db */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_DFT	60	/* seconds */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MIN   0       /* seconds */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MAX   0xffff  /* seconds */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_INTF_MIN   0
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_INTF_MAX   100
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_INTF_DFT   40
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MINRATE_UNIT	100	/* kbps */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MINRATE_DFT	5	/* unit: 100kbps */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MINRATE_MIN   0       /* unit: 100kbps */
#define IEEE80211_SCS_THRSHLD_DFS_REENTRY_MINRATE_MAX   0xffff  /* unit: 100kbps */
#define IEEE80211_SCS_THRSHLD_AGING_MIN         0
#define IEEE80211_SCS_THRSHLD_AGING_MAX         0xFFFF
#define IEEE80211_SCS_THRSHLD_AGING_NOR_DFT     (60 * 6)
#define IEEE80211_SCS_THRSHLD_AGING_DFSREENT_DFT  5
#define IEEE80211_SCS_CCA_DUR_MAX		10	/* seconds */
#define IEEE80211_SCS_CCA_DUR_MIN		2	/* seconds */
#define IEEE80211_SCS_CCA_INTF_SCALE		1000	/* milliseconds */
#define IEEE80211_SCS_SENDING_QOSNULL_TIME_AVG	1000	/* microseconds */
#define IEEE80211_SCS_SMPL_TIME_MARGIN		2000	/* microseconds */
#define IEEE80211_SCS_SMPL_TIME_OFFSET_SEND_QOSNULL	5000	/* microseconds */
#define IEEE80211_SCS_SMPL_TIME_SENDING_ALL_BEACONS	25000	/* microseconds, the time duration for transmitting all beacons */
#define IEEE80211_CCA_INTF_SMTH_FCTR_NOXP_DFT	75
#define IEEE80211_CCA_INTF_SMTH_FCTR_XPED_DFT	90
#define IEEE80211_CCA_INTF_SMTH_FCTR_MIN	0
#define IEEE80211_CCA_INTF_SMTH_FCTR_MAX	100
#define IEEE80211_SCS_CHAN_MTRC_MRGN_MAX	100
#define IEEE80211_SCS_CHAN_MTRC_MRGN_DFT	15
#define IEEE80211_SCS_LEAVE_DFS_CHAN_MTRC_MRGN_DFT	25
#define IEEE80211_SCS_RSSI_SMTH_FCTR_UP_DFT	75
#define IEEE80211_SCS_RSSI_SMTH_FCTR_DOWN_DFT	25
#define IEEE80211_SCS_RSSI_SMTH_FCTR_MAX	100
#define IEEE80211_SCS_ATTEN_ADJUST_MIN		-20
#define IEEE80211_SCS_ATTEN_ADJUST_MAX		20
#define IEEE80211_SCS_ATTEN_ADJUST_DFT		5
#define IEEE80211_SCS_BRCM_RXGLITCH_THRSHLD_SCALE_DFT    40
#define IEEE80211_SCS_PMBL_ERR_SMTH_FCTR_MIN    0
#define IEEE80211_SCS_PMBL_ERR_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_PMBL_ERR_SMTH_FCTR_DFT    66
#define IEEE80211_SCS_CCA_IDLE_SMTH_FCTR_MIN    0
#define IEEE80211_SCS_CCA_IDLE_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_CCA_IDLE_SMTH_FCTR_DFT    50
#define IEEE80211_SCS_PMP_RPT_CCA_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_PMP_RPT_CCA_SMTH_FCTR_DFT    66
#define IEEE80211_SCS_PMP_RX_TIME_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_PMP_RX_TIME_SMTH_FCTR_DFT    66
#define IEEE80211_SCS_PMP_TX_TIME_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_PMP_TX_TIME_SMTH_FCTR_DFT    66
#define IEEE80211_SCS_PMP_STATS_STABLE_PERCENT_MAX  100
#define IEEE80211_SCS_PMP_STATS_STABLE_PERCENT_DFT  30
#define IEEE80211_SCS_PMP_STATS_STABLE_RANGE_MAX    1000
#define IEEE80211_SCS_PMP_STATS_STABLE_RANGE_DFT    50
#define IEEE80211_SCS_PMP_STATS_CLEAR_INTERVAL_MAX  3600 /* seconds */
#define IEEE80211_SCS_PMP_STATS_CLEAR_INTERVAL_DFT  60 /* seconds */
#define IEEE80211_SCS_AS_RX_TIME_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_AS_RX_TIME_SMTH_FCTR_DFT    50
#define IEEE80211_SCS_AS_TX_TIME_SMTH_FCTR_MAX    100
#define IEEE80211_SCS_AS_TX_TIME_SMTH_FCTR_DFT    50

#define IEEE80211_SCS_SMTH_RBS_TIME			80

#define IEEE80211_SCS_PMBL_ERR_RANGE_MIN        1000
#define IEEE80211_SCS_PMBL_ERR_RANGE_MAX        0xFFFF
#define IEEE80211_SCS_PMBL_ERR_RANGE_DFT        5000
#define IEEE80211_SCS_PMBL_ERR_MAPPED_INTF_RANGE_MIN  0
#define IEEE80211_SCS_PMBL_ERR_MAPPED_INTF_RANGE_MAX  100
#define IEEE80211_SCS_PMBL_ERR_MAPPED_INTF_RANGE_DFT  40
#define IEEE80211_SCS_PMBL_ERR_WF_MIN           0
#define IEEE80211_SCS_PMBL_ERR_WF_MAX           100
#define IEEE80211_SCS_PMBL_SHORT_WF_DFT         0
#define IEEE80211_SCS_PMBL_LONG_WF_DFT          100
#define IEEE80211_SCS_THRSHLD_LOADED_MIN        0
#define IEEE80211_SCS_THRSHLD_LOADED_MAX        1000
#define IEEE80211_SCS_THRSHLD_LOADED_DFT        20

#define IEEE80211_SCS_CHAN_POWER_CUTPOINT       15
#define IEEE80211_SCS_NORMALIZE(_v, _duration)       (((_v) < (0xFFFFFFFF / IEEE80211_SCS_CCA_INTF_SCALE)) ?  \
							((_v) * IEEE80211_SCS_CCA_INTF_SCALE / (_duration)) : \
							((_v) / (_duration) * IEEE80211_SCS_CCA_INTF_SCALE))

#define IEEE80211_SCS_SMOOTH(_old, _new, _fctr)	(((_old) * (_fctr) + (_new) * (100 - (_fctr))) / 100)

#define IEEE80211_SCS_OFFCHAN_WHOLE_DUR(_dwell_us)	((_dwell_us) +					\
							(2 * QTN_SWITCH_CHANNEL_TIME_AVG) +		\
							IEEE80211_SCS_SENDING_QOSNULL_TIME_AVG +	\
							IEEE80211_SCS_SMPL_TIME_MARGIN)

#define IEEE80211_SCS_VALUE_S			0
#define IEEE80211_SCS_VALUE_M			0xffff
#define IEEE80211_SCS_WF_VALUE_M		0xff
#define IEEE80211_SCS_COMMAND_S			16
#define IEEE80211_SCS_COMMAND_M			0xffff

#define IEEE80211_SCS_NA_CC			0x0
#define IEEE80211_SCS_STA_CCA_REQ_CC		0x1
#define IEEE80211_SCS_SELF_CCA_CC               0x2
#define IEEE80211_SCS_ATTEN_INC_CC		0x4
#define IEEE80211_SCS_BRCM_STA_TRIGGER_CC	0x8
#define IEEE80211_SCS_CCA_INTF_CC               (IEEE80211_SCS_STA_CCA_REQ_CC | IEEE80211_SCS_SELF_CCA_CC)
#define IEEE80211_SCS_INTF_CC                   (IEEE80211_SCS_CCA_INTF_CC | IEEE80211_SCS_BRCM_STA_TRIGGER_CC)

#define	IEEE80211_REMAIN_CHAN_MIN_RSV_PERD	2

#define IEEE80211_SCS_UNSTABLE_INTF			0x00000001
#define IEEE80211_SCS_UNSTABLE_INTF_OUTDATED		0x00000002
#define IEEE80211_SCS_UNSTABLE_INTF_INVALID		0x00000004
#define IEEE80211_SCS_UNSTABLE_IDLE			0x00000008
#define IEEE80211_SCS_UNSTABLE_IDLE_OUTDATED		0x00000010
#define IEEE80211_SCS_UNSTABLE_OTHERSTIME		0x00000020
#define IEEE80211_SCS_UNSTABLE_OTHERSTIME_OUTDATED	0x00000040
#define IEEE80211_SCS_UNSTABLE_TDLS_TX			0x00000080
#define IEEE80211_SCS_UNSTABLE_TDLS_RX			0x00000100
#define IEEE80211_SCS_UNSTABLE_TDLS_OUTDATED		0x00000200

enum ieee80211_scs_update_mode {
	IEEE80211_SCS_OFFCHAN,		/* off-channel, use smoothing and omit current channel */
	IEEE80211_SCS_COCHAN,		/* co-channel mode */
	IEEE80211_SCS_INIT_SCAN,	/* like off-channel but include current channel */
};

#define SCSLOG_CRIT                             0
#define SCSLOG_NOTICE                           1
#define SCSLOG_INFO                             2
#define SCSLOG_VERBOSE                          3
#define SCSLOG_LEVEL_MAX                        3
#if !defined(MUC_BUILD) && !defined(DSP_BUILD) && !defined(AUC_BUILD)
#define SCSDBG(_level, _fmt, ...)            do {               \
		if (ic->ic_scs.scs_debug_enable >= (_level)) {  \
			DBGFN("SCS: " _fmt, ##__VA_ARGS__);     \
		}                                               \
	} while (0)
#endif


/* OCAC (Off-channel CAC) APIs */
enum qtn_ocac_cmds {
	IEEE80211_OCAC_SET_ENABLE = 1,
	IEEE80211_OCAC_SET_DISABLE,
	IEEE80211_OCAC_SET_DEBUG_LEVEL,
	IEEE80211_OCAC_SET_DWELL_TIME,
	IEEE80211_OCAC_SET_DURATION,
	IEEE80211_OCAC_SET_THRESHOLD_FAT,
	IEEE80211_OCAC_SET_DUMP_COUNTS,
	IEEE80211_OCAC_SET_CAC_TIME,
	IEEE80211_OCAC_SET_THRESHOLD_TRAFFIC,
	IEEE80211_OCAC_SET_TIMER_INTERVAL,
	IEEE80211_OCAC_SET_DUMP_TSFLOG,
	IEEE80211_OCAC_SET_DUMP_CFG,
	IEEE80211_OCAC_SET_TRAFFIC_CONTROL,
	IEEE80211_OCAC_SET_THRESHOLD_CCA_INTF,
	IEEE80211_OCAC_SET_REPORT_ONLY,
	IEEE80211_OCAC_SET_DUMP_CCA_COUNTS,
	IEEE80211_OCAC_SET_OFFSET_TXHALT,
	IEEE80211_OCAC_SET_OFFSET_OFFCHAN,
	IEEE80211_OCAC_SET_THRESHOLD_FAT_DEC,
	IEEE80211_OCAC_SET_TIMER_EXPIRE_INIT,
	IEEE80211_OCAC_SET_SECURE_DWELL_TIME,
	IEEE80211_OCAC_SET_BEACON_INTERVAL,
	IEEE80211_OCAC_SET_WEATHER_DURATION,
	IEEE80211_OCAC_SET_WEATHER_CAC_TIME,
	IEEE80211_OCAC_SET_WEATHER_DWELL_TIME,
	IEEE80211_OCAC_SET_MAX
};

enum qtn_ocac_get_cmds {
	IEEE80211_OCAC_GET_STATUS = 1,
	IEEE80211_OCAC_GET_AVAILABILITY,
};

#define IEEE80211_OCAC_CLEAN_STATS_STOP		0
#define IEEE80211_OCAC_CLEAN_STATS_START	1
#define IEEE80211_OCAC_CLEAN_STATS_RESET	2


#define IEEE80211_OCAC_DWELL_TIME_MIN		5	/* milliseconds */
#define IEEE80211_OCAC_DWELL_TIME_MAX		200	/* milliseconds */
#define IEEE80211_OCAC_DWELL_TIME_DEFAULT	40	/* milliseconds */
#define IEEE80211_OCAC_WEA_DWELL_TIME_DEFAULT	20	/* milliseconds */

#define IEEE80211_OCAC_SECURE_DWELL_TIME_MIN		5	/* milliseconds */
#define IEEE80211_OCAC_SECURE_DWELL_TIME_MAX		23	/* milliseconds */
#define IEEE80211_OCAC_SECURE_DWELL_TIME_DEFAULT	23	/* milliseconds */

#define IEEE80211_OCAC_DURATION_MIN		1	/* seconds */
#define IEEE80211_OCAC_DURATION_MAX		64800	/* seconds */
#define IEEE80211_OCAC_DURATION_DEFAULT		720	/* seconds */

#define IEEE80211_OCAC_CAC_TIME_MIN		1	/* seconds */
#define IEEE80211_OCAC_CAC_TIME_MAX		64800	/* seconds */
#define IEEE80211_OCAC_CAC_TIME_DEFAULT		240	/* seconds */

#define IEEE80211_OCAC_WEA_DURATION_MIN		60	/* seconds */
#define IEEE80211_OCAC_WEA_DURATION_MAX		86400	/* seconds */
#define IEEE80211_OCAC_WEA_DURATION_DEFAULT	11520	/* seconds */

#define IEEE80211_OCAC_WEA_CAC_TIME_MIN		1	/* seconds */
#define IEEE80211_OCAC_WEA_CAC_TIME_MAX		86400	/* seconds */
#define IEEE80211_OCAC_WEA_CAC_TIME_DEFAULT	1920	/* seconds */

#define IEEE80211_OCAC_THRESHOLD_FAT_MIN	1	/* percent */
#define IEEE80211_OCAC_THRESHOLD_FAT_MAX	100	/* percent */
#define IEEE80211_OCAC_THRESHOLD_FAT_DEFAULT	90	/* percent */

#define IEEE80211_OCAC_THRESHOLD_TRAFFIC_MIN		1	/* percent */
#define IEEE80211_OCAC_THRESHOLD_TRAFFIC_MAX		100	/* percent */
#define IEEE80211_OCAC_THRESHOLD_TRAFFIC_DEFAULT	30	/* percent */

#define IEEE80211_OCAC_OFFSET_TXHALT_MIN		2	/* milliseconds */
#define IEEE80211_OCAC_OFFSET_TXHALT_MAX		80	/* milliseconds */
#define IEEE80211_OCAC_OFFSET_TXHALT_DEFAULT		10	/* milliseconds */

#define IEEE80211_OCAC_OFFSET_OFFCHAN_MIN		2	/* milliseconds */
#define IEEE80211_OCAC_OFFSET_OFFCHAN_MAX		80	/* milliseconds */
#define IEEE80211_OCAC_OFFSET_OFFCHAN_DEFAULT		5	/* milliseconds */

#define IEEE80211_OCAC_TRAFFIC_CTRL_DEFAULT		1	/* on */

#define IEEE80211_OCAC_THRESHOLD_CCA_INTF_MIN		1	/* percent */
#define IEEE80211_OCAC_THRESHOLD_CCA_INTF_MAX		100	/* percent */
#define IEEE80211_OCAC_THRESHOLD_CCA_INTF_DEFAULT	20	/* percent */

#define IEEE80211_OCAC_THRESHOLD_FAT_DEC_MIN		1	/* percent */
#define IEEE80211_OCAC_THRESHOLD_FAT_DEC_MAX		100	/* percent */
#define IEEE80211_OCAC_THRESHOLD_FAT_DEC_DEFAULT	10	/* percent */

#define IEEE80211_OCAC_TIMER_INTERVAL_MIN		1	/* seconds */
#define IEEE80211_OCAC_TIMER_INTERVAL_MAX		100	/* seconds */
#define IEEE80211_OCAC_TIMER_INTERVAL_DEFAULT		2	/* seconds */

#define IEEE80211_OCAC_BEACON_INTERVAL_MIN		100	/* TUs */
#define IEEE80211_OCAC_BEACON_INTERVAL_MAX		1000	/* TUs */
#define IEEE80211_OCAC_BEACON_INTERVAL_DEFAULT		100	/* TUs */

#define IEEE80211_OCAC_TIMER_EXPIRE_INIT_MIN		1	/* seconds */
#define IEEE80211_OCAC_TIMER_EXPIRE_INIT_MAX		65000	/* seconds */
#define IEEE80211_OCAC_TIMER_EXPIRE_INIT_DEFAULT	2	/* seconds */

#define	IEEE80211_OBSS_PASSIVE_DWELL_DEFAULT		20
#define	IEEE80211_OBSS_ACTIVE_DWELL_DEFAULT		10
#define	IEEE80211_OBSS_TRIGGER_INTERVAL_DEFAULT		200
#define	IEEE80211_OBSS_PASSIVE_TOTAL_DEFAULT		200
#define	IEEE80211_OBSS_ACTIVE_TOTAL_DEFAULT		20
#define	IEEE80211_OBSS_CHANNEL_WIDTH_DELAY_DEFAULT	5
#define	IEEE80211_OBSS_ACTIVITY_THRESHOLD_DEFAULT	25

#define IEEE80211_OCAC_VALUE_S			0
#define IEEE80211_OCAC_VALUE_M			0xffff
#define IEEE80211_OCAC_COMMAND_S		16
#define IEEE80211_OCAC_COMMAND_M		0xffff
#define IEEE80211_OCAC_COMPRESS_VALUE_F		0x8000
#define IEEE80211_OCAC_COMPRESS_VALUE_M		0x7fff

#define IEEE80211_OCAC_TIME_MARGIN		2000	/* microseconds */

#define OCACLOG_CRIT				0
#define OCACLOG_WARNING				1
#define OCACLOG_NOTICE				2
#define OCACLOG_INFO				3
#define OCACLOG_VERBOSE				4
#define OCACLOG_LEVEL_MAX			4
#if !defined(MUC_BUILD) && !defined(DSP_BUILD) && !defined(AUC_BUILD)
#define OCACDBG(_level, _fmt, ...)            do {               \
		if (ic->ic_ocac.ocac_cfg.ocac_debug_level >= (_level)) {  \
			DBGFN("DFS_s_radio: " _fmt, ##__VA_ARGS__);     \
		}                                               \
        } while (0)
#endif

#define QTN_M2A_EVENT_TYPE_DTIM		1
#define	QTN_M2A_PS_EVENT_PM_ENABLE	2		/* enable power management */
#define	QTN_M2A_PS_EVENT_PM_DISABLE	3		/* disable power management */
#define	QTN_M2A_PS_EVENT_PS_POLL	4		/* ps poll */
#define	QTN_M2A_EVENT_TYPE_UAPSD_SP	5		/* U-APSD SP */
#define QTN_M2A_EVENT_PTID_FLAG_SET     6               /* Set per-TID flag(muc) */
#define QTN_M2A_EVENT_TYPE_TXBA_DISABLE	7		/* per VAP TX BA est control */

/* Common definitions for flags used to indicate ieee80211_node's states */
#define	IEEE80211_NODE_AUTH		0x0001	/* authorized for data */
#define	IEEE80211_NODE_QOS		0x0002	/* QoS enabled */
#define	IEEE80211_NODE_ERP		0x0004	/* ERP enabled */
#define	IEEE80211_NODE_HT		0x0008	/* HT enabled */
/* NB: this must have the same value as IEEE80211_FC1_PWR_MGT */
#define	IEEE80211_NODE_PWR_MGT		0x0010	/* power save mode enabled */
#define	IEEE80211_NODE_PS_DELIVERING	0x0040	/* STA out of PS, getting delivery */
#define	IEEE80211_NODE_PS_POLL		0x0080	/* power save ps poll mode */
#define	IEEE80211_NODE_AREF		0x0020	/* authentication ref held */
#define IEEE80211_NODE_2_TX_CHAINS      0x0400  /* this node needs to use 2 TX chain only, for IOT purpose */
#define IEEE80211_NODE_UAPSD		0x1000
#define IEEE80211_NODE_WDS_PEER		0x2000	/* this node is the wds peer in a wds vap */
#define IEEE80211_NODE_VHT		0x4000	/* VHT enabled */
#define IEEE80211_NODE_TPC		0x8000	/* indicate tpc capability */

/* Common definitions for ext_flags */
#define IEEE80211_NODE_TDLS_PTI_REQ	0x0001	/* Should sending PTI request to peer */
#define IEEE80211_NODE_TDLS_PTI_PENDING	0x0002	/* PTI request xmit to peer but not responsed */
#define IEEE80211_NODE_UAPSD_SP_IN_PROGRESS	0x0004	/* U-APSD SP in progress */
#define IEEE80211_NODE_TDLS_PTI_RESP	0x0008	/* PTI response frame received */
#define	IEEE80211_NODE_TDLS_AUTH	0x0010	/* authorized for TDLS link data */

#define	IEEE80211_NODE_TDLS_PTI_MASK	0x000B	/* Mask for TDLS PTI bits */

#define QTN_VAP_PRIORITY_RESERVED	2	/* reserve the low values for internal use */
#define QTN_VAP_PRIORITY_NUM		4
#define QTN_VAP_PRIORITY_MGMT		(QTN_VAP_PRIORITY_RESERVED + QTN_VAP_PRIORITY_NUM)
#define QTN_TACMAP_HW_PRI_NUM		8	/* hw limitation for 128 node mode */
#define QTN_TACMAP_PRI_PER_VAP		8	/* for maximum 8 TIDs */
#define QTN_TACMAP_SW_PRI_BASE		64	/* values below this are used for "bad apple" nodes */

/* Quantenna specific flags (ni_qtn_flags), do not modify in Auc */
#define QTN_IS_BCM_NODE			0x0000001
#define QTN_IS_INTEL_5100_NODE		0x0000002
#define QTN_IS_INTEL_5300_NODE		0x0000004
#define QTN_IS_GALAXY_NOTE_4_NODE	0x0000008
#define QTN_IS_NOT_4ADDR_CAPABLE_NODE	0x0000010
#define QTN_AC_BE_INHERITANCE_UPTO_VO	0x0000020
#define QTN_AC_BE_INHERITANCE_UPTO_VI	0x0000040
#define QTN_IS_INTEL_NODE		0x0000080
#define QTN_IS_REALTEK_NODE		0x0000100
#define	QTN_NODE_TX_RESTRICTED		0x0000200 /* restricted tx enabled */
#define	QTN_NODE_TX_RESTRICT_RTS	0x0000400 /* use RTS to confirm node is lost */
#define QTN_OPTI_NODE			0x0000800
#define QTN_NODE_RXAMSDU_SUPPORT	0x0001000 /* node support TX amsdu */
#define QTN_NODE_11N_TXAMSDU_OFF	0x0002000
#define	QTN_NODE_TXOP_RESTRICTED	0x0004000
/*
 * Bits that can be updated again by Lhost after association creation. Explicit definition helps
 * avoid overwriting bits maintained by MuC itself.
 */
#define QTN_FLAGS_UPDATABLE_BITS	(QTN_IS_INTEL_NODE)

/* QTN bandwidth definition - make sure this is up-to-date with regards
 * to txbf_common.h
 */
#define QTN_BW_20M	0
#define QTN_BW_40M	1
#define QTN_BW_80M	2
#define QTN_BW_MAX	QTN_BW_80M

#define QTN_MAILBOX_INVALID	0xffffffff	/* Invalid value to indicate mailbox is disabled */

enum ni_tdls_status {
	IEEE80211_TDLS_NODE_STATUS_NONE = 0,
	IEEE80211_TDLS_NODE_STATUS_INACTIVE = 1,
	IEEE80211_TDLS_NODE_STATUS_STARTING = 2,
	IEEE80211_TDLS_NODE_STATUS_ACTIVE = 3,
	IEEE80211_TDLS_NODE_STATUS_IDLE = 4
};

/* WoWLAN APIs */
enum qtn_vap_wowlan_cmds {
	IEEE80211_WOWLAN_HOST_POWER_SAVE = 1,
	IEEE80211_WOWLAN_MATCH_TYPE,
	IEEE80211_WOWLAN_L2_ETHER_TYPE,
	IEEE80211_WOWLAN_L3_UDP_PORT,
	IEEE80211_WOWLAN_MAGIC_PATTERN,
	IEEE80211_WOWLAN_MAGIC_PATTERN_GET,
	IEEE80211_WOWLAN_SET_MAX
};
/*
 * Definitions relating to individual fields from phy_stats,
 * shared between the Q driver and the APIs.
 */

/*
 * Error Sum needs to be reported together with the corresponding Number of
 * Symbols; getting them in separate operations would introduce a race condition
 * where the Error Sum and the Number of Symbols came from different
 * PHY stat blocks.
 */

#define QTN_PHY_AVG_ERROR_SUM_NSYM_NAME			"avg_error_sum_nsym"

#define QTN_PHY_EVM_MANTISSA_SHIFT		5
#define QTN_PHY_EVM_EXPONENT_MASK		0x1f

enum qtn_phy_stat_field {
	QTN_PHY_NOSUCH_FIELD = -1,
	QTN_PHY_AVG_ERROR_SUM_NSYM_FIELD,
};

#define QTN_M2A_TX_SCALE_BITS	4
#define QTN_M2A_TX_SCALE_MASK	((1 << QTN_M2A_TX_SCALE_BITS) - 1)

/* only for little endian */
#if defined(AUC_BUILD)
#define U64_LOW32(_v)		((uint32_t)(_v))
#define U64_HIGH32(_v)		((uint32_t)((_v) >> 32))
#else
#define U64_LOW32(_v)		(((uint32_t*)&(_v))[0])
#define U64_HIGH32(_v)		(((uint32_t*)&(_v))[1])
#endif

#define U64_COMPARE_GE(_a, _b)	((U64_HIGH32(_a) > U64_HIGH32(_b)) ||	\
				((U64_HIGH32(_a) == U64_HIGH32(_b)) && (U64_LOW32(_a) >= U64_LOW32(_b))))

#define U64_COMPARE_GT(_a, _b)	((U64_HIGH32(_a) > U64_HIGH32(_b)) ||	\
				((U64_HIGH32(_a) == U64_HIGH32(_b)) && (U64_LOW32(_a) > U64_LOW32(_b))))

#define U64_COMPARE_LE(_a, _b)	((U64_HIGH32(_a) < U64_HIGH32(_b)) ||	\
				((U64_HIGH32(_a) == U64_HIGH32(_b)) && (U64_LOW32(_a) <= U64_LOW32(_b))))

#define U64_COMPARE_LT(_a, _b)	((U64_HIGH32(_a) < U64_HIGH32(_b)) ||	\
				((U64_HIGH32(_a) == U64_HIGH32(_b)) && (U64_LOW32(_a) < U64_LOW32(_b))))

#ifndef MAC2STR
#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
#define MACSTR "%02X:%02X:%02X:%02X:%02X:%02X"
#define MACSTRL "%02x:%02x:%02x:%02x:%02x:%02x"	/* for MuC and Auc which don't support "X" */
#endif

/*
 * VSP/QTM
 * Macro TOPAZ_QTM is used to help identify changes between original VSP and QTM.
 * In Lhost kernel driver, it must be used within CONFIG_QVSP(in kernel .config).
 * CONFIG_QVSP	TOPAZ_QTM	ruby		topaz
 * Y		1		invalid		*QTM works
 * Y		0		*VSP works	VSP alive but doesn't work for HDP
 * N		1		invalid		*no VSP/QTM
 * N		0		*no VSP		no VSP/QTM, and no QTM changes in MuC and AuC
 * So generally, sololy changing CONFIG_QVSP works for both ruby and topaz as indicated by *.
 * But to throughly clean QTM code in AuC and MuC, disable TOPAZ_QTM in topaz below.
 */
#define TOPAZ_QTM		1

#define COMPILE_TIME_ASSERT(constant_expr)	\
do {						\
	switch(0) {				\
		case 0:				\
		case constant_expr:		\
		;				\
	}					\
} while(0)

/**@addtogroup DFSAPIs
 *@{*/
/**
 * Reason for channel change
 */
#define CSW_REASON_MASK 0xff
#define CSW_SCS_FLAG_SHIFT 16
#define CSW_SCS_FLAG_MASK 0xff0000
#define CSW_SCS_FLAG_STRING_MAX 64

#define	CSW_REASON_GET_SCS_FLAG(_reason) (((_reason) & CSW_SCS_FLAG_MASK) >> CSW_SCS_FLAG_SHIFT)
#define CSW_REASON_SET_SCS_FLAG(_scs_flag, _reason)	((((_scs_flag) << CSW_SCS_FLAG_SHIFT) & CSW_SCS_FLAG_MASK) | (_reason))
enum ieee80211_csw_reason {
	/**
	 * Reason is unknown
	 */
	IEEE80211_CSW_REASON_UNKNOWN,
	/**
	 * Smart channel selection
	 */
	IEEE80211_CSW_REASON_SCS,
	/**
	 * Radar detection
	 */
	IEEE80211_CSW_REASON_DFS,
	/**
	 * Channel set by user
	 */
	IEEE80211_CSW_REASON_MANUAL,
	/**
	 * Configuration change
	 */
	IEEE80211_CSW_REASON_CONFIG,
	/**
	 * Scan initiated by user
	 */
	IEEE80211_CSW_REASON_SCAN,
	/**
	 * Off-channel CAC
	 */
	IEEE80211_CSW_REASON_OCAC,
	/**
	 * Channel switch announcement
	 */
	IEEE80211_CSW_REASON_CSA,
	/**
	 * TDLS Channel switch announcement
	 */
	IEEE80211_CSW_REASON_TDLS_CS,
	/**
	 * Number of values
	 */
	IEEE80211_CSW_REASON_MAX
};
/**@}*/

/*
 * Reasons for channel switches that are not recorded and therefore
 * should not be listed in QCSAPI documentation
 */
enum ieee80211_csw_reason_private {
	IEEE80211_CSW_REASON_SAMPLING = IEEE80211_CSW_REASON_MAX,
	IEEE80211_CSW_REASON_OCAC_RUN,
	IEEE80211_CSW_REASON_BGSCAN,
};

/* Keep this in sync with swfeat_desc */
enum swfeat {
	SWFEAT_ID_MODE_AP,
	SWFEAT_ID_MODE_STA,
	SWFEAT_ID_MODE_REPEATER,
	SWFEAT_ID_PCIE_RC,
	SWFEAT_ID_VHT,
	SWFEAT_ID_2X2,
	SWFEAT_ID_2X4,
	SWFEAT_ID_3X3,
	SWFEAT_ID_4X4,
	SWFEAT_ID_HS20,
	SWFEAT_ID_WPA2_ENT,
	SWFEAT_ID_MESH,
	SWFEAT_ID_TDLS,
	SWFEAT_ID_OCAC,
	SWFEAT_ID_QHOP,
	SWFEAT_ID_QSV,
	SWFEAT_ID_QSV_NEIGH,
	SWFEAT_ID_MU_MIMO,
	SWFEAT_ID_DUAL_CHAN_VIRT,
	SWFEAT_ID_DUAL_CHAN,
	SWFEAT_ID_DUAL_BAND_VIRT,
	SWFEAT_ID_DUAL_BAND,
	SWFEAT_ID_QTM_PRIO,
	SWFEAT_ID_QTM,
	SWFEAT_ID_SPEC_ANALYZER,
	SWFEAT_ID_MAX
};

#define SWFEAT_MAP_SIZE (SWFEAT_ID_MAX / 8 + 1)

/* Used to scale temperature measurements */
#define QDRV_TEMPSENS_COEFF    100000
#define QDRV_TEMPSENS_COEFF10  (10 * QDRV_TEMPSENS_COEFF)

/* Aligns the supplied size to the specified power_of_two */
#define QTN_ALIGN_TO(size_to_align, power_of_two) \
	(((size_to_align) + (power_of_two) - 1) & ~((power_of_two) - 1))

#define FIELD_ARRAY_SIZE(t, a)	(sizeof((((t*)0)->a))/sizeof(((((t*)0)->a))[0]))

#endif /* _SHARED_DEFS_H_ */
