if (is_dummy || !wlvif)
                rate_idx = 0;
        else if (wlvif->bss_type != BSS_TYPE_AP_BSS) {
-               /* if the packets are destined for AP (have a STA entry)
-                  send them with AP rate policies, otherwise use default
-                  basic rates */
+               /*
+                * if the packets are destined for AP (have a STA entry)
+                * send them with AP rate policies (EAPOLs are an exception),
+                * otherwise use default basic rates
+                */
                if (control->flags & IEEE80211_TX_CTL_NO_CCK_RATE)
                        rate_idx = wlvif->sta.p2p_rate_idx;
+               else if (skb->protocol == cpu_to_be16(ETH_P_PAE))
+                       rate_idx = wlvif->sta.basic_rate_idx;
                else if (control->control.sta)
                        rate_idx = wlvif->sta.ap_rate_idx;
                else