+@@ -759,6 +759,9 @@ ieee80211_sta_join(struct ieee80211vap *
+ ieee80211_setup_rates(ni, se->se_rates, se->se_xrates,
+ IEEE80211_F_DOSORT | IEEE80211_F_DONEGO | IEEE80211_F_DODEL);
+
++ if (vap->iv_opmode == IEEE80211_M_IBSS)
++ ieee80211_node_table_reset(&vap->iv_ic->ic_sta, vap);
++
+ return ieee80211_sta_join1(PASS_NODE(ni));
+ }
+ EXPORT_SYMBOL(ieee80211_sta_join);
+--- a/ath/if_ath.c
++++ b/ath/if_ath.c
+@@ -6655,10 +6655,8 @@ ath_recv_mgmt(struct ieee80211vap * vap,
+ * if the difference it too small. Otherwise we are playing
+ * tsf-pingpong with other vendors drivers */
+ beacon_tsf = le64_to_cpu(ni->ni_tstamp.tsf);
+- if (beacon_tsf > rtsf + 0xffff) {
++ if (beacon_tsf > rtsf + 0xffff)
+ ath_hal_settsf64(sc->sc_ah, beacon_tsf - rtsf);
+- ieee80211_ibss_merge(ni);
+- }
+ break;
+ }
+ /* NB: Fall Through */