diff --git a/package/mac80211/patches/300-pending_work.patch b/package/mac80211/patches/300-pending_work.patch
index fd7417b44b02a487e8cf595cb81cff2130f075ff..71cc860bdb2af5fe593c03f4b6ebd188b078cb64 100644
--- a/package/mac80211/patches/300-pending_work.patch
+++ b/package/mac80211/patches/300-pending_work.patch
@@ -3105,7 +3105,17 @@
  		break;
  	case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP):
  	case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP):
-@@ -3031,10 +3060,16 @@ static int prepare_for_handlers(struct i
+@@ -3023,6 +3052,9 @@ static int prepare_for_handlers(struct i
+ 			 * and location updates. Note that mac80211
+ 			 * itself never looks at these frames.
+ 			 */
++			if (!multicast &&
++			    !ether_addr_equal(sdata->vif.addr, hdr->addr1))
++				return 0;
+ 			if (ieee80211_is_public_action(hdr, skb->len))
+ 				return 1;
+ 			if (!ieee80211_is_beacon(hdr->frame_control))
+@@ -3031,10 +3063,16 @@ static int prepare_for_handlers(struct i
  		}
  		break;
  	case NL80211_IFTYPE_WDS: