return true;
        } else if (ETH_P_PAE == ether_type) {
+               /* EAPOL is seens as in-4way */
+               rtlpriv->btcoexist.btc_info.in_4way = true;
+               rtlpriv->btcoexist.btc_info.in_4way_ts = jiffies;
+       rtlpriv->btcoexist.btc_info.in_4way_ts = jiffies;
+
                RT_TRACE(rtlpriv, (COMP_SEND | COMP_RECV), DBG_DMESG,
                         "802.1X %s EAPOL pkt!!\n", (is_tx) ? "Tx" : "Rx");
 
        if (rtlpriv->cfg->ops->get_btc_status())
                rtlpriv->btcoexist.btc_ops->btc_periodical(rtlpriv);
 
+       if (rtlpriv->btcoexist.btc_info.in_4way) {
+               if (time_after(jiffies, rtlpriv->btcoexist.btc_info.in_4way_ts +
+                              msecs_to_jiffies(IN_4WAY_TIMEOUT_TIME)))
+                       rtlpriv->btcoexist.btc_info.in_4way = false;
+       }
+
        rtlpriv->link_info.bcn_rx_inperiod = 0;
 
        /* <6> scan list */
 
        u8 mac_addr[ETH_ALEN];
        u8 bcast_addr[ETH_ALEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
 
+       rtlpriv->btcoexist.btc_info.in_4way = false;
+
        if (rtlpriv->cfg->mod_params->sw_crypto || rtlpriv->sec.use_sw_sec) {
                RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
                         "not open hw encryption\n");