# /space/home/slher/rel/Beken/v6_4_5/macsw/modules/macif/src/macif_ipc.c File Reference

MACIF implementation when control layer is running on a remote host. More...

`#include "ipc_emb.h"`
`#include "dma.h"`
`#include "macif.h"`
`#include "ps.h"`
`#include "rxl_cntrl.h"`
`#include "rxu_cntrl.h"`
`#include "txl_buffer.h"`

Go to the source code of this file.

## Data Structures
struct | macif_tx_cfm_tag
| MACIF TX confirmation control structure. More...
struct | macif_ipc_env_tag
| MACIF IPC environment structure. More...
## Defines
#define | CFM_PENDING_MAX 16
| Maximum number of confirmation uploads that can be pending simultaneously This value shall be a power of 2.
#define | CFM_IDX_MSK (CFM_PENDING_MAX - 1)
| Mask of the confirmation indexes.
#define | CFM_STATUS_OFFSET offsetof_b(struct txl_buffer_control, status)
| Offset of the status element in the TX buffer.
#define | CFM_CNT_THRESHOLD 8
| Number of prepared confirmations after which we program the DMA to transmit them.
#define | UF_RX_VEC_VALID_PATTERN 0x0000C0DE
| valid pattern for buffers pushed by the driver
#define | CFM_LLICTRL
| Conversion from Access Category to corresponding bridge DMA control field.
## Functions
int | macif_init (void)
| Initialize the MAC interface.
void | macif_msg_evt (int dummy)
| Kernel event handler for the handling of messages pushed by control layer.
void | macif_kmsg_fwd (const struct ke_msg *ke_msg)
| Forward a kernel message to the MAC interface.
void | macif_prim_tbtt_ind (void)
| Indicate control layer that the primary TBTT is pending.
void | macif_sec_tbtt_ind (void)
| Indicate control layer that the secondary TBTT is pending.
uint8_t | macif_rx_get_packet_threshold (void)
| Get the number of received packets above which the host shall be warned.
void | macif_rx_data_ind (void)
| Signal to the upper layers the presence of data in the host RX buffers.
bool | macif_rx_buf_check (void)
| Checks if a host buffer is currently available.
uint32_t | macif_rx_buf_get (uint32_t *host_id)
| Retrieve a RX host buffer address for future DMA transfer.
void | macif_rx_desc_upload (struct co_list *desc_list)
| Upload the list of prepared RX status descriptors to upper layers.
void | macif_tx_evt (int queue_idx)
| Kernel event handler for the handling of the TX descriptor pushed by the upper layers.
bool | macif_tx_q_has_data (int queue_idx)
| Get the status of the TX queue.
uint8_t | macif_tx_q_len (int queue_idx, int vif_idx)
| Check how many tx descriptors are available on the requested queue for a VIF.
uint32_t | macif_tx_pattern_addr_get (void)
| Get the host address of the TX payload descriptor pattern It is not used in fully hosted partitioning.
uint32_t | macif_buffered_get (uint8_t sta, uint8_t tid)
| Get the buffered data for a given sta/tid.
void | macif_tx_enable_users (int queue_idx, uint8_t active_users)
| Re-enable the user queues that were disabled.
static bool | macif_tx_cfm_lli_done (uint16_t next_lli_cnt)
| This function checks if the IPC DMA already processed the transfers up to the target count.
void | macif_tx_cfm_start (uint8_t access_category)
| Initialize a new TX confirmation upload process.
void | macif_tx_cfm_push (uint8_t access_category, struct txdesc *txdesc)
| Push a TX confirmation for upload to upper layers.
void | macif_tx_cfm_done (uint8_t access_category, bool poll)
| Program the pending confirmation for upload.
void | macif_tx_cfm_dma_int_handler (void)
| Handler for DMA transfer of confirmations.
## Variables
struct macif_ipc_env_tag | macif_ipc_env
| MACIF IPC context.

## Detailed Description

MACIF implementation when control layer is running on a remote host.

Copyright (C) RivieraWaves 2017-2019

Definition in file macif_ipc.c.

## Define Documentation

#define CFM_LLICTRL

Value:

    (IPC_DMA_LLI_COUNTER_EN | (IPC_DMA_LLI_CFM_TX << IPC_DMA_LLI_COUNTER_POS) | \
                         IPC_DMA_LLI_IRQ_EN | (IPC_DMA_LLI_CFM_TX << IPC_DMA_LLI_IRQ_POS))

Conversion from Access Category to corresponding bridge DMA control field.

Definition at line 40 of file macif_ipc.c.

Referenced by macif_tx_cfm_done().

## Function Documentation

static bool macif_tx_cfm_lli_done | ( | uint16_t | next_lli_cnt | ) | `[static]`

This function checks if the IPC DMA already processed the transfers up to the target count.

Parameters:

  `[in]` | next_lli_cnt | The target LLI count

Returns:
  true if the target is reached or exceeded, false otherwise

Definition at line 325 of file macif_ipc.c.

References IPC_DMA_LLI_CFM_TX.

Referenced by macif_tx_cfm_dma_int_handler().