diff --git a/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0015-mac80211-mtk-ageout-color-bitmap.patch b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0015-mac80211-mtk-ageout-color-bitmap.patch
new file mode 100644
index 0000000..b1e7ec1
--- /dev/null
+++ b/autobuild_mac80211_release/package/kernel/mac80211_dev/patches/subsys/mtk-0015-mac80211-mtk-ageout-color-bitmap.patch
@@ -0,0 +1,145 @@
+From fb56546c9ec94dd9f8ca4b6cfd91d029710b75c2 Mon Sep 17 00:00:00 2001
+From: Yi-Chia Hsieh <yi-chia.hsieh@mediatek.com>
+Date: Mon, 13 Mar 2023 05:36:59 +0800
+Subject: [PATCH 15/15] mac80211: mtk: ageout color bitmap
+
+Adding a periodic work which runs once per second to check BSS color.
+OBSS BSS Color will be ageout if not seen for 10 seconds.
+---
+ include/net/mac80211.h     |  1 +
+ net/mac80211/cfg.c         | 30 ++++++++++++++++++++++++++++++
+ net/mac80211/ieee80211_i.h |  5 +++++
+ net/mac80211/iface.c       |  5 +++++
+ net/mac80211/link.c        |  2 ++
+ net/mac80211/rx.c          |  1 +
+ 6 files changed, 44 insertions(+)
+
+diff --git a/include/net/mac80211.h b/include/net/mac80211.h
+index 83bbf70..5ca2f10 100644
+--- a/include/net/mac80211.h
++++ b/include/net/mac80211.h
+@@ -730,6 +730,7 @@ struct ieee80211_bss_conf {
+ 	struct ieee80211_he_obss_pd he_obss_pd;
+ 	struct cfg80211_he_bss_color he_bss_color;
+ 	u64 used_color_bitmap;
++	u64 color_last_seen[64];
+ 	struct ieee80211_fils_discovery fils_discovery;
+ 	u32 unsol_bcast_probe_resp_interval;
+ 	struct cfg80211_bitrate_mask beacon_tx_rate;
+diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
+index 5c9dda1..343ce2b 100644
+--- a/net/mac80211/cfg.c
++++ b/net/mac80211/cfg.c
+@@ -4755,6 +4755,36 @@ out:
+ 	return err;
+ }
+ 
++void
++ieee80211_color_aging_work(struct work_struct *work)
++{
++	struct ieee80211_sub_if_data *sdata =
++		container_of(work, struct ieee80211_sub_if_data,
++			     deflink.color_aging_work.work);
++	struct ieee80211_bss_conf *bss_conf = &sdata->vif.bss_conf;
++	int i = 0;
++
++	sdata_lock(sdata);
++
++	if (!ieee80211_sdata_running(sdata))
++		goto unlock;
++
++	for (i = 0; i < IEEE80211_BSS_COLOR_MAX; i++) {
++		/* ageout if not seen for a period */
++		if ((bss_conf->used_color_bitmap & BIT_ULL(i)) &&
++		     time_before(bss_conf->color_last_seen[i],
++				 jiffies - IEEE80211_BSS_COLOR_AGEOUT_TIME * HZ)) {
++			bss_conf->used_color_bitmap &= ~BIT_ULL(i);
++		}
++	}
++
++	ieee80211_queue_delayed_work(&sdata->local->hw,
++			&sdata->deflink.color_aging_work, HZ);
++
++unlock:
++	sdata_unlock(sdata);
++}
++
+ static int
+ ieee80211_set_radar_background(struct wiphy *wiphy,
+ 			       struct cfg80211_chan_def *chandef)
+diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
+index f7da92b..bc3f133 100644
+--- a/net/mac80211/ieee80211_i.h
++++ b/net/mac80211/ieee80211_i.h
+@@ -987,6 +987,7 @@ struct ieee80211_link_data {
+ 	struct cfg80211_chan_def csa_chandef;
+ 
+ 	struct work_struct color_change_finalize_work;
++	struct delayed_work color_aging_work;
+ 
+ 	/* context reservation -- protected with chanctx_mtx */
+ 	struct ieee80211_chanctx *reserved_chanctx;
+@@ -1930,8 +1931,12 @@ void ieee80211_csa_finalize_work(struct work_struct *work);
+ int ieee80211_channel_switch(struct wiphy *wiphy, struct net_device *dev,
+ 			     struct cfg80211_csa_settings *params);
+ 
++#define IEEE80211_BSS_COLOR_AGEOUT_TIME        10
++#define IEEE80211_BSS_COLOR_MAX                64
++
+ /* color change handling */
+ void ieee80211_color_change_finalize_work(struct work_struct *work);
++void ieee80211_color_aging_work(struct work_struct *work);
+ 
+ /* interface handling */
+ #define MAC80211_SUPPORTED_FEATURES_TX	(NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | \
+diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
+index b82065c..6a300ab 100644
+--- a/net/mac80211/iface.c
++++ b/net/mac80211/iface.c
+@@ -541,6 +541,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, bool going_do
+ 	cancel_work_sync(&sdata->deflink.color_change_finalize_work);
+ 
+ 	cancel_delayed_work_sync(&sdata->deflink.dfs_cac_timer_work);
++	cancel_delayed_work_sync(&sdata->deflink.color_aging_work);
+ 
+ 	if (sdata->wdev.cac_started) {
+ 		chandef = sdata->vif.bss_conf.chandef;
+@@ -1470,6 +1471,10 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
+ 
+ 	set_bit(SDATA_STATE_RUNNING, &sdata->state);
+ 
++	if (sdata->vif.type == NL80211_IFTYPE_AP)
++		ieee80211_queue_delayed_work(&sdata->local->hw,
++					     &sdata->deflink.color_aging_work, HZ);
++
+ 	return 0;
+  err_del_interface:
+ 	drv_remove_interface(local, sdata);
+diff --git a/net/mac80211/link.c b/net/mac80211/link.c
+index e309708..d34cdc2 100644
+--- a/net/mac80211/link.c
++++ b/net/mac80211/link.c
+@@ -43,6 +43,8 @@ void ieee80211_link_init(struct ieee80211_sub_if_data *sdata,
+ 	INIT_LIST_HEAD(&link->reserved_chanctx_list);
+ 	INIT_DELAYED_WORK(&link->dfs_cac_timer_work,
+ 			  ieee80211_dfs_cac_timer_work);
++	INIT_DELAYED_WORK(&link->color_aging_work,
++			  ieee80211_color_aging_work);
+ 
+ 	if (!deflink) {
+ 		switch (sdata->vif.type) {
+diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
+index bc5b471..b96eb7c 100644
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -3340,6 +3340,7 @@ ieee80211_rx_check_bss_color_collision(struct ieee80211_rx_data *rx)
+ 				      IEEE80211_HE_OPERATION_BSS_COLOR_MASK);
+ 
+ 		bss_conf->used_color_bitmap |= BIT_ULL(color);
++		bss_conf->color_last_seen[color] = jiffies;
+ 
+ 		trace_bss_color_bitmap(color, bss_conf->used_color_bitmap);
+ 
+-- 
+2.18.0
+
