Remove unused STA entry information
previous_ap and last_assoc_req were not really used for anything meaninful, so get rid of them to reduce the size of per-STA memory allocation. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
d05ff96012
commit
5bdac4abce
5 changed files with 10 additions and 42 deletions
|
@ -120,8 +120,6 @@ void mlme_associate_indication(struct hostapd_data *hapd, struct sta_info *sta)
|
||||||
* reassociation procedure that was initiated by that specific peer MAC entity.
|
* reassociation procedure that was initiated by that specific peer MAC entity.
|
||||||
*
|
*
|
||||||
* PeerSTAAddress = sta->addr
|
* PeerSTAAddress = sta->addr
|
||||||
*
|
|
||||||
* sta->previous_ap contains the "Current AP" information from ReassocReq.
|
|
||||||
*/
|
*/
|
||||||
void mlme_reassociate_indication(struct hostapd_data *hapd,
|
void mlme_reassociate_indication(struct hostapd_data *hapd,
|
||||||
struct sta_info *sta)
|
struct sta_info *sta)
|
||||||
|
|
|
@ -242,29 +242,22 @@ static void iapp_send_layer2_update(struct iapp_data *iapp, u8 *addr)
|
||||||
*/
|
*/
|
||||||
void iapp_new_station(struct iapp_data *iapp, struct sta_info *sta)
|
void iapp_new_station(struct iapp_data *iapp, struct sta_info *sta)
|
||||||
{
|
{
|
||||||
struct ieee80211_mgmt *assoc;
|
u16 seq = 0; /* TODO */
|
||||||
u16 seq;
|
|
||||||
|
|
||||||
if (iapp == NULL)
|
if (iapp == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
assoc = sta->last_assoc_req;
|
|
||||||
seq = assoc ? WLAN_GET_SEQ_SEQ(le_to_host16(assoc->seq_ctrl)) : 0;
|
|
||||||
|
|
||||||
/* IAPP-ADD.request(MAC Address, Sequence Number, Timeout) */
|
/* IAPP-ADD.request(MAC Address, Sequence Number, Timeout) */
|
||||||
hostapd_logger(iapp->hapd, sta->addr, HOSTAPD_MODULE_IAPP,
|
hostapd_logger(iapp->hapd, sta->addr, HOSTAPD_MODULE_IAPP,
|
||||||
HOSTAPD_LEVEL_DEBUG, "IAPP-ADD.request(seq=%d)", seq);
|
HOSTAPD_LEVEL_DEBUG, "IAPP-ADD.request(seq=%d)", seq);
|
||||||
iapp_send_layer2_update(iapp, sta->addr);
|
iapp_send_layer2_update(iapp, sta->addr);
|
||||||
iapp_send_add(iapp, sta->addr, seq);
|
iapp_send_add(iapp, sta->addr, seq);
|
||||||
|
|
||||||
if (assoc && WLAN_FC_GET_STYPE(le_to_host16(assoc->frame_control)) ==
|
/* TODO: If this was reassociation:
|
||||||
WLAN_FC_STYPE_REASSOC_REQ) {
|
* IAPP-MOVE.request(MAC Address, Sequence Number, Old AP,
|
||||||
/* IAPP-MOVE.request(MAC Address, Sequence Number, Old AP,
|
* Context Block, Timeout)
|
||||||
* Context Block, Timeout)
|
* TODO: Send IAPP-MOVE to the old AP; Map Old AP BSSID to
|
||||||
*/
|
* IP address */
|
||||||
/* TODO: Send IAPP-MOVE to the old AP; Map Old AP BSSID to
|
|
||||||
* IP address */
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1445,17 +1445,6 @@ static void handle_assoc(struct hostapd_data *hapd,
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211W */
|
||||||
|
|
||||||
if (reassoc) {
|
|
||||||
os_memcpy(sta->previous_ap, mgmt->u.reassoc_req.current_ap,
|
|
||||||
ETH_ALEN);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sta->last_assoc_req)
|
|
||||||
os_free(sta->last_assoc_req);
|
|
||||||
sta->last_assoc_req = os_malloc(len);
|
|
||||||
if (sta->last_assoc_req)
|
|
||||||
os_memcpy(sta->last_assoc_req, mgmt, len);
|
|
||||||
|
|
||||||
/* Make sure that the previously registered inactivity timer will not
|
/* Make sure that the previously registered inactivity timer will not
|
||||||
* remove the STA immediately. */
|
* remove the STA immediately. */
|
||||||
sta->timeout_next = STA_NULLFUNC;
|
sta->timeout_next = STA_NULLFUNC;
|
||||||
|
@ -1924,7 +1913,7 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
||||||
status = le_to_host16(mgmt->u.assoc_resp.status_code);
|
status = le_to_host16(mgmt->u.assoc_resp.status_code);
|
||||||
|
|
||||||
if (status != WLAN_STATUS_SUCCESS)
|
if (status != WLAN_STATUS_SUCCESS)
|
||||||
goto fail;
|
return;
|
||||||
|
|
||||||
/* Stop previous accounting session, if one is started, and allocate
|
/* Stop previous accounting session, if one is started, and allocate
|
||||||
* new session id for the new session. */
|
* new session id for the new session. */
|
||||||
|
@ -1986,7 +1975,7 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
||||||
ap_sta_disconnect(hapd, sta, sta->addr,
|
ap_sta_disconnect(hapd, sta, sta->addr,
|
||||||
WLAN_REASON_DISASSOC_AP_BUSY);
|
WLAN_REASON_DISASSOC_AP_BUSY);
|
||||||
|
|
||||||
goto fail;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sta->flags & WLAN_STA_WDS) {
|
if (sta->flags & WLAN_STA_WDS) {
|
||||||
|
@ -2006,11 +1995,11 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
||||||
* interface selection is not going to change anymore.
|
* interface selection is not going to change anymore.
|
||||||
*/
|
*/
|
||||||
if (ap_sta_bind_vlan(hapd, sta, 0) < 0)
|
if (ap_sta_bind_vlan(hapd, sta, 0) < 0)
|
||||||
goto fail;
|
return;
|
||||||
} else if (sta->vlan_id) {
|
} else if (sta->vlan_id) {
|
||||||
/* VLAN ID already set (e.g., by PMKSA caching), so bind STA */
|
/* VLAN ID already set (e.g., by PMKSA caching), so bind STA */
|
||||||
if (ap_sta_bind_vlan(hapd, sta, 0) < 0)
|
if (ap_sta_bind_vlan(hapd, sta, 0) < 0)
|
||||||
goto fail;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
hostapd_set_sta_flags(hapd, sta);
|
hostapd_set_sta_flags(hapd, sta);
|
||||||
|
@ -2022,13 +2011,6 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
||||||
hapd->new_assoc_sta_cb(hapd, sta, !new_assoc);
|
hapd->new_assoc_sta_cb(hapd, sta, !new_assoc);
|
||||||
|
|
||||||
ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);
|
ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);
|
||||||
|
|
||||||
fail:
|
|
||||||
/* Copy of the association request is not needed anymore */
|
|
||||||
if (sta->last_assoc_req) {
|
|
||||||
os_free(sta->last_assoc_req);
|
|
||||||
sta->last_assoc_req = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -239,7 +239,6 @@ void ap_free_sta(struct hostapd_data *hapd, struct sta_info *sta)
|
||||||
radius_client_flush_auth(hapd->radius, sta->addr);
|
radius_client_flush_auth(hapd->radius, sta->addr);
|
||||||
#endif /* CONFIG_NO_RADIUS */
|
#endif /* CONFIG_NO_RADIUS */
|
||||||
|
|
||||||
os_free(sta->last_assoc_req);
|
|
||||||
os_free(sta->challenge);
|
os_free(sta->challenge);
|
||||||
|
|
||||||
#ifdef CONFIG_IEEE80211W
|
#ifdef CONFIG_IEEE80211W
|
||||||
|
|
|
@ -61,7 +61,6 @@ struct sta_info {
|
||||||
unsigned int hs20_deauth_requested:1;
|
unsigned int hs20_deauth_requested:1;
|
||||||
|
|
||||||
u16 auth_alg;
|
u16 auth_alg;
|
||||||
u8 previous_ap[6];
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
STA_NULLFUNC = 0, STA_DISASSOC, STA_DEAUTH, STA_REMOVE,
|
STA_NULLFUNC = 0, STA_DISASSOC, STA_DEAUTH, STA_REMOVE,
|
||||||
|
@ -74,9 +73,6 @@ struct sta_info {
|
||||||
/* IEEE 802.1X related data */
|
/* IEEE 802.1X related data */
|
||||||
struct eapol_state_machine *eapol_sm;
|
struct eapol_state_machine *eapol_sm;
|
||||||
|
|
||||||
/* IEEE 802.11f (IAPP) related data */
|
|
||||||
struct ieee80211_mgmt *last_assoc_req;
|
|
||||||
|
|
||||||
u32 acct_session_id_hi;
|
u32 acct_session_id_hi;
|
||||||
u32 acct_session_id_lo;
|
u32 acct_session_id_lo;
|
||||||
struct os_reltime acct_session_start;
|
struct os_reltime acct_session_start;
|
||||||
|
|
Loading…
Reference in a new issue