text: /*
   * Copyright (c) 2014-2015, The Linux Foundation. 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 of The Linux Foundation 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 "AS IS" AND ANY EXPRESS OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
   * 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 CONSTANTS_H_
  #define CONSTANTS_H_
  
  
  #include <stdlib.h>
  #include <stdio.h>
  
  #define PRE_PHASE_ZERO_TEST_CONFIGURATION 0
  /*----------------------------------------------------------------------
   *Configuration 1 (see configure_system_1 )
   *-----USB_PROD--->[IPA DMA]----USB_CONS--->
   *----------------------------------------------------------------------
   */
  #define PHASE_ZERO_TEST_CONFIGURATION	  1
  /*----------------------------------------------------------------------
   *Configuration 2 (see configure_system_2 )
   *					[IPA]----USB2_CONS-->
   *-----USB_PROD--->[IPA]----USB3_CONS--->
   *					[IPA]----USB4_CONS--->
   *----------------------------------------------------------------------
   */
  #define PHASE_TWO_TEST_CONFIGURATION      2
  /*----------------------------------------------------------------------
   *Configuration 3 (see configure_system_3 )
   *					[IPA]----USB_CONS------>
   *-----USB2_PROD--->[IPA]----USB2_CONS--->
   *					[IPA]----USB4_CONS---->
   *----------------------------------------------------------------------
   */
  #define PHASE_THREE_TEST_CONFIGURATION    3
  /*Configuration 5 (see configure_system_5 )
   *					[IPA]----USB2_CONS + Header Insertion (6Bytes) -->
   *-----USB_PROD--->[IPA]----USB3_CONS +
   *Header Insertion (22Bytes) + Length offset (11Bytes) -->
   *					[IPA]----USB4_CONS +
   *Header Insertion (22Bytes) + Length offset (11Bytes) + Const(1Byte)-->
   */
  
  /* This Cfg is only for USB Integration Phase I*/
  #define PHASE_FIVE_TEST_CONFIGURATION	  5
  #define PHASE_SIX_TEST_CONFIGURATION	  6
  /*Configuration 7 (see configure_system_7 )
   *                  [IPA]----USB2_CONS-->
   *-----USB_PROD--->[IPA]----USB3_CONS--->
   *                  [IPA]----USB4_CONS--->
   *                  [IPA]----A5 - Exception Pipe--->
   */
  #define PHASE_SEVEN_TEST_CONFIGURATION    7
  /*----------------------------------------------------------------------
   *Configuration 8 (see configure_system_8 )
   *-----USB3_CONS--->[IPA DMA]----USB_CONS (TLP aggregation byte limit)--->
   *-----USB_PROD (TLP deaggregation)--->[IPA DMA]----USB3_CONS--->
   *-----USB2_PROD (TLP deaggregation)--->
   *-----[IPA DMA]----USB_CONS (TLP aggregation byte limit)--->
   *-----USB4_PROD--->[IPA DMA]----USB2_CONS (TLP aggregation time limit)--->
   *----------------------------------------------------------------------
   */
  #define PHASE_EIGHT_TEST_CONFIGURATION    8
  /*----------------------------------------------------------------------
   *Configuration 9 (see configure_system_9 )
   *-----USB3_PROD--->[IPA DMA]----USB_CONS (MBIM aggregation byte limit)--->
   *-----USB_PROD (MBIM deaggregation)--->[IPA DMA]----USB3_CONS--->
   *-----USB2_PROD (MBIM deaggregation)--->
   *-----[IPA DMA]----USB_CONS (MBIM aggregation byte limit)--->
   *-----USB4_PROD--->[IPA DMA]----USB2_CONS (MBIM aggregation time limit)--->
   *----------------------------------------------------------------------
   */
  #define PHASE_NINE_TEST_CONFIGURATION    9
  /*----------------------------------------------------------------------
   *Configuration 10 (see configure_system_10 )
   *-----USB_PROD--->[IPA DMA]----USB_CONS (MBIM aggregation no limits)--->
   *----------------------------------------------------------------------
   */
  #define PHASE_TEN_TEST_CONFIGURATION      10
  /*----------------------------------------------------------------------
   *Configuration 11 (see configure_system_11 )
   *-----USB_PROD----->[IPA]----
   * USB2_CONS(MBIM aggregation byte limit)--->
   *-USB2_PROD (MBIM deaggregation)->[IPA]----USB3_CONS--->
   *------------------>[IPA]----
   *USB_CONS (MBIM aggregation time limit)----------->
   *------------------>[IPA]----
   *A5_LAN_WAN_CONS (MBIM aggregation no limits)---->
   *----------------------------------------------------------------------
   */
  #define PHASE_ELEVEN_TEST_CONFIGURATION    11
  /*----------------------------------------------------------------------
   *Configuration 12 (see configure_system_12 )
   *-----USB_PROD----->[IPA]----USB2_CONS (MBIM aggregation byte limit)--->
   *-USB2_PROD (MBIM deaggregation)->[IPA]----USB3_CONS--->
   *------------------>[IPA]----
   * USB_CONS (MBIM aggregation time limit)----------->
   *------------------>[IPA]----
   * A5_LAN_WAN_CONS (MBIM aggregation no limits)---->
   *----------------------------------------------------------------------
   */
  #define PHASE_TWELVE_TEST_CONFIGURATION		12
  /*----------------------------------------------------------------------
   *Configuration 9 (see configure_system_17 )
   *-----USB3_PROD--->[IPA DMA]----USB_CONS (RNDIS aggregation byte limit)--->
   *-----USB_PROD (RNDIS deaggregation)--->[IPA DMA]----USB3_CONS--->
   *-----USB2_PROD (RNDIS deaggregation)--->
   *-----[IPA DMA]----USB_CONS (RNDIS aggregation byte limit)--->
   *-----USB4--->[IPA DMA]----USB2_CONS (RNDIS aggregation time limit)--->
   *----------------------------------------------------------------------
   */
  #define PHASE_SEVENTEEN_TEST_CONFIGURATION    17
  
  /*
   * Data path test
   */
  #define PHASE_EIGHTEEN_TEST_CONFIGURATION 18
  
  /*----------------------------------------------------------------------
   *Configuration 19 (see configure_system_19 )
   *-----USB_PROD--->[IPA DMA]----USB_CONS--->
   *-----suspend [IPA DMA]----USB_CONS (for testing suspend interrupt)--->
   *----------------------------------------------------------------------
   */
  #define PHASE_NINETEEN_TEST_CONFIGURATION 19
  
  #define PHASE_TWENTY_TEST_CONFIGURATION 20
  /*----------------------------------------------------------------------
   *Configuration 20 (see configure_system_20 )
   *-----PROD (WLAN header removal)--------------------->[IPA]----CONS---->
   *-----PROD (RNDIS de-aggregation + Header removal)--->[IPA]
   *----------------------------------------------------------------------
   */
  
  enum IPATestConfiguration {
  	IPA_TEST_CONFIFURATION_0 = PRE_PHASE_ZERO_TEST_CONFIGURATION,
  	IPA_TEST_CONFIFURATION_1 = PHASE_ZERO_TEST_CONFIGURATION,
  	IPA_TEST_CONFIFURATION_2 = PHASE_TWO_TEST_CONFIGURATION,
  	IPA_TEST_CONFIFURATION_3 = PHASE_THREE_TEST_CONFIGURATION,
  	IPA_TEST_CONFIFURATION_5 = PHASE_FIVE_TEST_CONFIGURATION,
  	IPA_TEST_CONFIFURATION_6 = PHASE_SIX_TEST_CONFIGURATION,
  	IPA_TEST_CONFIFURATION_7 = PHASE_SEVEN_TEST_CONFIGURATION,
  	IPA_TEST_CONFIGURATION_8 = PHASE_EIGHT_TEST_CONFIGURATION,
  	IPA_TEST_CONFIGURATION_9 = PHASE_NINE_TEST_CONFIGURATION,
  	IPA_TEST_CONFIGURATION_10 = PHASE_TEN_TEST_CONFIGURATION,
  	IPA_TEST_CONFIGURATION_11 = PHASE_ELEVEN_TEST_CONFIGURATION,
  	IPA_TEST_CONFIGURATION_12 = PHASE_TWELVE_TEST_CONFIGURATION,
  	IPA_TEST_CONFIGURATION_17 = PHASE_SEVENTEEN_TEST_CONFIGURATION,
  	IPA_TEST_CONFIGURATION_18 = PHASE_EIGHTEEN_TEST_CONFIGURATION,
  	IPA_TEST_CONFIGURATION_19 = PHASE_NINETEEN_TEST_CONFIGURATION,
  	IPA_TEST_CONFIGURATION_20 = PHASE_NINETEEN_TEST_CONFIGURATION,
  };
  #define CONFIGURATION_NODE_PATH "/dev/ipa_test"
  
  /*producer*/
  #define INTERFACE0_TO_IPA_DATA_PATH			"/dev/to_ipa_0"
  #define INTERFACE0_FROM_IPA_DATA_PATH		NULL
  
  /*producer*/
  #define INTERFACE4_TO_IPA_DATA_PATH			"/dev/to_ipa_1"
  #define INTERFACE4_FROM_IPA_DATA_PATH		NULL
  
  /*consumer*/
  #define INTERFACE1_TO_IPA_DATA_PATH			NULL
  #define INTERFACE1_FROM_IPA_DATA_PATH		"/dev/from_ipa_0"
  
  /*consumer 2*/
  #define INTERFACE2_TO_IPA_DATA_PATH			NULL
  #define INTERFACE2_FROM_IPA_DATA_PATH		"/dev/from_ipa_1"
  
  /*Default consumer*/
  #define INTERFACE3_TO_IPA_DATA_PATH			NULL
  #define INTERFACE3_FROM_IPA_DATA_PATH		"/dev/from_ipa_2"
  
  /*Exceptions producer*/
  #define INTERFACE_TO_IPA_EXCEPTION_PATH		NULL
  #define INTERFACE_FROM_IPA_EXCEPTION_PATH	"/dev/ipa_exception_pipe"
  
  /*The next configuration should be used by the ITAKEM as well.*/
  
  /*----------------------------------------------------------------------
   *Configuration 1 (see configure_system_1 )
   *-----USB_PROD--->[IPA DMA]----USB_CONS--->
   *----------------------------------------------------------------------
   */
  #define CONFIG_1_FROM_USB1_TO_IPA_DMA		"/dev/to_ipa_0"
  #define CONFIG_1_FROM_IPA_TO_USB1_DMA		"/dev/from_ipa_0"
  
  /*----------------------------------------------------------------------
   *Configuration 2 (see configure_system_2 )
   *                  [IPA]----USB2_CONS-->
   *-----USB_PROD--->[IPA]----USB3_CONS--->
   *                  [IPA]----Q6_LAN_CONS--->
   *---------------------------------------------------------------------
   */
  #define CONFIG_2_FROM_USB_TO_IPA            "/dev/to_ipa_0"
  #define CONFIG_2_FROM_IPA_TO_A2_NDUN        "/dev/from_ipa_0"
  #define CONFIG_2_FROM_IPA_TO_A2_DUN         "/dev/from_ipa_1"
  #define CONFIG_2_FROM_IPA_TO_Q6_LAN         "/dev/from_ipa_2"
  
  /*USB1 is an EthernetII Client*/
  #define FROM_USB1_TO_IPA				"/dev/to_ipa_0"
  #define FROM_IPA_TO_USB1				"/dev/from_ipa_0"
  #define USB1_CLIENT_HEADER_LENGTH		14
  
  /*----------------------------------------------------------------------
   *Configuration 3 (see configure_system_3 )
   *                     [IPA]----USB_CONS------>
   *-----USB2_PROD--->[IPA]----USB2_CONS--->
   *                     [IPA]----Q6_LAN_CONS---->
   *----------------------------------------------------------------------
   */
  #define CONFIG_3_FROM_A2_NDUN_TO_IPA            "/dev/to_ipa_0"
  #define CONFIG_3_FROM_IPA_TO_USB1               "/dev/from_ipa_0"
  #define CONFIG_3_FROM_IPA_TO_A2_NDUN            "/dev/from_ipa_1"
  #define CONFIG_3_FROM_IPA_TO_Q6_LAN             "/dev/from_ipa_2"
  
  /*----------------------------------------------------------------------
   *Configuration 8 (see configure_system_8 )
   *-----USB3_PROD--->[IPA DMA]----
   *-----USB_CONS (TLP aggregation byte limit)--->
   *-----USB_PROD (TLP deaggregation)--->[IPA DMA]----USB3_CONS--->
   *-----USB2_PROD (TLP deaggregation)--->
   * [IPA DMA]----USB_CONS (TLP aggregation byte limit)--->
   *-----USB4--->[IPA DMA]----USB2_CONS (TLP aggregation time limit)--->
   *----------------------------------------------------------------------
   */
  #define CONFIG_8_NO_AGG_TO_IPA_AGG			"/dev/to_ipa_0"
  #define CONFIG_8_DEAGG_TO_IPA_NO_AGG		"/dev/to_ipa_1"
  #define CONFIG_8_DEAGG_TO_IPA_AGG			"/dev/to_ipa_2"
  #define CONFIG_8_NO_AGG_TO_IPA_AGG_TIME     "/dev/to_ipa_3"
  #define CONFIG_8_FROM_IPA_AGG				"/dev/from_ipa_0"
  #define CONFIG_8_FROM_IPA_NO_AGG			"/dev/from_ipa_1"
  #define CONFIG_8_DEAGG_FROM_IPA_AGG         "/dev/from_ipa_2"
  
  /*----------------------------------------------------------------------
   *Configuration 9 (see configure_system_9 )
   *-----USB3_PROD--->[IPA DMA]----
   * USB_CONS (MBIM aggregation byte limit)--->
   *-----USB_PROD (MBIM deaggregation)--->[IPA DMA]----USB3_CONS--->
   *-----USB2_PROD (MBIM deaggregation)--->
   * [IPA DMA]----USB_CONS (MBIM aggregation byte limit)--->
   *-----USB4--->[IPA DMA]----
   * USB2_CONS (MBIM aggregation time limit)--->
   *----------------------------------------------------------------------
   */
  #define CONFIG_9_NO_AGG_TO_IPA_AGG			"/dev/to_ipa_0"
  #define CONFIG_9_DEAGG_TO_IPA_NO_AGG		"/dev/to_ipa_1"
  #define CONFIG_9_DEAGG_TO_IPA_AGG			"/dev/to_ipa_2"
  #define CONFIG_9_NO_AGG_TO_IPA_AGG_TIME     "/dev/to_ipa_3"
  #define CONFIG_9_FROM_IPA_AGG				"/dev/from_ipa_0"
  #define CONFIG_9_FROM_IPA_NO_AGG			"/dev/from_ipa_1"
  #define CONFIG_9_DEAGG_FROM_IPA_AGG         "/dev/from_ipa_2"
  
  /*----------------------------------------------------------------------
   *Configuration 10 (see configure_system_10 )
   *-----USB_PROD--->[IPA DMA]----
   *	USB_CONS (MBIM aggregation no limits)--->
   *----------------------------------------------------------------------
   */
  #define CONFIG_10_TO_IPA_AGG_ZERO_LIMITS		"/dev/to_ipa_0"
  #define CONFIG_10_FROM_IPA_AGG_ZERO_LIMITS		"/dev/from_ipa_0"
  
  /*----------------------------------------------------------------------
   *Configuration 11 (see configure_system_11 )
   *-----USB_PROD----->[IPA]----
   * USB2_CONS (MBIM aggregation byte limit)--->
   * USB2_PROD (MBIM deaggregation)->[IPA]----USB3_CONS--->
   *------------------>[IPA]----
   * USB_CONS (MBIM aggregation time limit)----------->
   *------------------>[IPA
   * A5_LAN_WAN_CONS (MBIM aggregation no limits)---->
   *----------------------------------------------------------------------
   */
  #define CONFIG_11_TO_IPA				"/dev/to_ipa_0"
  #define CONFIG_11_TO_IPA_DEAGG			"/dev/to_ipa_1"
  #define CONFIG_11_FROM_IPA_AGG			"/dev/from_ipa_0"
  #define CONFIG_11_FROM_IPA				"/dev/from_ipa_1"
  #define CONFIG_11_FROM_IPA_AGG_TIME		"/dev/from_ipa_2"
  #define CONFIG_11_FROM_IPA_ZERO_LIMITS	"/dev/from_ipa_3"
  
  /*----------------------------------------------------------------------
   *Configuration 12 (see configure_system_12 )
   *-----USB_PROD----->[IPA]----
   * USB2_CONS (MBIM aggregation byte limit)--->
   *-USB2_PROD (MBIM deaggregation)->[IPA]----USB3_CONS--->
   *------------------>[IPA]----
   * USB_CONS (MBIM aggregation time limit)----------->
   *------------------>[IPA]----
   * A5_LAN_WAN_CONS (MBIM aggregation no limits)---->
   *----------------------------------------------------------------------
   */
  #define CONFIG_12_TO_IPA				"/dev/to_ipa_0"
  #define CONFIG_12_TO_IPA_DEAGG			"/dev/to_ipa_1"
  #define CONFIG_12_FROM_IPA_AGG			"/dev/from_ipa_0"
  #define CONFIG_12_FROM_IPA				"/dev/from_ipa_1"
  #define CONFIG_12_FROM_IPA_AGG_TIME		"/dev/from_ipa_2"
  #define CONFIG_12_FROM_IPA_ZERO_LIMITS	"/dev/from_ipa_3"
  
  /*Configuration 7 (see configure_system_7 )
   *                  [IPA]----USB2_CONS-->
   *-----USB_PROD--->[IPA]----USB3_CONS--->
   *                  [IPA]----Q6_LAN_CONS--->
   *                  [IPA]----A5 - Exception Pipe--->
   */
  #define CONFIG_7_FROM_USB1_TO_IPA		"/dev/to_ipa_0"
  #define CONFIG_7_FROM_IPA_TO_A5_EXCEPTION	"/dev/ipa_exception_pipe"
  
  /*----------------------------------------------------------------------
   *Configuration 17 (see configure_system_17 )
   *-----USB_PROD----->[IPA]----
   * USB2_CONS (RNDIS aggregation byte limit)--->
   * USB2_PROD (RNDIS deaggregation)->[IPA]----USB3_CONS--->
   *------------------>[IPA]----
   * USB_CONS (RNDIS aggregation time limit)----------->
   *------------------>[IPA]----
   * A5_LAN_WAN_CONS (RNDIS aggregation no limits)---->
   *----------------------------------------------------------------------
   */
  #define CONFIG_17_TO_IPA				"/dev/to_ipa_0"
  #define CONFIG_17_TO_IPA_NO_HDR			"/dev/to_ipa_1"
  #define CONFIG_17_TO_IPA_DEAGG			"/dev/to_ipa_2"
  #define CONFIG_17_FROM_IPA_AGG			"/dev/from_ipa_0"
  #define CONFIG_17_FROM_IPA				"/dev/from_ipa_1"
  #define CONFIG_17_FROM_IPA_AGG_TIME		"/dev/from_ipa_2"
  #define CONFIG_17_FROM_IPA_ZERO_LIMITS	"/dev/from_ipa_3"
  
  /*----------------------------------------------------------------------
   *Configuration 18 (see configure_system_18 )---------------------------
   *-----USB_PROD----->[IPA]--------------->USB_CONS--------->A5----------
   *-----USB_PROD2 is a dummy endpoint handle for packet handling between-
   *-----user space and kernel space in the IPA driver--------------------
   *----------------------------------------------------------------------
   */
  #define CONFIG_18_TO_IPA				"/dev/to_ipa_0"
  #define CONFIG_18_DUMMY_ENDPOINT		"/dev/to_ipa_1"
  #define CONFIG_18_FROM_IPA			"/dev/from_ipa_0"
  
  /*----------------------------------------------------------------------
   *Configuration 19 (see configure_system_19 )
   *-----USB_PROD--->[IPA DMA]----USB_CONS--->
   *----------------------------------------------------------------------
   */
  #define CONFIG_19_FROM_USB_TO_IPA_DMA		"/dev/to_ipa_0"
  #define CONFIG_19_FROM_IPA_TO_USB_DMA		"/dev/from_ipa_0"
  
  enum ipv6_ext_hdr_type {
  	HOP_BY_HOP_OPT	= 0,
  	DEST_OPT	= 60,
  	ROUTING         = 43,
  	FRAGMENT	= 44,
  	AH		= 51,
  	ESP		= 50,
  	DEST_OPT_UL	= 60,
  	Mobility	= 135,
  	NONE		= 59
  };
  /*File that are being used by the test application:*/
  
  #define IPV4_FILE_PATH				"Input/IPV4_3"
  
  #endif /* CONSTANTS_H_ */
  