# /space/home/slher/rel/Beken/v6_4_5/macsw/ip/lmac/src/tx/txl/txl_frame.c File Reference

Management of internal frame generation. More...

`#include <stddef.h>`
`#include "txl_cntrl.h"`
`#include "txl_frame.h"`
`#include "ke_event.h"`
`#include "mac_frame.h"`
`#include "dbg.h"`
`#include "txl_buffer.h"`
`#include "co_utils.h"`
`#include "reg_mac_core.h"`
`#include "vif_mgmt.h"`
`#include "phy.h"`
`#include "tpc.h"`
`#include "tdls.h"`

Go to the source code of this file.

## Functions
void | txl_frame_init_desc (struct txl_frame_desc_tag *frame, struct txl_buffer_tag *buffer, struct tx_hw_desc *hwdesc, struct txl_buffer_control *bufctrl)
| Basic initializations of an external TX frame descriptor (e.g such as a beacon descriptor when autonomous beacon transmission is used).
void | txl_frame_init (bool reset)
| Initializes the TX frame module environment.
struct txl_frame_desc_tag * | txl_frame_get (int type, int len)
| Get and initialize a TX frame descriptor.
void | txl_frame_prepare (struct txl_frame_desc_tag *frame, int type, int len)
| Prepare TX frame descriptor prior to transmission.
bool | txl_frame_push (struct txl_frame_desc_tag *frame, uint8_t ac)
| Push a TX frame descriptor.
void | txl_frame_cfm (struct txdesc *txdesc)
| Push a TX descriptor in the TX frame confirmation queue This function is called under interrupt by the TX control module once the frame has been transmitted.
void | txl_frame_release (struct txdesc *txdesc, bool postponed)
| Release a descriptor allocated for a packet that has not been sent.
void | txl_frame_evt (int dummy)
| Background event handler of the Tx frame module.
uint8_t | txl_frame_send_null_frame (uint8_t sta_idx, cfm_func_ptr cfm, void *env)
| Builds a NULL frame with RA address pointing to the STA passed as parameter.
uint8_t | txl_frame_send_qosnull_frame (uint8_t sta_idx, uint16_t qos, cfm_func_ptr cfm, void *env)
| Builds a QoS NULL frame with RA address pointing to the STA passed as parameter.
static void | txl_frame_tdls_add_security_header (struct txl_frame_desc_tag *frame, struct mac_hdr_qos *buf, struct key_info_tag *key)
| Add security header in a TDLS frame.
uint8_t | txl_frame_send_tdls_channel_switch_req_frame (struct tdls_chan_switch_req const *param, cfm_func_ptr cfm)
| Builds a TDLS Channel Switch Request frame.
uint8_t | txl_frame_send_tdls_channel_switch_rsp_frame (struct vif_info_tag *vif, uint16_t status_code, cfm_func_ptr cfm)
| Builds a TDLS Channel Switch Response frame.
uint8_t | txl_frame_send_tdls_peer_traffic_ind_frame (struct tdls_peer_traffic_ind_req const *param, cfm_func_ptr cfm)
| Builds a TDLS Peer Traffic Indication frame.
## Variables
static struct txl_frame_desc_tag | txl_frame_desc [NX_TXFRAME_CNT]
| Pool of TX frame descriptors.
struct txl_frame_env_tag | txl_frame_env
| TX frame environment variables.

## Detailed Description

Management of internal frame generation.

Copyright (C) RivieraWaves 2011-2019

Definition in file txl_frame.c.

## Function Documentation

static void txl_frame_tdls_add_security_header | ( | struct txl_frame_desc_tag * | frame,
|  | struct mac_hdr_qos * | buf,
|  | struct key_info_tag * | key |
| ) |  |  | `[static]`

Add security header in a TDLS frame.

Parameters:

  `[in]` | frame | Pointer to the frame to update
  `[in]` | buf | Pointer to the MAC header in the frame
  `[in]` | key | Pointer to the key to use

Definition at line 575 of file txl_frame.c.

References mac_hdr_qos::fctl, key_info_tag::hw_key_idx, key_info_tag::key_idx, KEYSRAM_INDEX_RA_MASK, MAC_FCTRL_PROTECTEDFRAME, tx_policy_tbl::maccntrlinfo1, txl_buffer_control::policy_tbl, mac_hdr_qos::qos, key_info_tag::tx_pn, txl_frame_desc_tag::txdesc, and txl_buffer_control_get().

Referenced by txl_frame_send_tdls_channel_switch_req_frame(), txl_frame_send_tdls_channel_switch_rsp_frame(), and txl_frame_send_tdls_peer_traffic_ind_frame().