/******************************************************************************
 *
 * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
 * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
 * Copyright(c) 2016 - 2017 Intel Deutschland GmbH
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * 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.
 *  * Neither the name Intel Corporation nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "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 COPYRIGHT
 * OWNER OR CONTRIBUTORS 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.
 *
 *****************************************************************************/

#ifndef SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_FW_API_SF_H_
#define SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_FW_API_SF_H_

#include "src/iwlwifi/platform/compiler.h"

/* Smart Fifo state */
enum iwl_sf_state {
  SF_LONG_DELAY_ON = 0, /* should never be called by driver */
  SF_FULL_ON,
  SF_UNINIT,
  SF_INIT_OFF,
  SF_HW_NUM_STATES
};

/* Smart Fifo possible scenario */
enum iwl_sf_scenario {
  SF_SCENARIO_SINGLE_UNICAST,
  SF_SCENARIO_AGG_UNICAST,
  SF_SCENARIO_MULTICAST,
  SF_SCENARIO_BA_RESP,
  SF_SCENARIO_TX_RESP,
  SF_NUM_SCENARIO
};

#define SF_TRANSIENT_STATES_NUMBER 2 /* SF_LONG_DELAY_ON and SF_FULL_ON */
#define SF_NUM_TIMEOUT_TYPES 2       /* Aging timer and Idle timer */

/* smart FIFO default values */
#define SF_W_MARK_SISO 6144
#define SF_W_MARK_MIMO2 8192
#define SF_W_MARK_MIMO3 6144
#define SF_W_MARK_LEGACY 4096
#define SF_W_MARK_SCAN 4096

/* SF Scenarios timers for default configuration (aligned to 32 uSec) */
#define SF_SINGLE_UNICAST_IDLE_TIMER_DEF 160  /* 150 uSec  */
#define SF_SINGLE_UNICAST_AGING_TIMER_DEF 400 /* 0.4 mSec */
#define SF_AGG_UNICAST_IDLE_TIMER_DEF 160     /* 150 uSec */
#define SF_AGG_UNICAST_AGING_TIMER_DEF 400    /* 0.4 mSec */
#define SF_MCAST_IDLE_TIMER_DEF 160           /* 150 mSec */
#define SF_MCAST_AGING_TIMER_DEF 400          /* 0.4 mSec */
#define SF_BA_IDLE_TIMER_DEF 160              /* 150 uSec */
#define SF_BA_AGING_TIMER_DEF 400             /* 0.4 mSec */
#define SF_TX_RE_IDLE_TIMER_DEF 160           /* 150 uSec */
#define SF_TX_RE_AGING_TIMER_DEF 400          /* 0.4 mSec */

/* SF Scenarios timers for BSS MAC configuration (aligned to 32 uSec) */
#define SF_SINGLE_UNICAST_IDLE_TIMER 320   /* 300 uSec  */
#define SF_SINGLE_UNICAST_AGING_TIMER 2016 /* 2 mSec */
#define SF_AGG_UNICAST_IDLE_TIMER 320      /* 300 uSec */
#define SF_AGG_UNICAST_AGING_TIMER 2016    /* 2 mSec */
#define SF_MCAST_IDLE_TIMER 2016           /* 2 mSec */
#define SF_MCAST_AGING_TIMER 10016         /* 10 mSec */
#define SF_BA_IDLE_TIMER 320               /* 300 uSec */
#define SF_BA_AGING_TIMER 2016             /* 2 mSec */
#define SF_TX_RE_IDLE_TIMER 320            /* 300 uSec */
#define SF_TX_RE_AGING_TIMER 2016          /* 2 mSec */

#define SF_LONG_DELAY_AGING_TIMER 1000000 /* 1 Sec */

#define SF_CFG_DUMMY_NOTIF_OFF BIT(16)

/**
 * struct iwl_sf_cfg_cmd - Smart Fifo configuration command.
 * @state: smart fifo state, types listed in &enum iwl_sf_state.
 * @watermark: Minimum allowed available free space in RXF for transient state.
 * @long_delay_timeouts: aging and idle timer values for each scenario
 * in long delay state.
 * @full_on_timeouts: timer values for each scenario in full on state.
 */
struct iwl_sf_cfg_cmd {
  __le32 state;
  __le32 watermark[SF_TRANSIENT_STATES_NUMBER];
  __le32 long_delay_timeouts[SF_NUM_SCENARIO][SF_NUM_TIMEOUT_TYPES];
  __le32 full_on_timeouts[SF_NUM_SCENARIO][SF_NUM_TIMEOUT_TYPES];
} __packed; /* SF_CFG_API_S_VER_2 */

#endif  // SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_FW_API_SF_H_
