mesh: Calculate MTK before sending it to MAC in case Open is dropped

IEEE Std 802.11-2012 13.5.6.3 State transitions require an action
sending SETKEYS primitive to MAC when OPN_ACPT event occurs in CNF_RCVD
state in case of AMPE is used, but since MTK calculation is missed in
this condition, all zero valued key are passed to MAC and cause unicast
packet decryption error. This could happen if the first transmission of
plink Open frame is dropped and Confirm frame is processed first
followed by retransmitted Open frame.

Fix this by calculating the MTK also in this sequence of unexpected
messages.

Signed-off-by: Peter Oh <poh@qca.qualcomm.com>
This commit is contained in:
Peter Oh 2016-04-29 14:27:58 -07:00 committed by Jouni Malinen
parent baa1213649
commit f42c3ceb94

View file

@ -934,6 +934,8 @@ static void mesh_mpm_fsm(struct wpa_supplicant *wpa_s, struct sta_info *sta,
PLINK_CLOSE, reason); PLINK_CLOSE, reason);
break; break;
case OPN_ACPT: case OPN_ACPT:
if (conf->security & MESH_CONF_SEC_AMPE)
mesh_rsn_derive_mtk(wpa_s, sta);
mesh_mpm_plink_estab(wpa_s, sta); mesh_mpm_plink_estab(wpa_s, sta);
mesh_mpm_send_plink_action(wpa_s, sta, mesh_mpm_send_plink_action(wpa_s, sta,
PLINK_CONFIRM, 0); PLINK_CONFIRM, 0);