[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/general/lwa_shm_def.h b/mcu/interface/protocol/general/lwa_shm_def.h
new file mode 100644
index 0000000..678b853
--- /dev/null
+++ b/mcu/interface/protocol/general/lwa_shm_def.h
@@ -0,0 +1,218 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * ---------
+ *	lwa_shm_def.h
+ *
+ * Project:
+ * --------
+ *  UMOLY
+ *
+ * Description:
+ * ------------
+ *  The share memory definitions of LWA (LTE-WLAN Aggregation)
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *==============================================================================
+ * 				HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *------------------------------------------------------------------------------
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
+ *==============================================================================
+ *******************************************************************************/
+
+#ifndef LWA_SHM_DEF_H
+#define LWA_SHM_DEF_H
+
+#define LWA_ALIGN_SIZE (4)
+#define LWA_FOUR_BYTE_ALIGN_MASK (LWA_ALIGN_SIZE - 1)
+#define LWA_SIZE_FOUR_BYTE_ALIGN(_sz) (((_sz) + LWA_ALIGN_SIZE - 1) & ~LWA_FOUR_BYTE_ALIGN_MASK)
+
+/****************************************************************************
+ * LWA Share Memory Layout version 1
+ *
+ * shm_start_addr
+ *     |<-------------------------shm_total_size---------------------->|
+ *     |                      |                                        |
+ *     |<-----desc_ring------>|<----------data_ring------------->|<-r->| 
+ *     |                      |                                  |     | 
+ *     |    lwa_dl_desc[N]    |         lwa_dl_buff_t[N]         |     | 
+ *     |                      |                                  |     | 
+ *
+ * 1) N = floor(shm_total_size / (sizeof(lwa_dl_desc)+size(lwa_dl_buff_t)))
+ * 2) lwa_dl_desc is 4-byte-aligned
+ * 3) lwa_dl_buff_struct is 4-byte-aligned
+ * 4) Each element from desc_ring and data_ring is 1-to-1 mapping
+ *    ex. lwa_dl_desc[100] decribes lwa_dl_buff_t[100]
+ * 5) r is remainder tail from floor()
+ *
+ ****************************************************************************/
+#define LWA_SHM_LAYOUT_VER (1) //rel-13, wifi downlink only
+
+
+/****************************************************************************
+ * Type Definitions
+ ****************************************************************************/
+typedef struct _lwa_dl_desc lwa_dl_desc;
+
+
+/****************************************************************************
+ * LWA downlink decriptor, complies with
+ * 1) l2ce_sod_desc
+ * 2) qbm_gpd
+ * 3) wifi usage
+ ****************************************************************************/
+struct _lwa_dl_desc
+{
+	kal_uint8 	         flag;
+	kal_uint8 	         cksum;
+	kal_uint16 	         desc_index;
+	lwa_dl_desc         *next_ptr;
+    lwa_dl_desc         *data_ptr;
+    kal_uint16	         data_len;
+	kal_uint16	         payload_offset;
+    kal_uint8		     pad0;
+	kal_uint8		     bearer;
+	kal_uint8		     key_index;
+	kal_uint8		     sec_func;
+    kal_uint32	         count;
+    kal_uint8		    *out_ptr;
+};
+
+
+/****************************************************************************
+ * WIFI downlink buffer reserved, including
+ * 1) HW_MAC_RX_DESC_T:          32 bytes
+ * 2) HW_MAC_RX_STS_GROUP_4_T:   32 bytes
+ * 3) Ether frame fields:        18 bytes = dst(6)+src(6)+type(2)+fcs(4)
+ ****************************************************************************/
+#define LWA_WIFI_DL_RSV_LEN     (82)
+
+
+/****************************************************************************
+ * WIFI downlink MTU
+ ****************************************************************************/
+#define LWA_WIFI_DL_IP_MTU        (1500) 
+#define LWA_MAX_HDR_LEN           (4) //3gpp r13: 1
+#define LTE_PDCP_MAX_HDR_LEN      (4) //3gpp r13: 1~3
+#define LWA_WIFI_DL_PAYLOAD_MTU   (LWA_WIFI_DL_IP_MTU + LWA_MAX_HDR_LEN + LTE_PDCP_MAX_HDR_LEN)
+
+
+/****************************************************************************
+ * LWA downlink buffer
+ ****************************************************************************/
+#define LWA_DL_BUFF_LEN       (2352) // state of art value of WDRV
+#define LWA_DL_BUFF_LEN_IDEAL (LWA_SIZE_FOUR_BYTE_ALIGN(LWA_WIFI_DL_RSV_LEN + LWA_WIFI_DL_PAYLOAD_MTU)) // ideal value
+
+#if (LWA_DL_BUFF_LEN < (LWA_WIFI_DL_RSV_LEN + LWA_WIFI_DL_MTU))
+#error LWA_DL_BUFF_LEN
+#endif
+
+typedef struct
+{
+	kal_uint8 	buff[LWA_DL_BUFF_LEN];
+} lwa_dl_buff_t;
+
+
+
+
+/****************************************************************************
+ * LWA WLAN/EPDCP U-plane Control Message
+ *   1. any message change shall keep backward compatibility
+ *   2. message length is fixed in 4 bytes
+ *   3. the higher 2 bytes are 'command' and the lower 2 bytes are 'value'
+ *   
+ ****************************************************************************/
+#define LWA_UP_CTRL_MSG_CMD_MAX   (0xFFFF)
+#define LWA_UP_CTRL_MSG_VALUE_MAX (0xFFFF)
+ 
+typedef enum
+{
+// [Command enumeration]                                              [Direction]        [Value]
+    LWA_UP_CTRL_CMD_DL_SHM_LAYOUT_SUPPORT_LIST                = 0,   //WLAN -> PDCP,      16-bit bitmap: each bit represents 1 layout version
+    LWA_UP_CTRL_CMD_DL_SHM_LAYOUT_DESICION                    = 1,   //WLAN <- PDCP,      16-bit bitmap: toggle only 1 bit for runtime layout version
+	LWA_UP_CTRL_CMD_DL_SHM_FULL                               = 2,   //WLAN -> PDCP,      value reserved 
+	LWA_UP_CTRL_CMD_DL_SHN_NOT_FULL                           = 3,   //WLAN <- PDCP,      value reserved
+    LWA_UP_CTRL_CMD_WLAN_DL_PKT_READY_NOTIFY_SETTING          = 4,   //WLAN <- PDCP,      0 means setting 'OFF'; 1 means setting 'ON'; others reserved
+	LWA_UP_CTRL_CMD_WLAN_DL_PKT_READY_NOTIFY                  = 5,   //WLAN -> PDCP,      if setting is on, WLAN send it after every packet write to SHM; value is reserved
+	LWA_UP_CTRL_CMD_DL_HDR_LOOK_AHEAD_SETTING                 = 6,   //WLAN <- PDCP,      value enum: lwa_dl_hdr_look_ahead_setting_enum
+
+//  add new command from here	
+	LWA_UP_CTRL_CMD_INVALID                                   = LWA_UP_CTRL_MSG_CMD_MAX
+} lwa_up_ctrl_cmd_enum;
+
+/****************************************************************************
+ * LWA downlink header look ahead setting:
+ *
+ * [usage] LTE send to WIFI at LWA init time, to configure WIFI driver
+ *         pre-read payload into descriptor for performance optimization
+ *       
+ ****************************************************************************/
+typedef enum
+{
+    LWA_DL_HDR_LOOK_AHEAD_0BYTE = 0,
+	//look ahead off
+	
+	LWA_DL_HDR_LOOK_AHEAD_1BYTE = 1,
+	//look ahead the first 1 byte of ether frame's payload:
+	//    lwa_dl_desc.bearer = (unsigned char) <payload_1st_byte>
+	
+	LWA_DL_HDR_LOOK_AHEAD_3BYTE = 2,
+	//look ahead first 3 bytes of ether frame's payload:
+	//    lwa_dl_desc.bearer = (unsigned char) <payload_1st_byte>
+	//    lwa_dl_desc.count = (unsigned char) (<payload_2nd_byte> << 8) + (unsigned char) <payload_3rd_byte>
+    //default value for 91/92 LWA
+	
+	LWA_DL_HDR_LOOK_AHEAD_INVALID = LWA_UP_CTRL_MSG_VALUE_MAX
+} lwa_dl_hdr_look_ahead_setting_enum;
+
+typedef enum
+{
+    LWA_WIFI_DL_PKT_READY_NOTIFY_OFF,
+	LWA_WIFI_DL_PKT_READY_NOTIFY_ON,
+	LWA_WIFI_DL_PKT_READY_NOTIFY_INVALID = LWA_UP_CTRL_MSG_VALUE_MAX
+} lwa_wifi_dl_pkt_ready_notify_setting_enum;
+
+
+
+#endif /* LWA_SHM_DEF_H */