Station Management. More...
|
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_addr * | sta_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. | |
Station Management.
| #define STA_CAPA | ( | sta, | |||
| type | ) | (((sta)->info.capa_flags & STA_##type##_CAPA) != 0) |
Test whether the specified capability is supported by the STA.
| [in] | sta | Pointer to the STA information structure |
| [in] | type | Capability type (QOS, MFP, HT, VHT or HE) |
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.
| [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.
| [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 |
(PROT_FRM_EX_RCX_MASK | MCS_INDEX_PROT_TX_RCX_MASK | BW_PROT_TX_RCX_MASK |\ FORMAT_MOD_PROT_TX_RCX_MASK)
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().
| anonymous enum |
Station indexes.
Definition at line 68 of file sta_mgmt.h.
| anonymous enum |
logical port state
| 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.
| enum sta_mgmt_pol_upd |
Policy Table update bit field indexes.
Definition at line 118 of file sta_mgmt.h.
| enum sta_mgmt_port_state |
Logical port state.
Definition at line 107 of file sta_mgmt.h.
| enum sta_ps_sp |
PS service period.
Definition at line 157 of file sta_mgmt.h.
| enum sta_ps_traffic |
PS traffic type.
Definition at line 139 of file sta_mgmt.h.
| void sta_mgmt_add_key | ( | struct mm_key_add_req const * | param, | |
| uint8_t | hw_key_idx | |||
| ) |
Add a key for a STA.
| [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.
| [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.
| [in] | sta_idx | Station Index |
| [in] | tid | TID |
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.
| [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.
| [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.
| [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.
| [in] | sta_idx | Station Index |
| [in] | tid | TID |
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.
| [in] | sta_idx | STA Index |
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.
| [in] | sta_idx | STA Index |
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.
| [in] | sta_idx | STA Index |
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.
| [in] | sta_idx | Station Index |
| [in] | tid | TID |
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.
| [in] | sta_idx | Station Index |
| [in] | tid | TID |
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.
| [in] | sta_idx | STA Index |
| [in] | tid | TID |
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.
| [in] | sta_idx | STA Index |
| [in] | tid | TID |
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.
| [in] | sta_idx | STA Index |
| [in] | tid | TID |
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.
| [in] | sta_idx | STA Index |
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.
| [in] | sta_idx | STA Index |
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.
| [in] | sta_idx | STA Index |
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.
| [in] | param | MM_STA_ADD_REQ message parameters |
| [in] | sta_idx | Pointer to index of the STA to be registered, which will be filled |
| 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.
| [in] | vif | VIF Entry |
| [in] | sta | STA Entry |
| [in] | limit | Maximum number of frame to send. Unlimited if 0. |
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.
| [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.
| [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.
| [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.
| [in] | sta_idx | Index of the station to be deleted. |
| struct sta_info_env_tag sta_info_env |
TX Beamforming Definition.
STA management environment variable.
Definition at line 55 of file sta_mgmt.c.
1.6.1