/space/home/slher/rel/Beken/v6_4_5/macsw/plf/refip/src/driver/ipc/ipc_emb.c File Reference

IPC module. More...

#include <string.h>
#include "rwnx_config.h"
#include "dbg_assert.h"
#include "co_math.h"
#include "ke_mem.h"
#include "ke_msg.h"
#include "ke_task.h"
#include "ke_event.h"
#include "tx_swdesc.h"
#include "rxl_cntrl.h"
#include "txl_buffer.h"
#include "dma.h"
#include "ipc_emb.h"
#include "ipc_shared.h"
#include "sysctrl.h"
#include "dbg.h"
#include "txl_cntrl.h"
#include "txl_agg.h"
#include "txu_cntrl.h"

Go to the source code of this file.

Defines

#define MSG_LLICTRL(irqenable)   ( (irqenable)?(IPC_DMA_LLI_IRQ_EN|(IPC_DMA_LLI_MSG << IPC_DMA_LLI_IRQ_POS)) : 0)
 Configure the DMA control field for a kernel message upload.
#define DBG_LLICTRL(irqenable)   ( (irqenable)?(IPC_DMA_LLI_IRQ_EN|(IPC_DMA_LLI_DBG << IPC_DMA_LLI_IRQ_POS)) : 0)
 Configure the DMA control field for a debug message upload.
#define ALL_EVENTS_TX
 Bit field containing all IPC TX event bits.
#define HIGH_PRIO_EVT   (KE_EVT_RXREADY_BIT | KE_EVT_PRIMARY_TBTT_BIT | KE_EVT_MACIF_TXDESC_BCN_BIT)
 High priority kernel that should interrupt the IPC TX event.

Functions

__INLINE void ipc_emb_txdesc_copy (struct txdesc *dst_local, volatile struct txdesc_host *src_shared)
 Copy a TX descriptor from its shared RAM location to the CPU data memory.
uint8_t ipc_emb_tx_q_len (int queue_idx, int vif_idx)
 Check how many tx descriptors are available on the requested queue for a VIF.
void ipc_emb_init (void)
 Initialize the IPC on the embedded side.
void ipc_emb_tx_flow_off (void)
 Stop the TX flow between the upper layers and the LMAC software.
void ipc_emb_tx_flow_on (void)
 Restart the TX flow between the upper layers and the LMAC software.
void ipc_emb_tx_irq (void)
 Handle Tx packet interrupt on the emb side.
void ipc_emb_tx_evt (int queue_idx)
 Kernel event handler for the handling of the TX descriptor pushed by the host.
void ipc_emb_cfmback_irq (void)
 IRQ handler.
static uint32_t ipc_emb_hostmsgbuf_get (void)
 Retrieve a hostbuf address for future DMA transfer of a MSG.
static uint32_t ipc_emb_hostdbgbuf_get (void)
 Retrieve a hostbuf address for future DMA transfer of a debug buffer.
uint32_t ipc_emb_hostdbgdumpbuf_get (void)
 Retrieve a hostbuf address for debug dump transfer.
bool ipc_emb_hostrxbuf_check (void)
 Checks if a host buffer is currently available.
uint32_t ipc_emb_hostrxbuf_get (uint32_t *host_id)
 Retrieve a hostbuf address for future DMA transfer.
bool ipc_emb_hostrxdesc_check (void)
 Check if a RX descriptor is available.
uint32_t ipc_emb_hostrxdesc_get (void)
 Retrieve a host RX descriptor address for future DMA transfer.
uint32_t ipc_emb_hostradarbuf_get (void)
 Retrieve a hostbuf address for future radar event DMA transfer.
void ipc_emb_rxdata_ind (void)
 Sends an Data Reception Indication to the upper layer.
void ipc_emb_radar_event_ind (void)
 Indicate to the upper side that at least one radar event is pending.
void ipc_emb_txcfm_ind (uint32_t queue_bits)
 Indicate to the upper side that at least on confirmation is pending.
void ipc_emb_prim_tbtt_ind (void)
 Indicate to the upper side that the primary TBTT is pending.
void ipc_emb_sec_tbtt_ind (void)
 Indicate to the upper side that the secondary TBTT is pending.
static void ipc_emb_kmsg_hdlr (struct ke_msg *kmsg_ipc)
 Copy and forward kernel messages received from the IPC to the destination task.
void ipc_emb_msg_irq (void)
 IRQ handler.
void ipc_emb_msg_evt (int dummy)
 EVT handler.
void ipc_emb_kmsg_fwd (const struct ke_msg *ke_msg)
 Forward a kernel message to the host side (emb side).
void ipc_emb_msg_dma_int_handler (void)
 Handles the DMA interrupt generated when the MSG from Embedded side to Application has been transferred.
void ipc_emb_print_fwd (bool poll, const uint32_t len, char *string)
 Send an EMB string to the APP - IPC API function.
void ipc_emb_dbg_dma_int_handler (void)
 Handles the DMA interrupt generated when the Debug message from Embedded side to Application has been transferred.

Variables

const uint32_t ipc_emb_evt_bit [NX_TXQ_CNT]
 Array of bits event to be triggered per TX queue index.
struct ipc_emb_env_tag ipc_emb_env
 Global variable containing the IPC_EMB environment.
const int nx_txdesc_cnt_msk []
 Mask for the indexes of the different queues.

Detailed Description

IPC module.

Copyright C) RivieraWaves 2011-2019

Definition in file ipc_emb.c.


Generated on 14 Jan 2020 for Ceva-RW WLAN FullMAC SW documentation by  doxygen 1.6.1