--- a/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_compat.h +++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_compat.h @@ -52,7 +52,7 @@ #endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 60) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 60) || defined(BUILD_OPENWRT) #define IEEE80211_MAX_AMPDU_BUF IEEE80211_MAX_AMPDU_BUF_HE #define IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMING_PARTIAL_BW_FB #define IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB --- a/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c +++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_main.c @@ -3063,7 +3063,7 @@ static struct rwnx_vif *rwnx_interface_a } else vif->use_4addr = false; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) || defined(BUILD_OPENWRT) if (cfg80211_register_netdevice(ndev)) #else if (register_netdevice(ndev)) @@ -3336,7 +3336,7 @@ static int rwnx_cfg80211_del_iface(struc if (dev->reg_state == NETREG_REGISTERED) { /* Will call rwnx_close if interface is UP */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0) || defined(BUILD_OPENWRT) cfg80211_unregister_netdevice(dev); #else unregister_netdevice(dev); --- a/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_mod_params.c +++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_mod_params.c @@ -1312,7 +1312,7 @@ static void rwnx_set_he_capa(struct rwnx if (rwnx_hw->mod_params->stbc_on) he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) || defined(BUILD_OPENWRT) he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU; @@ -1330,7 +1330,7 @@ static void rwnx_set_he_capa(struct rwnx } he_cap->he_cap_elem.phy_cap_info[5] |= IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) || defined(BUILD_OPENWRT) he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB | @@ -1429,7 +1429,7 @@ static void rwnx_set_he_capa(struct rwnx #endif if (rwnx_hw->mod_params->stbc_on) he_cap->he_cap_elem.phy_cap_info[2] |= IEEE80211_HE_PHY_CAP2_STBC_RX_UNDER_80MHZ; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) || defined(BUILD_OPENWRT) he_cap->he_cap_elem.phy_cap_info[3] |= IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_16_QAM | IEEE80211_HE_PHY_CAP3_DCM_MAX_RX_NSS_1 | IEEE80211_HE_PHY_CAP3_RX_PARTIAL_BW_SU_IN_20MHZ_MU; @@ -1446,7 +1446,7 @@ static void rwnx_set_he_capa(struct rwnx } he_cap->he_cap_elem.phy_cap_info[5] |= IEEE80211_HE_PHY_CAP5_NG16_SU_FEEDBACK | IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK; - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 13, 0) || defined(BUILD_OPENWRT) he_cap->he_cap_elem.phy_cap_info[6] |= IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_42_SU | IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU | IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMING_FB | @@ -1732,7 +1732,7 @@ void rwnx_custregd(struct rwnx_hw *rwnx_ wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED; rtnl_lock(); - #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) || defined(BUILD_OPENWRT) if (regulatory_set_wiphy_regd_sync(wiphy, getRegdomainFromRwnxDB(wiphy, default_ccode))){ wiphy_err(wiphy, "Failed to set custom regdomain\n"); } --- a/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_radar.c +++ b/src/SDIO/driver_fw/driver/aic8800/aic8800_fdrv/rwnx_radar.c @@ -1282,7 +1282,11 @@ static void rwnx_radar_detected(struct r chan_def = rwnx_hw->chanctx_table[rwnx_hw->cur_chanctx].chan_def; rwnx_radar_cancel_cac(&rwnx_hw->radar); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0) || defined(BUILD_OPENWRT) + __cfg80211_radar_event(rwnx_hw->wiphy, &chan_def, true, GFP_KERNEL); +#else cfg80211_radar_event(rwnx_hw->wiphy, &chan_def, GFP_KERNEL); +#endif #endif /* CONFIG_RWNX_FULLMAC */ }