STA_MGMT
[LMAC]

Station Management. More...

Collaboration diagram for STA_MGMT:

Data Structures

struct  sta_capa_info
 Station capability information. More...
struct  sta_mgmt_sec_info
 Station Information related to Security. More...
struct  sta_pol_tbl_cntl
 Information related to the used policy table. More...
struct  sta_mgmt_ba_info
 Information about RX and TX Block Ack for one TID. More...
struct  ba_agmt
 BA agreement structure - one for every possible TID, valid if params non 0. More...
struct  tdls_info_tag
 Information related to an established TDLS link. More...
struct  sta_info_tag
 STA Info Table. More...
struct  sta_info_env_tag
 STA management module environment. More...

Defines

#define STA_MGMT_PROT_HW_MASK
 Protection Configuration Management.
#define VIF_TO_BCMC_IDX(idx)   (BROADCAST_STA_IDX_MIN + (idx))
 Macro giving the BCMC station index for the VIF index passed as parameter.
#define STA_REF_BSSID_AID   ((uint8_t)-1)
 Specific AID value indicating that STA is the reference BSSID, in case we are connected to a nonTransmitted BSSID.
#define STA_CAPA(sta, type)   (((sta)->info.capa_flags & STA_##type##_CAPA) != 0)
 Test whether the specified capability is supported by the STA.
#define STA_CAPA_SET(sta, type)   ((sta)->info.capa_flags |= STA_##type##_CAPA)
 Set the specified STA capability.
#define STA_CAPA_CLR(sta, type)   ((sta)->info.capa_flags &= ~STA_##type##_CAPA)
 Clear the specified STA capability.

Enumerations

enum  { BROADCAST_STA_IDX_MIN = NX_REMOTE_STA_MAX, BROADCAST_STA_IDX_MAX = NX_REMOTE_STA_MAX + NX_VIRT_DEV_MAX - 1, STA_MAX, INVALID_STA_IDX = 0xFF }
 

Station indexes.

More...
enum  sta_mgmt_key_type { STA_MGMT_KEY_TYPE_PAIRWISE = 0, STA_MGMT_KEY_TYPE_GROUP, STA_MGMT_KEY_TYPE_MAX }
 

Definitions of key types.


enum  sta_mgmt_port_state { STA_MGMT_PORT_CLOSED = 0, STA_MGMT_PORT_CONTROLED, STA_MGMT_PORT_OPEN }
 

Logical port state.

More...
enum  sta_mgmt_pol_upd {
  STA_MGMT_POL_UPD_RATE, STA_MGMT_POL_UPD_PROT, STA_MGMT_POL_UPD_PPDU_TX, STA_MGMT_POL_UPD_BW,
  STA_MGMT_POL_UPD_TX_POWER, STA_MGMT_POL_TRIAL_RATE, STA_MGMT_POL_UPD_BSS_COLOR, STA_MGMT_POL_UPD_MAX
}
 

Policy Table update bit field indexes.

More...
enum  sta_ps_traffic {
  PS_TRAFFIC_HOST = CO_BIT(0), PS_TRAFFIC_INT = CO_BIT(1), PS_TRAFFIC = (PS_TRAFFIC_HOST | PS_TRAFFIC_INT), UAPSD_TRAFFIC_HOST = CO_BIT(2),
  UAPSD_TRAFFIC_INT = CO_BIT(3), UAPSD_TRAFFIC = (UAPSD_TRAFFIC_HOST | UAPSD_TRAFFIC_INT)
}
 

PS traffic type.

More...
enum  sta_ps_sp {
  NO_SERVICE_PERIOD = 0, PS_SERVICE_PERIOD = CO_BIT(0), UAPSD_SERVICE_PERIOD_INT = CO_BIT(1), UAPSD_SERVICE_PERIOD_HOST = CO_BIT(2),
  UAPSD_SERVICE_PERIOD = (UAPSD_SERVICE_PERIOD_INT | UAPSD_SERVICE_PERIOD_HOST), ANY_SERVICE_PERIOD_INT = (PS_SERVICE_PERIOD | UAPSD_SERVICE_PERIOD_INT), BCN_SERVICE_PERIOD = CO_BIT(3)
}
 

PS service period.

More...
enum  { PORT_CLOSED = 0, PORT_CONTROLED, PORT_OPEN }
 

logical port state

More...

Functions

static void sta_mgmt_entry_init (struct sta_info_tag *sta)
 Initializes (resets) the content of a STA entry.
void sta_mgmt_init (void)
 Initialize all the entries of the station table.
uint8_t sta_mgmt_register (struct mm_sta_add_req const *param, uint8_t *sta_idx)
 Allocates new station entry, initializes it and fills it with information passed as parameters.
void sta_mgmt_unregister (uint8_t sta_idx)
 Deletes the station table and free all the resources allocated for this station.
void sta_mgmt_add_key (struct mm_key_add_req const *param, uint8_t hw_key_idx)
 Add a key for a STA.
void sta_mgmt_del_key (struct sta_info_tag *sta)
 Delete a key for a STA.
int sta_mgmt_send_postponed_frame (struct vif_info_tag *vif, struct sta_info_tag *sta, int limit)
 Go through list of postponed internal frames and try again to push these frames.
__INLINE uint8_t sta_mgmt_get_port_state (uint8_t sta_idx)
 Retrieve the port state for the given STA index.
__INLINE uint16_t sta_mgmt_get_port_ethertype (uint8_t sta_idx)
 Retrieve the control protocol used by the STA.
__INLINE uint8_t sta_mgmt_get_tx_bam_idx (uint8_t sta_idx, uint8_t tid)
 Return if a TX Block Ack agreement exists for the provided [STAID, TID] tuple.
__INLINE uint8_t sta_mgmt_get_rx_bam_idx (uint8_t sta_idx, uint8_t tid)
 Return if a RX Block Ack agreement exists for the provided [STAID, TID] tuple.
__INLINE uint8_t sta_mgmt_ba_tx_cnt_get (uint8_t sta_idx, uint8_t tid)
 Get the number of packets currently in the TX path for a given STA/TID pair.
__INLINE void sta_mgmt_ba_tx_cnt_inc (uint8_t sta_idx, uint8_t tid)
 Increment the number of packets currently in the TX path for a given STA/TID pair.
__INLINE void sta_mgmt_ba_tx_cnt_dec (uint8_t sta_idx, uint8_t tid)
 Decrement the number of packets currently in the TX path for a given STA/TID pair.
__INLINE uint32_t sta_mgmt_get_add_ba_time (uint8_t sta_idx, uint8_t tid)
 Return the last time a BlockAck agreement was established for this STA/TID.
__INLINE void sta_mgmt_set_add_ba_time (uint8_t sta_idx, uint8_t tid, uint32_t time)
 Set the last time a BlockAck agreement was established for this STA/TID.
__INLINE uint16_t sta_mgmt_get_tx_ssn_and_inc (uint8_t sta_idx, uint8_t tid)
 Return the next SN for this STA/TID pair and increase it for the next time.
__INLINE uint16_t sta_mgmt_get_tx_ssn (uint8_t sta_idx, uint8_t tid)
 Return the next SN to be used for this STA/TID pair.
__INLINE bool sta_mgmt_is_in_ps (uint8_t sta_idx)
 Return the PS state of a given station.
__INLINE bool sta_mgmt_is_valid (uint8_t sta_idx)
 Return the validity state of a specific station index, i.e it indicates if the given station is currently registered or not.
__INLINE struct mac_addrsta_mgmt_get_peer_addr (uint8_t sta_idx)
 Retrieve the peer STA MAC Address matching with the provided STA Index.
__INLINE uint8_t sta_mgmt_get_vif_idx (uint8_t sta_idx)
 Return the VIF index whose the STA depends on.
__INLINE void sta_mgmt_set_tx_ssn (uint8_t sta_idx, uint8_t tid, uint16_t ssn)
 Set the Start Sequence Number of the BA agreement for this STA/TID pair.
__INLINE uint8_t sta_mgmt_get_tx_buff_size (uint8_t sta_idx, uint8_t tid)
 Get the maximum number of MPDUs that can be put in an A-MPDU for this STA-TID pair.
__INLINE void sta_mgmt_set_tx_buff_size (uint8_t sta_idx, uint8_t tid, uint8_t buff_size)
 Set the maximum number of MPDUs that can be put in an A-MPDU for this STA-TID pair.

Variables

struct sta_info_env_tag sta_info_env
 TX Beamforming Definition.
struct sta_info_tag sta_info_tab [STA_MAX]
 STA information table.
struct sta_info_env_tag sta_info_env
 STA management environment variable.
struct sta_info_tag sta_info_tab [STA_MAX]
 STA information table.

Detailed Description

Station Management.


Define Documentation

#define STA_CAPA ( sta,
type   )     (((sta)->info.capa_flags & STA_##type##_CAPA) != 0)

Test whether the specified capability is supported by the STA.

Parameters:
[in] sta Pointer to the STA information structure
[in] type Capability type (QOS, MFP, HT, VHT or HE)
Returns:
true if supported, false otherwise

Definition at line 479 of file sta_mgmt.h.

Referenced by me_beacon_check(), me_pol_tbl_bw_upd(), me_set_sta_ht_vht_param(), me_sta_add_req_handler(), me_sta_bw_nss_max_upd(), rxu_mgt_route_action(), txu_cntrl_mac_hdr_append(), and txu_cntrl_umacdesc_prep().

#define STA_CAPA_CLR ( sta,
type   )     ((sta)->info.capa_flags &= ~STA_##type##_CAPA)

Clear the specified STA capability.

Parameters:
[out] sta Pointer to the STA information structure
[in] type Capability type (QOS, HT, VHT or HE)

Definition at line 497 of file sta_mgmt.h.

#define STA_CAPA_SET ( sta,
type   )     ((sta)->info.capa_flags |= STA_##type##_CAPA)

Set the specified STA capability.

Parameters:
[out] sta Pointer to the STA information structure
[in] type Capability type (QOS, HT, VHT or HE)

Definition at line 488 of file sta_mgmt.h.

Referenced by me_sta_add_req_handler(), and mm_sta_add_cfm_handler().

#define STA_MGMT_PROT_HW_MASK
Value:

Protection Configuration Management.

Mask of protection flags in policy table

Definition at line 62 of file sta_mgmt.h.

Referenced by me_update_buffer_control().


Enumeration Type Documentation

anonymous enum

Station indexes.

Enumerator:
BROADCAST_STA_IDX_MIN 

BROADCAST/GROUP DATA TX STA Index for first virtual AP.

BROADCAST_STA_IDX_MAX 

BROADCAST/GROUP DATA TX STA Index for last virtual AP.

STA_MAX 

Maximum number of supported STA.

INVALID_STA_IDX 

Invalid STA Index used for error checking.

Definition at line 68 of file sta_mgmt.h.

anonymous enum

logical port state

Enumerator:
PORT_CLOSED 

no data traffic could be exchanged with this station

PORT_CONTROLED 

encryption key is not yet available, only EAP frames could be sent

PORT_OPEN 

any data types could be sent

Definition at line 178 of file sta_mgmt.h.

Policy Table update bit field indexes.

Enumerator:
STA_MGMT_POL_UPD_RATE 

Update Rate.

STA_MGMT_POL_UPD_PROT 

Update Protection Configuration.

STA_MGMT_POL_UPD_PPDU_TX 

Update PPDU TX Configuration.

STA_MGMT_POL_UPD_BW 

Update operational bandwidth.

STA_MGMT_POL_UPD_TX_POWER 

Update tx power.

STA_MGMT_POL_TRIAL_RATE 

Update Trial Rate.

STA_MGMT_POL_UPD_BSS_COLOR 

Update BSS color.

Definition at line 118 of file sta_mgmt.h.

Logical port state.

Enumerator:
STA_MGMT_PORT_CLOSED 

No data traffic could be exchanged with this station.

STA_MGMT_PORT_CONTROLED 

Encryption key is not yet available, only EAP frames could be sent.

STA_MGMT_PORT_OPEN 

Any data types could be sent.

Definition at line 107 of file sta_mgmt.h.

enum sta_ps_sp

PS service period.

Enumerator:
NO_SERVICE_PERIOD 

No Service period on going.

PS_SERVICE_PERIOD 

Legacy PS service period on going (i.e. answer to PS-Poll).

UAPSD_SERVICE_PERIOD_INT 

UAPSD service period on going (for internal frames).

UAPSD_SERVICE_PERIOD_HOST 

UAPSD service period on going (for frames from host).

UAPSD_SERVICE_PERIOD 

UAPSD service period on going.

ANY_SERVICE_PERIOD_INT 

Any internal service period.

BCN_SERVICE_PERIOD 

Beacon Service Period (i.e. multicast/broadcast traffic after DTIM beacon).

Definition at line 157 of file sta_mgmt.h.

PS traffic type.

Enumerator:
PS_TRAFFIC_HOST 

Legacy PS traffic from Host.

PS_TRAFFIC_INT 

Legacy PS traffic generated by firmware.

PS_TRAFFIC 

Legacy PS traffic.

UAPSD_TRAFFIC_HOST 

UAPSD traffic from the HOST.

UAPSD_TRAFFIC_INT 

UAPSD traffic generated by firmware.

UAPSD_TRAFFIC 

UAPSD traffic.

Definition at line 139 of file sta_mgmt.h.


Function Documentation

void sta_mgmt_add_key ( struct mm_key_add_req const *  param,
uint8_t  hw_key_idx 
)

Add a key for a STA.

Parameters:
[in] param Pointer to the key parameters.
[in] hw_key_idx Index of the key in the HW key RAM
__INLINE void sta_mgmt_ba_tx_cnt_dec ( uint8_t  sta_idx,
uint8_t  tid 
)

Decrement the number of packets currently in the TX path for a given STA/TID pair.

Parameters:
[in] sta_idx Station Index
[in] tid TID

Definition at line 653 of file sta_mgmt.h.

References sta_info_tag::ba_info, sta_info_tab, and sta_mgmt_ba_info::tx_pkt_cnt.

__INLINE uint8_t sta_mgmt_ba_tx_cnt_get ( uint8_t  sta_idx,
uint8_t  tid 
)

Get the number of packets currently in the TX path for a given STA/TID pair.

Parameters:
[in] sta_idx Station Index
[in] tid TID
Returns:
The number of packets currently in the TX path for the given STA/TID pair

Definition at line 625 of file sta_mgmt.h.

References sta_info_tag::ba_info, sta_info_tab, and sta_mgmt_ba_info::tx_pkt_cnt.

__INLINE void sta_mgmt_ba_tx_cnt_inc ( uint8_t  sta_idx,
uint8_t  tid 
)

Increment the number of packets currently in the TX path for a given STA/TID pair.

Parameters:
[in] sta_idx Station Index
[in] tid TID

Definition at line 639 of file sta_mgmt.h.

References sta_info_tag::ba_info, sta_info_tab, and sta_mgmt_ba_info::tx_pkt_cnt.

void sta_mgmt_del_key ( struct sta_info_tag sta  ) 

Delete a key for a STA.

Parameters:
[in] sta Pointer to the STA for which the key is deleted
static void sta_mgmt_entry_init ( struct sta_info_tag sta  )  [static]

Initializes (resets) the content of a STA entry.

Parameters:
[in] sta A pointer to the STA entry to reset

Definition at line 69 of file sta_mgmt.c.

References sta_info_tag::ba_info, sta_mgmt_ba_info::bam_idx_rx, sta_mgmt_ba_info::bam_idx_tx, BAM_INVALID_TASK_IDX, co_list_is_empty(), co_list_pop_front(), sta_info_tag::inst_nbr, TID_MAX, sta_info_tag::tx_desc_post, and txl_frame_release().

__INLINE uint32_t sta_mgmt_get_add_ba_time ( uint8_t  sta_idx,
uint8_t  tid 
)

Return the last time a BlockAck agreement was established for this STA/TID.

Parameters:
[in] sta_idx Station Index
[in] tid TID
Returns:
The last BA time

Definition at line 668 of file sta_mgmt.h.

References sta_info_tag::ba_info, and sta_info_tab.

__INLINE struct mac_addr* sta_mgmt_get_peer_addr ( uint8_t  sta_idx  )  [read]

Retrieve the peer STA MAC Address matching with the provided STA Index.

Parameters:
[in] sta_idx STA Index
Returns:
NULL if no MAC Address not found, else the associated MAC Address

Definition at line 761 of file sta_mgmt.h.

References sta_info_tab.

Referenced by bfr_prep_bfr_poll(), and bfr_prep_ndpa().

__INLINE uint16_t sta_mgmt_get_port_ethertype ( uint8_t  sta_idx  ) 

Retrieve the control protocol used by the STA.

Parameters:
[in] sta_idx STA Index
Returns:
The ethertype used on the control port.

Definition at line 528 of file sta_mgmt.h.

References sta_info_tag::ctrl_port_ethertype, and sta_info_tab.

Referenced by txu_cntrl_logic_port_filter(), txu_cntrl_mac_hdr_append(), txu_cntrl_sec_hdr_append(), and txu_cntrl_sechdr_len_compute().

__INLINE uint8_t sta_mgmt_get_port_state ( uint8_t  sta_idx  ) 

Retrieve the port state for the given STA index.

Parameters:
[in] sta_idx STA Index
Returns:
The control port state for the STA

Definition at line 514 of file sta_mgmt.h.

References sta_info_tag::ctrl_port_state, and sta_info_tab.

Referenced by txu_cntrl_logic_port_filter().

__INLINE uint8_t sta_mgmt_get_rx_bam_idx ( uint8_t  sta_idx,
uint8_t  tid 
)

Return if a RX Block Ack agreement exists for the provided [STAID, TID] tuple.

Parameters:
[in] sta_idx Station Index
[in] tid TID
Returns:
BAM_INVALID_TASK_IDX if no agreement exists, else allocated BAM task instance

Definition at line 610 of file sta_mgmt.h.

References sta_info_tag::ba_info, and sta_info_tab.

Referenced by rxu_mgt_ind_handler().

__INLINE uint8_t sta_mgmt_get_tx_bam_idx ( uint8_t  sta_idx,
uint8_t  tid 
)

Return if a TX Block Ack agreement exists for the provided [STAID, TID] tuple.

Parameters:
[in] sta_idx Station Index
[in] tid TID
Returns:
BAM_INVALID_TASK_IDX if no agreement exists, else allocated BAM task instance

Definition at line 595 of file sta_mgmt.h.

References sta_info_tag::ba_info, and sta_info_tab.

Referenced by rxu_mgt_ind_handler().

__INLINE uint8_t sta_mgmt_get_tx_buff_size ( uint8_t  sta_idx,
uint8_t  tid 
)

Get the maximum number of MPDUs that can be put in an A-MPDU for this STA-TID pair.

Parameters:
[in] sta_idx STA Index
[in] tid TID
Returns:
The maximum number of MPDUs that can be put in an A-MPDU for this STA-TID pair

Definition at line 813 of file sta_mgmt.h.

References sta_info_tab.

Referenced by txl_ampdu_constraints_get().

__INLINE uint16_t sta_mgmt_get_tx_ssn ( uint8_t  sta_idx,
uint8_t  tid 
)

Return the next SN to be used for this STA/TID pair.

Parameters:
[in] sta_idx STA Index
[in] tid TID
Returns:
The next Sequence Number to be used

Definition at line 716 of file sta_mgmt.h.

References sta_info_tag::seq_nbr, and sta_info_tab.

__INLINE uint16_t sta_mgmt_get_tx_ssn_and_inc ( uint8_t  sta_idx,
uint8_t  tid 
)

Return the next SN for this STA/TID pair and increase it for the next time.

Parameters:
[in] sta_idx STA Index
[in] tid TID
Returns:
The next Sequence Number to be used

Definition at line 697 of file sta_mgmt.h.

References sta_info_tag::seq_nbr, and sta_info_tab.

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

__INLINE uint8_t sta_mgmt_get_vif_idx ( uint8_t  sta_idx  ) 

Return the VIF index whose the STA depends on.

Parameters:
[in] sta_idx STA Index
Returns:
The index of the VIF

Definition at line 775 of file sta_mgmt.h.

References sta_info_tab.

Referenced by me_sta_del_req_handler().

__INLINE bool sta_mgmt_is_in_ps ( uint8_t  sta_idx  ) 

Return the PS state of a given station.

Parameters:
[in] sta_idx STA Index
Returns:
true if the station is in PS, false otherwise

Definition at line 730 of file sta_mgmt.h.

References sta_info_tag::ps_state, and sta_info_tab.

Referenced by bfr_calibrate().

__INLINE bool sta_mgmt_is_valid ( uint8_t  sta_idx  ) 

Return the validity state of a specific station index, i.e it indicates if the given station is currently registered or not.

Parameters:
[in] sta_idx STA Index
Returns:
true if the station is registered, false otherwise

Definition at line 746 of file sta_mgmt.h.

References sta_info_tab, and sta_info_tag::valid.

Referenced by rxl_frame_handle().

uint8_t sta_mgmt_register ( struct mm_sta_add_req const *  param,
uint8_t *  sta_idx 
)

Allocates new station entry, initializes it and fills it with information passed as parameters.

Parameters:
[in] param MM_STA_ADD_REQ message parameters
[in] sta_idx Pointer to index of the STA to be registered, which will be filled
Returns:
The allocated station table index.
int sta_mgmt_send_postponed_frame ( struct vif_info_tag vif,
struct sta_info_tag sta,
int  limit 
)

Go through list of postponed internal frames and try again to push these frames.

Parameters:
[in] vif VIF Entry
[in] sta STA Entry
[in] limit Maximum number of frame to send. Unlimited if 0.
Returns:
the number of frames pushed.

Referenced by rxl_pm_check(), and tdls_chsw_null_frame_tx_cfm().

__INLINE void sta_mgmt_set_add_ba_time ( uint8_t  sta_idx,
uint8_t  tid,
uint32_t  time 
)

Set the last time a BlockAck agreement was established for this STA/TID.

Parameters:
[in] sta_idx Station Index
[in] tid TID
[in] time New BA Time

Definition at line 682 of file sta_mgmt.h.

References sta_info_tag::ba_info, sta_mgmt_ba_info::last_ba_add_time, and sta_info_tab.

Referenced by bam_create_ba_agg().

__INLINE void sta_mgmt_set_tx_buff_size ( uint8_t  sta_idx,
uint8_t  tid,
uint8_t  buff_size 
)

Set the maximum number of MPDUs that can be put in an A-MPDU for this STA-TID pair.

Parameters:
[in] sta_idx STA Index
[in] tid TID
[in] buff_size Maximum number of MPDUs that can be put in an A-MPDU for this STA-TID pair

Definition at line 827 of file sta_mgmt.h.

References sta_info_tag::ba_agmts_tx, ba_agmt::bufsz, and sta_info_tab.

Referenced by mm_ba_add_req_handler(), and mm_ba_del_req_handler().

__INLINE void sta_mgmt_set_tx_ssn ( uint8_t  sta_idx,
uint8_t  tid,
uint16_t  ssn 
)

Set the Start Sequence Number of the BA agreement for this STA/TID pair.

Parameters:
[in] sta_idx STA Index
[in] tid TID
[in] ssn Start sequence number of the BA agreement

Definition at line 791 of file sta_mgmt.h.

References sta_info_tag::ba_agmts_tx, sta_info_tag::ba_info, bam_env, sta_mgmt_ba_info::bam_idx_tx, ba_agmt::ssn, bam_env_tag::ssn, and sta_info_tab.

Referenced by mm_ba_add_req_handler(), and mm_ba_del_req_handler().

void sta_mgmt_unregister ( uint8_t  sta_idx  ) 

Deletes the station table and free all the resources allocated for this station.

Parameters:
[in] sta_idx Index of the station to be deleted.

Variable Documentation

TX Beamforming Definition.

STA management environment variable.

Definition at line 55 of file sta_mgmt.c.


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