253 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			253 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#ifndef __TX_ENTRY_H
							 | 
						||
| 
								 | 
							
								#define __TX_ENTRY_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "phy_bb.h"
							 | 
						||
| 
								 | 
							
								#include "phy_phase.h"
							 | 
						||
| 
								 | 
							
								#include "tx_mpdu_start.h"
							 | 
						||
| 
								 | 
							
								#include "iot_irq.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MAC_TX_BEACON                   0
							 | 
						||
| 
								 | 
							
								#define MAC_TX_SOF                      1
							 | 
						||
| 
								 | 
							
								#define MAC_TX_SACK                     2
							 | 
						||
| 
								 | 
							
								#define MAC_TX_CTS                      3
							 | 
						||
| 
								 | 
							
								#define MAC_TX_SOUND                    4
							 | 
						||
| 
								 | 
							
								#define MAC_TX_RSOF                     5
							 | 
						||
| 
								 | 
							
								#define MAC_TX_TMI                      10
							 | 
						||
| 
								 | 
							
								#define MAC_TX_MIX_MODE                 11
							 | 
						||
| 
								 | 
							
								#define MAC_TX_GP_EXT                   12
							 | 
						||
| 
								 | 
							
								#define MAC_TX_GP_TONE_MASK             13
							 | 
						||
| 
								 | 
							
								#define MAC_TX_BURN                     14
							 | 
						||
| 
								 | 
							
								#define MAC_TX_BAND_SWITCH              15
							 | 
						||
| 
								 | 
							
								#define MAC_TX_GP_HYBRID                16
							 | 
						||
| 
								 | 
							
								#define PHY_BURST_MODE                  17
							 | 
						||
| 
								 | 
							
								#define MAC_TX_INTR_BCN_ALT             100
							 | 
						||
| 
								 | 
							
								#define MAC_TX_INTR_MPDU_COMPLETE       101
							 | 
						||
| 
								 | 
							
								#define MAC_TX_SCHED_BCN_AHEAD_ALERT    102
							 | 
						||
| 
								 | 
							
								#define MAC_TX_PHY_TD_START             103
							 | 
						||
| 
								 | 
							
								#define MAC_TX_EMC_SCAN                 104
							 | 
						||
| 
								 | 
							
								#define MAC_PHY_RST_FLOW                105
							 | 
						||
| 
								 | 
							
								#define MAC_SOUND_TMAP                  106
							 | 
						||
| 
								 | 
							
								#define MAC_TX_TEST_ID                  MAC_TX_BEACON
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_0                       0
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_1                       1
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_2                       2
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_3                       3
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_4                       4
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_5                       5
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_6                       6
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_7                       7
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_8                       8
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_9                       9
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_10                      10
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_11                      11
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_12                      12
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_13                      13
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_14                      14
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_0                   15
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_1                   16
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_2                   17
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_3                   18
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_4                   19
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_5                   20
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_6                   21
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_7                   22
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_8                   23
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_9                   24
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_10                  25
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_11                  26
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_12                  27
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_13                  28
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_14                  29
							 | 
						||
| 
								 | 
							
								#define MAC_EXT_TMI_MAX                 30
							 | 
						||
| 
								 | 
							
								#define MAC_TMI_ID                      MAC_TMI_4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MAC_PB_NUM_0                    0
							 | 
						||
| 
								 | 
							
								#define MAC_PB_NUM_1                    1
							 | 
						||
| 
								 | 
							
								#define MAC_PB_NUM_2                    2
							 | 
						||
| 
								 | 
							
								#define MAC_PB_NUM_3                    3
							 | 
						||
| 
								 | 
							
								#define MAC_PB_NUM_4                    4
							 | 
						||
| 
								 | 
							
								#define MAC_PB_NUM_ID                   MAC_PB_NUM_1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MAC_PB_SIZE_MAX                 PB_SIZE_520
							 | 
						||
| 
								 | 
							
								#define TX_PKT_SEND_INTERVAL            100
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* multi rate support */
							 | 
						||
| 
								 | 
							
								#define MAC_RATE_RANDOM_SUPPORT         0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* multi band support */
							 | 
						||
| 
								 | 
							
								#define MAC_MULTI_BAND_SUPPORT          0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* tx always enable */
							 | 
						||
| 
								 | 
							
								#define PHY_TX_ALWAYS_EN                0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* compatible with nid bit width of all protocols */
							 | 
						||
| 
								 | 
							
								#define PHY_TXRX_NID_VAL                (0xb)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* tx glb cfg */
							 | 
						||
| 
								 | 
							
								typedef struct _iot_tx_cfg_info {
							 | 
						||
| 
								 | 
							
								    /* phase */
							 | 
						||
| 
								 | 
							
								    PHY_PHASE_OVR_ID phase;
							 | 
						||
| 
								 | 
							
								        /* mac type */
							 | 
						||
| 
								 | 
							
								    uint32_t m_type :3,
							 | 
						||
| 
								 | 
							
								        /* current packet type */
							 | 
						||
| 
								 | 
							
								        p_type  :3,
							 | 
						||
| 
								 | 
							
								        /* current test type */
							 | 
						||
| 
								 | 
							
								        t_type  :7,
							 | 
						||
| 
								 | 
							
								        /* TMI */
							 | 
						||
| 
								 | 
							
								        tmi     :5,
							 | 
						||
| 
								 | 
							
								        /* pb num */
							 | 
						||
| 
								 | 
							
								        pb_num  :4,
							 | 
						||
| 
								 | 
							
								        /* band mode */
							 | 
						||
| 
								 | 
							
								        band_id :8,
							 | 
						||
| 
								 | 
							
								        /* gi */
							 | 
						||
| 
								 | 
							
								        gi :2;
							 | 
						||
| 
								 | 
							
								        /* source tei */
							 | 
						||
| 
								 | 
							
								    uint32_t src_tei : 12,
							 | 
						||
| 
								 | 
							
								        /* destination tei */
							 | 
						||
| 
								 | 
							
								        dst_tei : 12,
							 | 
						||
| 
								 | 
							
								        /* hwq num */
							 | 
						||
| 
								 | 
							
								        hwq_num :2,
							 | 
						||
| 
								 | 
							
								        /* ppdu mode */
							 | 
						||
| 
								 | 
							
								        ppdu_mode :2,
							 | 
						||
| 
								 | 
							
								        /* mpdu cnt */
							 | 
						||
| 
								 | 
							
								        mpdu_cnt :2,
							 | 
						||
| 
								 | 
							
								        /* turbo rate */
							 | 
						||
| 
								 | 
							
								        turbo_rate:2;
							 | 
						||
| 
								 | 
							
								        /* modulation */
							 | 
						||
| 
								 | 
							
								    uint16_t modu :3,
							 | 
						||
| 
								 | 
							
								        /* nid */
							 | 
						||
| 
								 | 
							
								        nid :8,
							 | 
						||
| 
								 | 
							
								        /* rate mode */
							 | 
						||
| 
								 | 
							
								        rate_mode :4,
							 | 
						||
| 
								 | 
							
								        /* sof ack en */
							 | 
						||
| 
								 | 
							
								        ack_en  :1;
							 | 
						||
| 
								 | 
							
								} iot_tx_cfg_info_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* register tx intr */
							 | 
						||
| 
								 | 
							
								typedef struct _iot_mac_intr_info {
							 | 
						||
| 
								 | 
							
								    uint32_t       int_num;
							 | 
						||
| 
								 | 
							
								    iot_irq_t      handle;
							 | 
						||
| 
								 | 
							
								} iot_mac_intr_info_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								extern volatile tx_mpdu_start *mpdu_start;
							 | 
						||
| 
								 | 
							
								extern iot_tx_cfg_info_t glb_cfg;
							 | 
						||
| 
								 | 
							
								extern uint32_t bcn_period_ms;
							 | 
						||
| 
								 | 
							
								extern uint32_t print_tx_period_ms;
							 | 
						||
| 
								 | 
							
								extern volatile bool_t mac_tx_complete_flag;
							 | 
						||
| 
								 | 
							
								extern volatile bool_t mac_beacon_alert_flag;
							 | 
						||
| 
								 | 
							
								extern iot_mac_intr_info_t mac_info;
							 | 
						||
| 
								 | 
							
								#if IOT_DTEST_ONLY_SUPPORT == 1
							 | 
						||
| 
								 | 
							
								extern uint16_t band_cnt[MAC_BB_MAX_RATE][MAX_HW_BAND];
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								extern uint16_t *band_cnt[MAC_BB_MAX_RATE];
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief tx_common_init.
							 | 
						||
| 
								 | 
							
								 *  The common API function is designed for external calling by MP
							 | 
						||
| 
								 | 
							
								 *  or the other compositive scenario.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param band_idx           [band index.]
							 | 
						||
| 
								 | 
							
								 *@param enable             [bool type, true or false.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								void tx_common_init(uint32_t band_idx);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_tx_gain_rms_set.
							 | 
						||
| 
								 | 
							
								 *  config tx td rms value to fix power.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param para_int           [int parameter.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								void phy_tx_gain_rms_set(uint8_t para_int);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief mac_tx_handle.
							 | 
						||
| 
								 | 
							
								 *  mac tx APIs to send specail pkt. such as phase,
							 | 
						||
| 
								 | 
							
								 *  mac prototype, packet type, number and if wait
							 | 
						||
| 
								 | 
							
								 *  rx or not.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param phase              [tx phase.]
							 | 
						||
| 
								 | 
							
								 *@param mac_type           [mac prototype.]
							 | 
						||
| 
								 | 
							
								 *@param pkt_type           [packet type.]
							 | 
						||
| 
								 | 
							
								 *@param num                [number.]
							 | 
						||
| 
								 | 
							
								 *@param wait_rx            [true or false.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								void mac_tx_handle(PHY_PHASE_OVR_ID phase, \
							 | 
						||
| 
								 | 
							
								    uint32_t mac_type, \
							 | 
						||
| 
								 | 
							
								    uint32_t pkt_type, \
							 | 
						||
| 
								 | 
							
								    uint32_t num, \
							 | 
						||
| 
								 | 
							
								    bool_t wait_rx);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief mac_glb_map.
							 | 
						||
| 
								 | 
							
								 *  update the newest global mac info.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param mac_type           [mac prototype.]
							 | 
						||
| 
								 | 
							
								 *@param pkt_type           [packet type.]
							 | 
						||
| 
								 | 
							
								 *@param test_type          [test id.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								void mac_glb_map(uint32_t mac_type, uint32_t pkt_type, uint32_t test_type);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_interrupt_init.
							 | 
						||
| 
								 | 
							
								 *  phy interrupt initialize.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param none               [none.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								void phy_interrupt_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief tx_send_packet_interval.
							 | 
						||
| 
								 | 
							
								 *  use for tx sending packet at interval.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param interval           [time interval.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void tx_send_packet_interval(uint32_t interval);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_tmap_common_init.
							 | 
						||
| 
								 | 
							
								 *  phy sound tone map common init.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param none               [none.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_tmap_common_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_tmap_init.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  sound tone map initilze.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param none               [none.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_tmap_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 *@brief phy_tmap_self_tmi_set.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *  phy tone map tx and rx tmi set.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *@param tmi                [which tmi to set.]
							 | 
						||
| 
								 | 
							
								 *@exception                [none.]
							 | 
						||
| 
								 | 
							
								 *@return                   [none.]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void phy_tmap_self_tmi_set(uint8_t tmi);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |