anchor.diff:  
   	Other ->
   	    lager:debug("rsna_4way_handshake 2 of 4: ~p", [Other]),
  -	    wtp_del_station(State),
  -	    aaa_disassociation(State),
  -	    State#state{eapol_state = undefined, cipher_state = undefined}
  +	    %% silently discard, see above
  +	    State
       end;
   
   rsna_4way_handshake({key, _Flags, _CipherSuite, ReplayCounter, _SNonce, _KeyData, MICData},
  
positive.code: 
  	Other ->
  	    lager:debug("rsna_4way_handshake 4 of 4: ~p", [Other]),
  	    wtp_del_station(State),
  	    aaa_disassociation(State),
  	    State#state{eapol_state = undefined, cipher_state = undefined}
      end;
  
  rsna_4way_handshake(Frame, State) ->
      lager:warning("got unexpexted EAPOL data in 4way Handshake: ~p", [Frame]),
      State.
  
  rsna_2way_handshake(rekey, State = #state{eapol_state = installed,
  
negative.code: 					#ccmp{
  					   replay_counter = ReplayCounter} = CipherState}) ->
      State = stop_eapol_timer(State0),
  
      %%
      %% 802.11-2012, Sect. 11.6.6.5: 4-Way Handshake Message 4
      %%
      %%    Processing for PTK generation is as follows:
      %%
      %%    ...
      %%
      %%    On reception of Message 4, the Authenticator verifies that the Key
      %%    Replay Counter field value is one that it used on this 4-Way Handshake;
      %%    if it is not, it silently discards the message. Otherwise:
      %%
      %%       a) The Authenticator checks the MIC. If the calculated MIC does not
      %%          match the MIC that the Supplicant included in the EAPOL-Key frame,
      %%          the Authenticator silently discards Message 4.
      %%
  
      case eapol:validate_mic(CipherState, MICData) of
  	ok ->
  	    lager:debug("rsna_4way_handshake 4 of 4: ok"),
  