ath10k-ct: use 6.2 version
authorRobert Marko <robimarko@gmail.com>
Thu, 25 May 2023 18:02:40 +0000 (20:02 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Sun, 28 May 2023 06:56:39 +0000 (08:56 +0200)
ath10k-ct now offers 6.2 and 6.4 versions, so lets update to use 6.2
so we can get rid of the API update patch as well as NVMEM as that is
already present in the newer driver.
Ben merged the debug compilation patch so we can remove that one as well.

Update patches to point to 6.2 version and refresh them.

Signed-off-by: Robert Marko <robimarko@gmail.com>
package/kernel/ath10k-ct/Makefile
package/kernel/ath10k-ct/patches/100-api_update.patch [deleted file]
package/kernel/ath10k-ct/patches/120-ath10k-fetch-calibration-data-via-nvmem-subsystem.patch [deleted file]
package/kernel/ath10k-ct/patches/130-ath10k-read-qcom-coexist-support-as-a-u32.patch
package/kernel/ath10k-ct/patches/201-ath10k-add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
package/kernel/ath10k-ct/patches/202-ath10k-use-tpt-trigger-by-default.patch
package/kernel/ath10k-ct/patches/203-ath10k-ct-fix-compilation-warning-for-debug-level.patch [deleted file]
package/kernel/ath10k-ct/patches/300-ath10k-ct-Fix-spectral-scan-NULL-pointer.patch
package/kernel/ath10k-ct/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch
package/kernel/ath10k-ct/patches/960-0011-ath10k-limit-pci-buffer-size.patch

index fdeb14e46c73bdf43a4738a63b520faa138a53ce..2bb7c7e2f72906c85d80ae69fc7a7be7178bc36e 100644 (file)
@@ -1,21 +1,21 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ath10k-ct
-PKG_RELEASE:=5
+PKG_RELEASE:=1
 
 PKG_LICENSE:=GPLv2
 PKG_LICENSE_FILES:=
 
 PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_DATE:=2022-05-13
-PKG_SOURCE_VERSION:=f808496fcc6b1f68942914117aebf8b3f8d52bb3
-PKG_MIRROR_HASH:=39527b3408696594eda5579521a9fb798417be4dda73fa08e8b3a8c7b0d3f3d9
+PKG_SOURCE_DATE:=2023-05-26
+PKG_SOURCE_VERSION:=af342b6171a457e067932615deb203b68b1d076a
+PKG_MIRROR_HASH:=90e145fbe6057da65b637e3a194317c1e4f529b078c7e4a245a286c37e3d1b76
 
-# Build the 5.15 ath10k-ct driver version.
+# Build the 6.2 ath10k-ct driver version.
 # Probably this should match as closely as
 # possible to whatever mac80211 backports version is being used.
-CT_KVER="-5.15"
+CT_KVER="-6.2"
 
 PKG_MAINTAINER:=Ben Greear <greearb@candelatech.com>
 PKG_BUILD_PARALLEL:=1
diff --git a/package/kernel/ath10k-ct/patches/100-api_update.patch b/package/kernel/ath10k-ct/patches/100-api_update.patch
deleted file mode 100644 (file)
index 5343c29..0000000
+++ /dev/null
@@ -1,618 +0,0 @@
---- a/ath10k-5.15/mac.c
-+++ b/ath10k-5.15/mac.c
-@@ -788,7 +788,7 @@ int ath10k_mac_vif_chan(struct ieee80211
-       struct ieee80211_chanctx_conf *conf;
-       rcu_read_lock();
--      conf = rcu_dereference(vif->chanctx_conf);
-+      conf = rcu_dereference(vif->bss_conf.chanctx_conf);
-       if (!conf) {
-               rcu_read_unlock();
-               return -ENOENT;
-@@ -1764,8 +1764,8 @@ static int ath10k_vdev_start_restart(str
-               arg.channel.chan_radar =
-                       !!(chandef->chan->flags & IEEE80211_CHAN_RADAR);
-       } else if (arvif->vdev_type == WMI_VDEV_TYPE_IBSS) {
--              arg.ssid = arvif->vif->bss_conf.ssid;
--              arg.ssid_len = arvif->vif->bss_conf.ssid_len;
-+              arg.ssid = arvif->vif->cfg.ssid;
-+              arg.ssid_len = arvif->vif->cfg.ssid_len;
-       }
-       ath10k_dbg(ar, ATH10K_DBG_MAC,
-@@ -1890,7 +1890,7 @@ static int ath10k_mac_setup_bcn_tmpl(str
-           arvif->vdev_type != WMI_VDEV_TYPE_IBSS)
-               return 0;
--      bcn = ieee80211_beacon_get_template(hw, vif, &offs);
-+      bcn = ieee80211_beacon_get_template(hw, vif, &offs, 0);
-       if (!bcn) {
-               ath10k_warn(ar, "failed to get beacon template from mac80211\n");
-               return -EPERM;
-@@ -2083,8 +2083,7 @@ static void ath10k_control_beaconing(str
- }
- static void ath10k_control_ibss(struct ath10k_vif *arvif,
--                              struct ieee80211_bss_conf *info,
--                              const u8 self_peer[ETH_ALEN])
-+                              struct ieee80211_vif *vif)
- {
-       struct ath10k *ar = arvif->ar;
-       u32 vdev_param;
-@@ -2092,7 +2091,7 @@ static void ath10k_control_ibss(struct a
-       lockdep_assert_held(&arvif->ar->conf_mutex);
--      if (!info->ibss_joined) {
-+      if (!vif->cfg.ibss_joined) {
-               if (is_zero_ether_addr(arvif->bssid))
-                       return;
-@@ -2298,7 +2297,7 @@ static void ath10k_mac_vif_ap_csa_count_
-       if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
-               return;
--      if (!vif->csa_active)
-+      if (!vif->bss_conf.csa_active)
-               return;
-       if (!arvif->is_up)
-@@ -2433,7 +2432,7 @@ static void ath10k_peer_assoc_h_basic(st
-       lockdep_assert_held(&ar->conf_mutex);
-       if (vif->type == NL80211_IFTYPE_STATION)
--              aid = vif->bss_conf.aid;
-+              aid = vif->cfg.aid;
-       else
-               aid = sta->aid;
-@@ -2463,7 +2462,8 @@ static void ath10k_peer_assoc_h_crypto(s
-               return;
-       bss = cfg80211_get_bss(ar->hw->wiphy, def.chan, info->bssid,
--                             info->ssid_len ? info->ssid : NULL, info->ssid_len,
-+                             vif->cfg.ssid_len ? vif->cfg.ssid : NULL,
-+                             vif->cfg.ssid_len,
-                              IEEE80211_BSS_TYPE_ANY, IEEE80211_PRIVACY_ANY);
-       if (bss) {
-               const struct cfg80211_bss_ies *ies;
-@@ -2521,7 +2521,7 @@ static void ath10k_peer_assoc_h_rates(st
-       band = def.chan->band;
-       sband = ar->hw->wiphy->bands[band];
--      ratemask = sta->supp_rates[band];
-+      ratemask = sta->deflink.supp_rates[band];
-       ratemask &= arvif->bitrate_mask.control[band].legacy;
-       rates = sband->bitrates;
-@@ -2770,7 +2770,7 @@ static void ath10k_peer_assoc_h_ht(struc
-                                  struct ieee80211_sta *sta,
-                                  struct wmi_peer_assoc_complete_arg *arg)
- {
--      const struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
-+      const struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap;
-       struct ath10k_vif *arvif = (void *)vif->drv_priv;
-       struct cfg80211_chan_def def;
-       enum nl80211_band band;
-@@ -2814,7 +2814,7 @@ static void ath10k_peer_assoc_h_ht(struc
-       if (ht_cap->cap & IEEE80211_HT_CAP_LDPC_CODING)
-               arg->peer_flags |= ar->wmi.peer_flags->ldbc;
--      if (sta->bandwidth >= IEEE80211_STA_RX_BW_40) {
-+      if (sta->deflink.bandwidth >= IEEE80211_STA_RX_BW_40) {
-               arg->peer_flags |= ar->wmi.peer_flags->bw40;
-               arg->peer_rate_caps |= WMI_RC_CW40_FLAG;
-       }
-@@ -2883,7 +2883,7 @@ static void ath10k_peer_assoc_h_ht(struc
-                       arg->peer_ht_rates.rates[i] = i;
-       } else {
-               arg->peer_ht_rates.num_rates = n;
--              arg->peer_num_spatial_streams = min(sta->rx_nss, max_nss);
-+              arg->peer_num_spatial_streams = min(sta->deflink.rx_nss, max_nss);
-       }
-       ath10k_dbg(ar, ATH10K_DBG_MAC, "mac ht peer %pM mcs cnt %d nss %d\n",
-@@ -3045,7 +3045,7 @@ static void ath10k_peer_assoc_h_vht(stru
-                                   struct ieee80211_sta *sta,
-                                   struct wmi_peer_assoc_complete_arg *arg)
- {
--      const struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap;
-+      const struct ieee80211_sta_vht_cap *vht_cap = &sta->deflink.vht_cap;
-       struct ath10k_vif *arvif = (void *)vif->drv_priv;
-       struct ath10k_hw_params *hw = &ar->hw_params;
-       struct cfg80211_chan_def def;
-@@ -3087,10 +3087,10 @@ static void ath10k_peer_assoc_h_vht(stru
-                                (1U << (IEEE80211_HT_MAX_AMPDU_FACTOR +
-                                       ampdu_factor)) - 1);
--      if (sta->bandwidth == IEEE80211_STA_RX_BW_80)
-+      if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_80)
-               arg->peer_flags |= ar->wmi.peer_flags->bw80;
--      if (sta->bandwidth == IEEE80211_STA_RX_BW_160)
-+      if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_160)
-               arg->peer_flags |= ar->wmi.peer_flags->bw160;
-       /* Calculate peer NSS capability from VHT capabilities if STA
-@@ -3104,7 +3104,7 @@ static void ath10k_peer_assoc_h_vht(stru
-                   vht_mcs_mask[i])
-                       max_nss = i + 1;
-       }
--      arg->peer_num_spatial_streams = min(sta->rx_nss, max_nss);
-+      arg->peer_num_spatial_streams = min(sta->deflink.rx_nss, max_nss);
-       arg->peer_vht_rates.rx_max_rate =
-               __le16_to_cpu(vht_cap->vht_mcs.rx_highest);
-       arg->peer_vht_rates.rx_mcs_set =
-@@ -3266,7 +3266,7 @@ static bool ath10k_mac_sta_has_ofdm_only
- {
-       struct ath10k_vif *arvif = (void *)vif->drv_priv;
-       u32 msk = arvif->bitrate_mask.control[NL80211_BAND_2GHZ].legacy &
--              sta->supp_rates[NL80211_BAND_2GHZ];
-+              sta->deflink.supp_rates[NL80211_BAND_2GHZ];
-       /* We have 12 bits of legacy rates, first 4 are /b (CCK) rates. */
-       return (msk & 0xff0) && !(msk & 0xf);
- }
-@@ -3276,7 +3276,7 @@ static bool ath10k_mac_sta_has_ofdm_and_
- {
-       struct ath10k_vif *arvif = (void *)vif->drv_priv;
-       u32 msk = arvif->bitrate_mask.control[NL80211_BAND_2GHZ].legacy &
--              sta->supp_rates[NL80211_BAND_2GHZ];
-+              sta->deflink.supp_rates[NL80211_BAND_2GHZ];
-       /* We have 12 bits of legacy rates, first 4 are /b (CCK) rates. */
-       return ((msk & 0xf) && (msk & 0xff0));
- }
-@@ -3284,8 +3284,10 @@ static bool ath10k_mac_sta_has_ofdm_and_
- static enum wmi_phy_mode ath10k_mac_get_phymode_vht(struct ath10k *ar,
-                                                   struct ieee80211_sta *sta)
- {
--      if (sta->bandwidth == IEEE80211_STA_RX_BW_160) {
--              switch (sta->vht_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) {
-+      struct ieee80211_sta_vht_cap *vht_cap = &sta->deflink.vht_cap;
-+
-+      if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_160) {
-+              switch (vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) {
-               case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ:
-                       return MODE_11AC_VHT160;
-               case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ:
-@@ -3296,13 +3298,13 @@ static enum wmi_phy_mode ath10k_mac_get_
-               }
-       }
--      if (sta->bandwidth == IEEE80211_STA_RX_BW_80)
-+      if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_80)
-               return MODE_11AC_VHT80;
--      if (sta->bandwidth == IEEE80211_STA_RX_BW_40)
-+      if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
-               return MODE_11AC_VHT40;
--      if (sta->bandwidth == IEEE80211_STA_RX_BW_20)
-+      if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_20)
-               return MODE_11AC_VHT20;
-       return MODE_UNKNOWN;
-@@ -3329,15 +3331,15 @@ static void ath10k_peer_assoc_h_phymode(
-       switch (band) {
-       case NL80211_BAND_2GHZ:
--              if (sta->vht_cap.vht_supported &&
-+              if (sta->deflink.vht_cap.vht_supported &&
-                   !ath10k_peer_assoc_h_vht_masked(vht_mcs_mask)) {
--                      if (sta->bandwidth == IEEE80211_STA_RX_BW_40)
-+                      if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
-                               phymode = MODE_11AC_VHT40;
-                       else
-                               phymode = MODE_11AC_VHT20;
--              } else if (sta->ht_cap.ht_supported &&
-+              } else if (sta->deflink.ht_cap.ht_supported &&
-                          !ath10k_peer_assoc_h_ht_masked(ht_mcs_mask)) {
--                      if (sta->bandwidth == IEEE80211_STA_RX_BW_40)
-+                      if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
-                               phymode = MODE_11NG_HT40;
-                       else
-                               phymode = MODE_11NG_HT20;
-@@ -3354,12 +3356,12 @@ static void ath10k_peer_assoc_h_phymode(
-               /*
-                * Check VHT first.
-                */
--              if (sta->vht_cap.vht_supported &&
-+              if (sta->deflink.vht_cap.vht_supported &&
-                   !ath10k_peer_assoc_h_vht_masked(vht_mcs_mask)) {
-                       phymode = ath10k_mac_get_phymode_vht(ar, sta);
--              } else if (sta->ht_cap.ht_supported &&
-+              } else if (sta->deflink.ht_cap.ht_supported &&
-                          !ath10k_peer_assoc_h_ht_masked(ht_mcs_mask)) {
--                      if (sta->bandwidth >= IEEE80211_STA_RX_BW_40)
-+                      if (sta->deflink.bandwidth >= IEEE80211_STA_RX_BW_40)
-                               phymode = MODE_11NA_HT40;
-                       else
-                               phymode = MODE_11NA_HT20;
-@@ -3373,8 +3375,8 @@ static void ath10k_peer_assoc_h_phymode(
-       }
-       ath10k_dbg(ar, ATH10K_DBG_MAC, "mac peer %pM phymode %s  legacy-supp-rates: 0x%x  arvif-legacy-rates: 0x%x vht-supp: %d\n",
--                 sta->addr, ath10k_wmi_phymode_str(phymode), sta->supp_rates[band],
--                 arvif->bitrate_mask.control[band].legacy, sta->vht_cap.vht_supported);
-+                 sta->addr, ath10k_wmi_phymode_str(phymode), sta->deflink.supp_rates[band],
-+                 arvif->bitrate_mask.control[band].legacy, sta->deflink.vht_cap.vht_supported);
-       arg->peer_phymode = phymode;
-       WARN_ON(phymode == MODE_UNKNOWN);
-@@ -3677,8 +3679,8 @@ static void ath10k_bss_assoc(struct ieee
-       /* ap_sta must be accessed only within rcu section which must be left
-        * before calling ath10k_setup_peer_smps() which might sleep.
-        */
--      ht_cap = ap_sta->ht_cap;
--      vht_cap = ap_sta->vht_cap;
-+      ht_cap = ap_sta->deflink.ht_cap;
-+      vht_cap = ap_sta->deflink.vht_cap;
-       ret = ath10k_peer_assoc_prepare(ar, vif, ap_sta, &peer_arg);
-       if (ret) {
-@@ -3713,11 +3715,11 @@ static void ath10k_bss_assoc(struct ieee
-       ath10k_dbg(ar, ATH10K_DBG_MAC,
-                  "mac vdev %d up (associated) bssid %pM aid %d bandwidth %d\n",
--                 arvif->vdev_id, bss_conf->bssid, bss_conf->aid, ap_sta->bandwidth);
-+                 arvif->vdev_id, bss_conf->bssid, vif->cfg.aid, ap_sta->deflink.bandwidth);
-       WARN_ON(arvif->is_up);
--      arvif->aid = bss_conf->aid;
-+      arvif->aid = vif->cfg.aid;
-       ether_addr_copy(arvif->bssid, bss_conf->bssid);
-       ret = ath10k_wmi_pdev_set_param(ar,
-@@ -4022,7 +4024,7 @@ static int ath10k_station_assoc(struct a
-        */
-       if (!reassoc) {
-               ret = ath10k_setup_peer_smps(ar, arvif, sta->addr,
--                                           &sta->ht_cap);
-+                                           &sta->deflink.ht_cap);
-               if (ret) {
-                       ath10k_warn(ar, "failed to setup peer SMPS for vdev %d: %d\n",
-                                   arvif->vdev_id, ret);
-@@ -6916,7 +6918,7 @@ static void ath10k_recalculate_mgmt_rate
- static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
-                                   struct ieee80211_vif *vif,
-                                   struct ieee80211_bss_conf *info,
--                                  u32 changed)
-+                                  u64 changed)
- {
-       struct ath10k *ar = hw->priv;
-       struct ath10k_vif *arvif = (void *)vif->drv_priv;
-@@ -6930,7 +6932,7 @@ static void ath10k_bss_info_changed(stru
-       mutex_lock(&ar->conf_mutex);
-       if (changed & BSS_CHANGED_IBSS)
--              ath10k_control_ibss(arvif, info, vif->addr);
-+              ath10k_control_ibss(arvif, vif);
-       if (changed & BSS_CHANGED_BEACON_INT) {
-               arvif->beacon_interval = info->beacon_int;
-@@ -6995,9 +6997,9 @@ static void ath10k_bss_info_changed(stru
-       if (changed & BSS_CHANGED_SSID &&
-           vif->type == NL80211_IFTYPE_AP) {
--              arvif->u.ap.ssid_len = info->ssid_len;
--              if (info->ssid_len)
--                      memcpy(arvif->u.ap.ssid, info->ssid, info->ssid_len);
-+              arvif->u.ap.ssid_len = vif->cfg.ssid_len;
-+              if (vif->cfg.ssid_len)
-+                      memcpy(arvif->u.ap.ssid, vif->cfg.ssid, vif->cfg.ssid_len);
-               arvif->u.ap.hidden_ssid = info->hidden_ssid;
-       }
-@@ -7074,7 +7076,7 @@ static void ath10k_bss_info_changed(stru
-       }
-       if (changed & BSS_CHANGED_ASSOC) {
--              if (info->assoc) {
-+              if (vif->cfg.assoc) {
-                       /* Workaround: Make sure monitor vdev is not running
-                        * when associating to prevent some firmware revisions
-                        * (e.g. 10.1 and 10.2) from crashing.
-@@ -7099,7 +7101,7 @@ static void ath10k_bss_info_changed(stru
-       }
-       if (changed & BSS_CHANGED_PS) {
--              arvif->ps = vif->bss_conf.ps;
-+              arvif->ps = vif->cfg.ps;
-               ret = ath10k_config_ps(ar);
-               if (ret)
-@@ -7699,7 +7701,7 @@ static void ath10k_sta_rc_update_wk(stru
-       if (changed & IEEE80211_RC_SUPP_RATES_CHANGED) {
-               ath10k_dbg(ar, ATH10K_DBG_STA, "mac update sta %pM supp rates, bandwidth: %d\n",
--                         sta->addr, sta->bandwidth);
-+                         sta->addr, sta->deflink.bandwidth);
-               err = ath10k_station_assoc(ar, arvif->vif, sta, true);
-               if (err)
-@@ -7751,10 +7753,10 @@ static int ath10k_sta_set_txpwr(struct i
-       int ret = 0;
-       s16 txpwr;
--      if (sta->txpwr.type == NL80211_TX_POWER_AUTOMATIC) {
-+      if (sta->deflink.txpwr.type == NL80211_TX_POWER_AUTOMATIC) {
-               txpwr = 0;
-       } else {
--              txpwr = sta->txpwr.power;
-+              txpwr = sta->deflink.txpwr.power;
-               if (!txpwr)
-                       return -EINVAL;
-       }
-@@ -7874,26 +7876,29 @@ static int ath10k_mac_validate_rate_mask
-                                        struct ieee80211_sta *sta,
-                                        u32 rate_ctrl_flag, u8 nss)
- {
--      if (nss > sta->rx_nss) {
-+      struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap;
-+      struct ieee80211_sta_vht_cap *vht_cap = &sta->deflink.vht_cap;
-+
-+      if (nss > sta->deflink.rx_nss) {
-               ath10k_warn(ar, "Invalid nss field, configured %u limit %u\n",
--                          nss, sta->rx_nss);
-+                          nss, sta->deflink.rx_nss);
-               return -EINVAL;
-       }
-       if (ATH10K_HW_PREAMBLE(rate_ctrl_flag) == WMI_RATE_PREAMBLE_VHT) {
--              if (!sta->vht_cap.vht_supported) {
-+              if (!vht_cap->vht_supported) {
-                       ath10k_warn(ar, "Invalid VHT rate for sta %pM\n",
-                                   sta->addr);
-                       return -EINVAL;
-               }
-       } else if (ATH10K_HW_PREAMBLE(rate_ctrl_flag) == WMI_RATE_PREAMBLE_HT) {
--              if (!sta->ht_cap.ht_supported || sta->vht_cap.vht_supported) {
-+              if (!ht_cap->ht_supported || vht_cap->vht_supported) {
-                       ath10k_warn(ar, "Invalid HT rate for sta %pM\n",
-                                   sta->addr);
-                       return -EINVAL;
-               }
-       } else {
--              if (sta->ht_cap.ht_supported || sta->vht_cap.vht_supported)
-+              if (ht_cap->ht_supported || vht_cap->vht_supported)
-                       return -EINVAL;
-       }
-@@ -8567,7 +8572,7 @@ static int ath10k_sta_state(struct ieee8
-                * New association.
-                */
-               ath10k_dbg(ar, ATH10K_DBG_STA, "mac sta %pM associated, bandwidth: %d\n",
--                         sta->addr, sta->bandwidth);
-+                         sta->addr, sta->deflink.bandwidth);
-               ret = ath10k_station_assoc(ar, vif, sta, false);
-               if (ret)
-@@ -8580,7 +8585,7 @@ static int ath10k_sta_state(struct ieee8
-                * Tdls station authorized.
-                */
-               ath10k_dbg(ar, ATH10K_DBG_STA, "mac tdls sta %pM authorized, bandwidth: %d\n",
--                         sta->addr, sta->bandwidth);
-+                         sta->addr, sta->deflink.bandwidth);
-               ret = ath10k_station_assoc(ar, vif, sta, false);
-               if (ret) {
-@@ -8721,8 +8726,8 @@ exit:
-       return ret;
- }
--static int ath10k_conf_tx(struct ieee80211_hw *hw,
--                        struct ieee80211_vif *vif, u16 ac,
-+static int ath10k_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
-+                        unsigned int link_id, u16 ac,
-                         const struct ieee80211_tx_queue_params *params)
- {
-       struct ath10k *ar = hw->priv;
-@@ -9308,7 +9313,7 @@ static bool ath10k_mac_set_vht_bitrate_m
-       u8 rate = arvif->vht_pfr;
-       /* skip non vht and multiple rate peers */
--      if (!sta->vht_cap.vht_supported || arvif->vht_num_rates != 1)
-+      if (!sta->deflink.vht_cap.vht_supported || arvif->vht_num_rates != 1)
-               return false;
-       err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
-@@ -9349,7 +9354,7 @@ static void ath10k_mac_clr_bitrate_mask_
-       int err;
-       /* clear vht peers only */
--      if (arsta->arvif != arvif || !sta->vht_cap.vht_supported)
-+      if (arsta->arvif != arvif || !sta->deflink.vht_cap.vht_supported)
-               return;
-       err = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, sta->addr,
-@@ -9534,13 +9539,13 @@ static void ath10k_sta_rc_update(struct
-       ath10k_dbg(ar, ATH10K_DBG_STA,
-                  "mac sta rc update for %pM changed %08x bw %d nss %d smps %d\n",
--                 sta->addr, changed, sta->bandwidth, sta->rx_nss,
--                 sta->smps_mode);
-+                 sta->addr, changed, sta->deflink.bandwidth, sta->deflink.rx_nss,
-+                 sta->deflink.smps_mode);
-       if (changed & IEEE80211_RC_BW_CHANGED) {
-               bw = WMI_PEER_CHWIDTH_20MHZ;
--              switch (sta->bandwidth) {
-+              switch (sta->deflink.bandwidth) {
-               case IEEE80211_STA_RX_BW_20:
-                       bw = WMI_PEER_CHWIDTH_20MHZ;
-                       break;
-@@ -9555,7 +9560,7 @@ static void ath10k_sta_rc_update(struct
-                       break;
-               default:
-                       ath10k_warn(ar, "Invalid bandwidth %d in rc update for %pM\n",
--                                  sta->bandwidth, sta->addr);
-+                                  sta->deflink.bandwidth, sta->addr);
-                       bw = WMI_PEER_CHWIDTH_20MHZ;
-                       break;
-               }
-@@ -9564,12 +9569,12 @@ static void ath10k_sta_rc_update(struct
-       }
-       if (changed & IEEE80211_RC_NSS_CHANGED)
--              arsta->nss = sta->rx_nss;
-+              arsta->nss = sta->deflink.rx_nss;
-       if (changed & IEEE80211_RC_SMPS_CHANGED) {
-               smps = WMI_PEER_SMPS_PS_NONE;
--              switch (sta->smps_mode) {
-+              switch (sta->deflink.smps_mode) {
-               case IEEE80211_SMPS_AUTOMATIC:
-               case IEEE80211_SMPS_OFF:
-                       smps = WMI_PEER_SMPS_PS_NONE;
-@@ -9582,7 +9587,7 @@ static void ath10k_sta_rc_update(struct
-                       break;
-               case IEEE80211_SMPS_NUM_MODES:
-                       ath10k_warn(ar, "Invalid smps %d in sta rc update for %pM\n",
--                                  sta->smps_mode, sta->addr);
-+                                  sta->deflink.smps_mode, sta->addr);
-                       smps = WMI_PEER_SMPS_PS_NONE;
-                       break;
-               }
-@@ -9896,7 +9901,7 @@ ath10k_mac_change_chanctx_cnt_iter(void
- {
-       struct ath10k_mac_change_chanctx_arg *arg = data;
--      if (rcu_access_pointer(vif->chanctx_conf) != arg->ctx)
-+      if (rcu_access_pointer(vif->bss_conf.chanctx_conf) != arg->ctx)
-               return;
-       arg->n_vifs++;
-@@ -9909,7 +9914,7 @@ ath10k_mac_change_chanctx_fill_iter(void
-       struct ath10k_mac_change_chanctx_arg *arg = data;
-       struct ieee80211_chanctx_conf *ctx;
--      ctx = rcu_access_pointer(vif->chanctx_conf);
-+      ctx = rcu_access_pointer(vif->bss_conf.chanctx_conf);
-       if (ctx != arg->ctx)
-               return;
-@@ -9982,6 +9987,7 @@ unlock:
- static int
- ath10k_mac_op_assign_vif_chanctx(struct ieee80211_hw *hw,
-                                struct ieee80211_vif *vif,
-+                               struct ieee80211_bss_conf *link_conf,
-                                struct ieee80211_chanctx_conf *ctx)
- {
-       struct ath10k *ar = hw->priv;
-@@ -10061,6 +10067,7 @@ err:
- static void
- ath10k_mac_op_unassign_vif_chanctx(struct ieee80211_hw *hw,
-                                  struct ieee80211_vif *vif,
-+                                 struct ieee80211_bss_conf *link_conf,
-                                  struct ieee80211_chanctx_conf *ctx)
- {
-       struct ath10k *ar = hw->priv;
---- a/ath10k-5.15/txrx.c
-+++ b/ath10k-5.15/txrx.c
-@@ -260,7 +260,7 @@ int ath10k_txrx_tx_unref(struct ath10k_h
-                       nf = ar->debug.nf_sum[0];
- #endif
-               info->status.ack_signal = nf + tx_done->ack_rssi;
--              info->status.is_valid_ack_signal = true;
-+              info->status.flags |= IEEE80211_TX_STATUS_ACK_SIGNAL_VALID;
-       }
-       if (tx_done->tx_rate_code || tx_done->tx_rate_flags || ar->ok_tx_rate_status) {
---- a/ath10k-5.15/wmi.c
-+++ b/ath10k-5.15/wmi.c
-@@ -2587,7 +2587,7 @@ wmi_process_mgmt_tx_comp(struct ath10k *
-               info->flags |= IEEE80211_TX_STAT_ACK;
-               info->status.ack_signal = ath10k_get_noisefloor(0, ar) +
-                                         param->ack_rssi;
--              info->status.is_valid_ack_signal = true;
-+              info->status.flags |= IEEE80211_TX_STATUS_ACK_SIGNAL_VALID;
-       }
-       ieee80211_tx_status_irqsafe(ar->hw, msdu);
-@@ -4258,13 +4258,13 @@ void ath10k_wmi_event_host_swba(struct a
-                * Once CSA counter is completed stop sending beacons until
-                * actual channel switch is done
-                */
--              if (arvif->vif->csa_active &&
-+              if (arvif->vif->bss_conf.csa_active &&
-                   ieee80211_beacon_cntdwn_is_complete(arvif->vif)) {
-                       ieee80211_csa_finish(arvif->vif);
-                       continue;
-               }
--              bcn = ieee80211_beacon_get(ar->hw, arvif->vif);
-+              bcn = ieee80211_beacon_get(ar->hw, arvif->vif, 0);
-               if (!bcn) {
-                       ath10k_warn(ar, "could not get mac80211 beacon, vdev_id: %i addr: %pM\n",
-                                   arvif->vdev_id, arvif->vif->addr);
---- a/ath10k-5.15/htt_rx.c
-+++ b/ath10k-5.15/htt_rx.c
-@@ -4017,7 +4017,7 @@ ath10k_update_per_peer_tx_stats(struct a
-       switch (txrate.flags) {
-       case WMI_RATE_PREAMBLE_OFDM:
-               if (arsta->arvif && arsta->arvif->vif)
--                      conf = rcu_dereference(arsta->arvif->vif->chanctx_conf);
-+                      conf = rcu_dereference(arsta->arvif->vif->bss_conf.chanctx_conf);
-               if (conf && conf->def.chan->band == NL80211_BAND_5GHZ)
-                       arsta->tx_info.status.rates[0].idx = rate_idx - 4;
-               break;
---- a/ath10k-5.15/wmi-tlv.c
-+++ b/ath10k-5.15/wmi-tlv.c
-@@ -205,7 +205,7 @@ static int ath10k_wmi_tlv_event_bcn_tx_s
-       }
-       arvif = ath10k_get_arvif(ar, vdev_id);
--      if (arvif && arvif->is_up && arvif->vif->csa_active)
-+      if (arvif && arvif->is_up && arvif->vif->bss_conf.csa_active)
-               ieee80211_queue_work(ar->hw, &arvif->ap_csa_work);
-       kfree(tb);
---- a/ath10k-5.15/core.c
-+++ b/ath10k-5.15/core.c
-@@ -4081,7 +4081,7 @@ static int ath10k_core_probe_fw(struct a
-               ath10k_debug_print_board_info(ar);
-       }
--      device_get_mac_address(ar->dev, ar->mac_addr, sizeof(ar->mac_addr));
-+      device_get_mac_address(ar->dev, ar->mac_addr);
-       /* Try to get mac address from device node (from nvmem cell) */
-       of_get_mac_address(ar->dev->of_node, ar->mac_addr);
---- a/ath10k-5.15/pci.c
-+++ b/ath10k-5.15/pci.c
-@@ -3547,8 +3547,7 @@ static void ath10k_pci_free_irq(struct a
- void ath10k_pci_init_napi(struct ath10k *ar)
- {
--      netif_napi_add(&ar->napi_dev, &ar->napi, ath10k_pci_napi_poll,
--                     ATH10K_NAPI_BUDGET);
-+      netif_napi_add(&ar->napi_dev, &ar->napi, ath10k_pci_napi_poll);
- }
- static int ath10k_pci_init_irq(struct ath10k *ar)
---- a/ath10k-5.15/sdio.c
-+++ b/ath10k-5.15/sdio.c
-@@ -2531,8 +2531,7 @@ static int ath10k_sdio_probe(struct sdio
-               return -ENOMEM;
-       }
--      netif_napi_add(&ar->napi_dev, &ar->napi, ath10k_sdio_napi_poll,
--                     ATH10K_NAPI_BUDGET);
-+      netif_napi_add(&ar->napi_dev, &ar->napi, ath10k_sdio_napi_poll);
-       ath10k_dbg(ar, ATH10K_DBG_BOOT,
-                  "sdio new func %d vendor 0x%x device 0x%x block 0x%x/0x%x\n",
---- a/ath10k-5.15/snoc.c
-+++ b/ath10k-5.15/snoc.c
-@@ -1242,8 +1242,7 @@ static int ath10k_snoc_napi_poll(struct
- static void ath10k_snoc_init_napi(struct ath10k *ar)
- {
--      netif_napi_add(&ar->napi_dev, &ar->napi, ath10k_snoc_napi_poll,
--                     ATH10K_NAPI_BUDGET);
-+      netif_napi_add(&ar->napi_dev, &ar->napi, ath10k_snoc_napi_poll);
- }
- static int ath10k_snoc_request_irq(struct ath10k *ar)
diff --git a/package/kernel/ath10k-ct/patches/120-ath10k-fetch-calibration-data-via-nvmem-subsystem.patch b/package/kernel/ath10k-ct/patches/120-ath10k-fetch-calibration-data-via-nvmem-subsystem.patch
deleted file mode 100644 (file)
index c935d85..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-From e2333703373e8b81294da5d1c73c30154f75b082 Mon Sep 17 00:00:00 2001
-From: Christian Lamparter <chunkeey@gmail.com>
-Date: Fri, 15 Oct 2021 18:56:33 +0200
-Subject: [PATCH] ath10k: fetch (pre-)calibration data via nvmem subsystem
-
-On most embedded ath10k devices (like range extenders,
-routers, accesspoints, ...) the calibration data is
-stored in a easily accessible MTD partitions named
-"ART", "caldata", "calibration", etc...
-
-Since commit 4b361cfa8624 ("mtd: core: add OTP nvmem provider support"):
-MTD partitions and portions of them can be specified
-as potential nvmem-cells which are accessible through
-the nvmem subsystem.
-
-This feature - together with an nvmem cell definition either
-in the platform data or via device-tree allows drivers to get
-the (pre-)calibration data which is required for initializing
-the WIFI.
-
-Tested with Netgear EX6150v2 (IPQ4018)
-
-Cc: Robert Marko <robimarko@gmail.com>
-Cc: Thibaut Varene <hacks@slashdirt.org>
-Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
----
---- a/ath10k-5.15/core.c
-+++ b/ath10k-5.15/core.c
-@@ -13,6 +13,7 @@
- #include <linux/dmi.h>
- #include <linux/ctype.h>
- #include <linux/pm_qos.h>
-+#include <linux/nvmem-consumer.h>
- #include <asm/byteorder.h>
- #include <linux/ctype.h>
-@@ -1005,7 +1006,8 @@ static int ath10k_core_get_board_id_from
-       }
-       if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
--          ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE)
-+          ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE ||
-+          ar->cal_mode == ATH10K_PRE_CAL_MODE_NVMEM)
-               bmi_board_id_param = BMI_PARAM_GET_FLASH_BOARD_ID;
-       else
-               bmi_board_id_param = BMI_PARAM_GET_EEPROM_BOARD_ID;
-@@ -2115,7 +2117,8 @@ static int ath10k_download_and_run_otp(s
-       /* As of now pre-cal is valid for 10_4 variants */
-       if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
--          ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE)
-+          ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE ||
-+          ar->cal_mode == ATH10K_PRE_CAL_MODE_NVMEM)
-               bmi_otp_exe_param = BMI_PARAM_FLASH_SECTION_ALL;
-       ret = ath10k_bmi_execute(ar, address, bmi_otp_exe_param, &result);
-@@ -2249,6 +2252,39 @@ struct ath10k_bss_rom_ie {
-       __le32 rom_len;
- } __packed;
-+static int ath10k_download_cal_nvmem(struct ath10k *ar, const char *cell_name)
-+{
-+      struct nvmem_cell *cell;
-+      void *buf;
-+      size_t len;
-+      int ret;
-+
-+      cell = devm_nvmem_cell_get(ar->dev, cell_name);
-+      if (IS_ERR(cell)) {
-+              ret = PTR_ERR(cell);
-+              return ret;
-+      }
-+
-+      buf = nvmem_cell_read(cell, &len);
-+      if (IS_ERR(buf))
-+              return PTR_ERR(buf);
-+
-+      if (ar->hw_params.cal_data_len != len) {
-+              kfree(buf);
-+              ath10k_warn(ar, "invalid calibration data length in nvmem-cell '%s': %zu != %u\n",
-+                          cell_name, len, ar->hw_params.cal_data_len);
-+              return -EMSGSIZE;
-+      }
-+
-+      ret = ath10k_download_board_data(ar, buf, len);
-+      kfree(buf);
-+      if (ret)
-+              ath10k_warn(ar, "failed to download calibration data from nvmem-cell '%s': %d\n",
-+                          cell_name, ret);
-+
-+      return ret;
-+}
-+
- int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name,
-                                    struct ath10k_fw_file *fw_file)
- {
-@@ -2625,6 +2661,18 @@ static int ath10k_core_pre_cal_download(
- {
-       int ret;
-+      ret = ath10k_download_cal_nvmem(ar, "pre-calibration");
-+      if (ret == 0) {
-+              ar->cal_mode = ATH10K_PRE_CAL_MODE_NVMEM;
-+              goto success;
-+      } else if (ret == -EPROBE_DEFER) {
-+              return ret;
-+      }
-+
-+      ath10k_dbg(ar, ATH10K_DBG_BOOT,
-+                 "boot did not find a pre-calibration nvmem-cell, try file next: %d\n",
-+                 ret);
-+
-       ret = ath10k_download_cal_file(ar, ar->pre_cal_file);
-       if (ret == 0) {
-               ar->cal_mode = ATH10K_PRE_CAL_MODE_FILE;
-@@ -2691,6 +2739,18 @@ static int ath10k_download_cal_data(stru
-                  "pre cal download procedure failed, try cal file: %d\n",
-                  ret);
-+      ret = ath10k_download_cal_nvmem(ar, "calibration");
-+      if (ret == 0) {
-+              ar->cal_mode = ATH10K_CAL_MODE_NVMEM;
-+              goto done;
-+      } else if (ret == -EPROBE_DEFER) {
-+              return ret;
-+      }
-+
-+      ath10k_dbg(ar, ATH10K_DBG_BOOT,
-+                 "boot did not find a calibration nvmem-cell, try file next: %d\n",
-+                 ret);
-+
-       ret = ath10k_download_cal_file(ar, ar->cal_file);
-       if (ret == 0) {
-               ar->cal_mode = ATH10K_CAL_MODE_FILE;
---- a/ath10k-5.15/core.h
-+++ b/ath10k-5.15/core.h
-@@ -1109,8 +1109,10 @@ enum ath10k_cal_mode {
-       ATH10K_CAL_MODE_FILE,
-       ATH10K_CAL_MODE_OTP,
-       ATH10K_CAL_MODE_DT,
-+      ATH10K_CAL_MODE_NVMEM,
-       ATH10K_PRE_CAL_MODE_FILE,
-       ATH10K_PRE_CAL_MODE_DT,
-+      ATH10K_PRE_CAL_MODE_NVMEM,
-       ATH10K_CAL_MODE_EEPROM,
- };
-@@ -1130,10 +1132,14 @@ static inline const char *ath10k_cal_mod
-               return "otp";
-       case ATH10K_CAL_MODE_DT:
-               return "dt";
-+      case ATH10K_CAL_MODE_NVMEM:
-+              return "nvmem";
-       case ATH10K_PRE_CAL_MODE_FILE:
-               return "pre-cal-file";
-       case ATH10K_PRE_CAL_MODE_DT:
-               return "pre-cal-dt";
-+      case ATH10K_PRE_CAL_MODE_NVMEM:
-+              return "pre-cal-nvmem";
-       case ATH10K_CAL_MODE_EEPROM:
-               return "eeprom";
-       }
index c835a33f492964f854e37afcbe5f5acd7637e0d8..77e2724991ea8775c1e527016bfaa5819ce917be 100644 (file)
@@ -39,9 +39,9 @@ that the feature is properly initialized:
 
 Signed-off-by: Vincent Tremblay <vincent@vtremblay.dev>
 
---- a/ath10k-5.15/core.c
-+++ b/ath10k-5.15/core.c
-@@ -2798,14 +2798,14 @@ done:
+--- a/ath10k-6.2/core.c
++++ b/ath10k-6.2/core.c
+@@ -2869,14 +2869,14 @@ done:
  static void ath10k_core_fetch_btcoex_dt(struct ath10k *ar)
  {
        struct device_node *node;
index 2cc7c1e678babb1d868edf716b3ea8e98fbdc9b9..844c089e888f564ee6f4a9aede8ad8fdf17c5ea3 100644 (file)
@@ -66,25 +66,25 @@ v13:
 
 * cleanup includes
 
- ath10k-5.15/Kconfig   |  10 +++
- ath10k-5.15/Makefile  |   1 +
- ath10k-5.15/core.c    |  22 +++++++
- ath10k-5.15/core.h    |   9 ++-
- ath10k-5.15/hw.h      |   1 +
- ath10k-5.15/leds.c    | 103 ++++++++++++++++++++++++++++++
- ath10k-5.15/leds.h    |  45 +++++++++++++
- ath10k-5.15/mac.c     |   1 +
- ath10k-5.15/wmi-ops.h |  32 ++++++++++
- ath10k-5.15/wmi-tlv.c |   2 +
- ath10k-5.15/wmi.c     |  54 ++++++++++++++++
- ath10k-5.15/wmi.h     |  35 ++++++++++
+ ath10k-6.2/Kconfig   |  10 +++
+ ath10k-6.2/Makefile  |   1 +
+ ath10k-6.2/core.c    |  22 +++++++
+ ath10k-6.2/core.h    |   9 ++-
+ ath10k-6.2/hw.h      |   1 +
+ ath10k-6.2/leds.c    | 103 ++++++++++++++++++++++++++++++
+ ath10k-6.2/leds.h    |  45 +++++++++++++
+ ath10k-6.2/mac.c     |   1 +
+ ath10k-6.2/wmi-ops.h |  32 ++++++++++
+ ath10k-6.2/wmi-tlv.c |   2 +
+ ath10k-6.2/wmi.c     |  54 ++++++++++++++++
+ ath10k-6.2/wmi.h     |  35 ++++++++++
  12 files changed, 314 insertions(+), 1 deletion(-)
- create mode 100644 ath10k-5.15/leds.c
- create mode 100644 ath10k-5.15/leds.h
+ create mode 100644 ath10k-6.2/leds.c
+ create mode 100644 ath10k-6.2/leds.h
 
---- a/ath10k-5.15/Kconfig
-+++ b/ath10k-5.15/Kconfig
-@@ -66,6 +66,16 @@ config ATH10K_DEBUGFS
+--- a/ath10k-6.2/Kconfig
++++ b/ath10k-6.2/Kconfig
+@@ -67,6 +67,16 @@ config ATH10K_DEBUGFS
  
          If unsure, say Y to make it easier to debug problems.
  
@@ -101,8 +101,8 @@ v13:
  config ATH10K_SPECTRAL
        bool "Atheros ath10k spectral scan support"
        depends on ATH10K_DEBUGFS
---- a/ath10k-5.15/Makefile
-+++ b/ath10k-5.15/Makefile
+--- a/ath10k-6.2/Makefile
++++ b/ath10k-6.2/Makefile
 @@ -20,6 +20,7 @@ ath10k_core-$(CONFIG_ATH10K_SPECTRAL) +=
  ath10k_core-$(CONFIG_NL80211_TESTMODE) += testmode.o
  ath10k_core-$(CONFIG_ATH10K_TRACING) += trace.o
@@ -111,8 +111,8 @@ v13:
  ath10k_core-$(CONFIG_MAC80211_DEBUGFS) += debugfs_sta.o
  ath10k_core-$(CONFIG_PM) += wow.o
  ath10k_core-$(CONFIG_ATH10K_CE) += ce.o
---- a/ath10k-5.15/core.c
-+++ b/ath10k-5.15/core.c
+--- a/ath10k-6.2/core.c
++++ b/ath10k-6.2/core.c
 @@ -28,6 +28,7 @@
  #include "testmode.h"
  #include "wmi-ops.h"
@@ -121,7 +121,7 @@ v13:
  
  /* Disable ath10k-ct DBGLOG output by default */
  unsigned int ath10k_debug_mask = ATH10K_DBG_NO_DBGLOG;
-@@ -70,6 +71,7 @@ static const struct ath10k_hw_params ath
+@@ -78,6 +79,7 @@ static const struct ath10k_hw_params ath
                .dev_id = QCA988X_2_0_DEVICE_ID,
                .bus = ATH10K_BUS_PCI,
                .name = "qca988x hw2.0",
@@ -129,7 +129,7 @@ v13:
                .patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR,
                .uart_pin = 7,
                .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
-@@ -143,6 +145,7 @@ static const struct ath10k_hw_params ath
+@@ -159,6 +161,7 @@ static const struct ath10k_hw_params ath
                .dev_id = QCA9887_1_0_DEVICE_ID,
                .bus = ATH10K_BUS_PCI,
                .name = "qca9887 hw1.0",
@@ -137,7 +137,7 @@ v13:
                .patch_load_addr = QCA9887_HW_1_0_PATCH_LOAD_ADDR,
                .uart_pin = 7,
                .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
-@@ -360,6 +363,7 @@ static const struct ath10k_hw_params ath
+@@ -400,6 +403,7 @@ static const struct ath10k_hw_params ath
                .dev_id = QCA99X0_2_0_DEVICE_ID,
                .bus = ATH10K_BUS_PCI,
                .name = "qca99x0 hw2.0",
@@ -145,7 +145,7 @@ v13:
                .patch_load_addr = QCA99X0_HW_2_0_PATCH_LOAD_ADDR,
                .uart_pin = 7,
                .otp_exe_param = 0x00000700,
-@@ -402,6 +406,7 @@ static const struct ath10k_hw_params ath
+@@ -446,6 +450,7 @@ static const struct ath10k_hw_params ath
                .dev_id = QCA9984_1_0_DEVICE_ID,
                .bus = ATH10K_BUS_PCI,
                .name = "qca9984/qca9994 hw1.0",
@@ -153,7 +153,7 @@ v13:
                .patch_load_addr = QCA9984_HW_1_0_PATCH_LOAD_ADDR,
                .uart_pin = 7,
                .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
-@@ -451,6 +456,7 @@ static const struct ath10k_hw_params ath
+@@ -499,6 +504,7 @@ static const struct ath10k_hw_params ath
                .dev_id = QCA9888_2_0_DEVICE_ID,
                .bus = ATH10K_BUS_PCI,
                .name = "qca9888 hw2.0",
@@ -161,7 +161,7 @@ v13:
                .patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
                .uart_pin = 7,
                .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
-@@ -3977,6 +3983,10 @@ int ath10k_core_start(struct ath10k *ar,
+@@ -4080,6 +4086,10 @@ int ath10k_core_start(struct ath10k *ar,
                        ath10k_wmi_check_apply_board_power_ctl_table(ar);
        }
  
@@ -172,7 +172,7 @@ v13:
        return 0;
  
  err_hif_stop:
-@@ -4238,9 +4248,18 @@ static void ath10k_core_register_work(st
+@@ -4341,9 +4351,18 @@ static void ath10k_core_register_work(st
                goto err_spectral_destroy;
        }
  
@@ -191,7 +191,7 @@ v13:
  err_spectral_destroy:
        ath10k_spectral_destroy(ar);
  err_debug_destroy:
-@@ -4300,6 +4319,8 @@ void ath10k_core_unregister(struct ath10
+@@ -4403,6 +4422,8 @@ void ath10k_core_unregister(struct ath10
        if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
                return;
  
@@ -200,8 +200,8 @@ v13:
        ath10k_thermal_unregister(ar);
        /* Stop spectral before unregistering from mac80211 to remove the
         * relayfs debugfs file cleanly. Otherwise the parent debugfs tree
---- a/ath10k-5.15/core.h
-+++ b/ath10k-5.15/core.h
+--- a/ath10k-6.2/core.h
++++ b/ath10k-6.2/core.h
 @@ -14,6 +14,7 @@
  #include <linux/pci.h>
  #include <linux/uuid.h>
@@ -210,7 +210,7 @@ v13:
  
  #include "htt.h"
  #include "htc.h"
-@@ -1577,6 +1578,13 @@ struct ath10k {
+@@ -1586,6 +1587,13 @@ struct ath10k {
        } testmode;
  
        struct {
@@ -224,9 +224,9 @@ v13:
                /* protected by data_lock */
                u32 rx_crc_err_drop;
                u32 fw_crash_counter;
---- a/ath10k-5.15/hw.h
-+++ b/ath10k-5.15/hw.h
-@@ -521,6 +521,7 @@ struct ath10k_hw_params {
+--- a/ath10k-6.2/hw.h
++++ b/ath10k-6.2/hw.h
+@@ -523,6 +523,7 @@ struct ath10k_hw_params {
        const char *name;
        u32 patch_load_addr;
        int uart_pin;
@@ -235,7 +235,7 @@ v13:
  
        /* Type of hw cycle counter wraparound logic, for more info
 --- /dev/null
-+++ b/ath10k-5.15/leds.c
++++ b/ath10k-6.2/leds.c
 @@ -0,0 +1,103 @@
 +/*
 + * Copyright (c) 2005-2011 Atheros Communications Inc.
@@ -341,7 +341,7 @@ v13:
 +}
 +
 --- /dev/null
-+++ b/ath10k-5.15/leds.h
++++ b/ath10k-6.2/leds.h
 @@ -0,0 +1,41 @@
 +/*
 + * Copyright (c) 2018, The Linux Foundation. All rights reserved.
@@ -384,8 +384,8 @@ v13:
 +
 +#endif
 +#endif /* _LEDS_H_ */
---- a/ath10k-5.15/mac.c
-+++ b/ath10k-5.15/mac.c
+--- a/ath10k-6.2/mac.c
++++ b/ath10k-6.2/mac.c
 @@ -25,6 +25,7 @@
  #include "wmi-tlv.h"
  #include "wmi-ops.h"
@@ -394,8 +394,8 @@ v13:
  
  /*********/
  /* Rates */
---- a/ath10k-5.15/wmi-ops.h
-+++ b/ath10k-5.15/wmi-ops.h
+--- a/ath10k-6.2/wmi-ops.h
++++ b/ath10k-6.2/wmi-ops.h
 @@ -228,7 +228,10 @@ struct wmi_ops {
                         const struct wmi_bb_timing_cfg_arg *arg);
        struct sk_buff *(*gen_per_peer_per_tid_cfg)(struct ath10k *ar,
@@ -443,9 +443,9 @@ v13:
  static inline int
  ath10k_wmi_dbglog_cfg(struct ath10k *ar, u64 module_enable, u32 log_level)
  {
---- a/ath10k-5.15/wmi-tlv.c
-+++ b/ath10k-5.15/wmi-tlv.c
-@@ -4594,6 +4594,8 @@ static const struct wmi_ops wmi_tlv_ops
+--- a/ath10k-6.2/wmi-tlv.c
++++ b/ath10k-6.2/wmi-tlv.c
+@@ -4601,6 +4601,8 @@ static const struct wmi_ops wmi_tlv_ops
        .gen_echo = ath10k_wmi_tlv_op_gen_echo,
        .gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
        .gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
@@ -454,9 +454,9 @@ v13:
  };
  
  static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
---- a/ath10k-5.15/wmi.c
-+++ b/ath10k-5.15/wmi.c
-@@ -8413,6 +8413,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
+--- a/ath10k-6.2/wmi.c
++++ b/ath10k-6.2/wmi.c
+@@ -8438,6 +8438,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
        return skb;
  }
  
@@ -506,7 +506,7 @@ v13:
  static struct sk_buff *
  ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
                             enum wmi_sta_ps_mode psmode)
-@@ -10244,6 +10287,9 @@ static const struct wmi_ops wmi_ops = {
+@@ -10269,6 +10312,9 @@ static const struct wmi_ops wmi_ops = {
        .fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
        .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
        .gen_echo = ath10k_wmi_op_gen_echo,
@@ -516,7 +516,7 @@ v13:
        /* .gen_bcn_tmpl not implemented */
        /* .gen_prb_tmpl not implemented */
        /* .gen_p2p_go_bcn_ie not implemented */
-@@ -10314,6 +10360,8 @@ static const struct wmi_ops wmi_10_1_ops
+@@ -10339,6 +10385,8 @@ static const struct wmi_ops wmi_10_1_ops
        .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
        .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
        .gen_echo = ath10k_wmi_op_gen_echo,
@@ -525,7 +525,7 @@ v13:
        /* .gen_bcn_tmpl not implemented */
        /* .gen_prb_tmpl not implemented */
        /* .gen_p2p_go_bcn_ie not implemented */
-@@ -10393,6 +10441,8 @@ static const struct wmi_ops wmi_10_2_ops
+@@ -10418,6 +10466,8 @@ static const struct wmi_ops wmi_10_2_ops
        .gen_delba_send = ath10k_wmi_op_gen_delba_send,
        .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
        .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
@@ -534,7 +534,7 @@ v13:
        /* .gen_pdev_enable_adaptive_cca not implemented */
  };
  
-@@ -10464,6 +10514,8 @@ static const struct wmi_ops wmi_10_2_4_o
+@@ -10489,6 +10539,8 @@ static const struct wmi_ops wmi_10_2_4_o
                ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
        .get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
        .gen_bb_timing = ath10k_wmi_10_2_4_op_gen_bb_timing,
@@ -543,7 +543,7 @@ v13:
        /* .gen_bcn_tmpl not implemented */
        /* .gen_prb_tmpl not implemented */
        /* .gen_p2p_go_bcn_ie not implemented */
-@@ -10546,6 +10598,8 @@ static const struct wmi_ops wmi_10_4_ops
+@@ -10571,6 +10623,8 @@ static const struct wmi_ops wmi_10_4_ops
        .gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
        .gen_echo = ath10k_wmi_op_gen_echo,
        .gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
@@ -552,8 +552,8 @@ v13:
  };
  
  int ath10k_wmi_attach(struct ath10k *ar)
---- a/ath10k-5.15/wmi.h
-+++ b/ath10k-5.15/wmi.h
+--- a/ath10k-6.2/wmi.h
++++ b/ath10k-6.2/wmi.h
 @@ -3133,6 +3133,41 @@ enum wmi_10_4_feature_mask {
  
  };
index 18c7930203c98fd6906f7fd347ed27e2a36da833..8ac2776f9229fa364a37eba9fcee20b455f0e759 100644 (file)
@@ -9,14 +9,14 @@ traffic.
 
 Signed-off-by: Mathias Kresin <dev@kresin.me>
 ---
- ath10k-5.15/core.h | 4 ++++
- ath10k-5.15/leds.c | 4 +---
- ath10k-5.15/mac.c  | 2 +-
+ ath10k-6.2/core.h | 4 ++++
+ ath10k-6.2/leds.c | 4 +---
+ ath10k-6.2/mac.c  | 2 +-
  3 files changed, 6 insertions(+), 4 deletions(-)
 
---- a/ath10k-5.15/core.h
-+++ b/ath10k-5.15/core.h
-@@ -1692,6 +1692,10 @@ struct ath10k {
+--- a/ath10k-6.2/core.h
++++ b/ath10k-6.2/core.h
+@@ -1701,6 +1701,10 @@ struct ath10k {
        u8 csi_data[4096];
        u16 csi_data_len;
  
@@ -27,8 +27,8 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
        /* must be last */
        u8 drv_priv[] __aligned(sizeof(void *));
  };
---- a/ath10k-5.15/leds.c
-+++ b/ath10k-5.15/leds.c
+--- a/ath10k-6.2/leds.c
++++ b/ath10k-6.2/leds.c
 @@ -81,9 +81,7 @@ int ath10k_leds_register(struct ath10k *
  
        ar->leds.cdev.name = ar->leds.label;
@@ -40,9 +40,9 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
  
        ret = led_classdev_register(wiphy_dev(ar->hw->wiphy), &ar->leds.cdev);
        if (ret)
---- a/ath10k-5.15/mac.c
-+++ b/ath10k-5.15/mac.c
-@@ -11551,7 +11551,7 @@ int ath10k_mac_register(struct ath10k *a
+--- a/ath10k-6.2/mac.c
++++ b/ath10k-6.2/mac.c
+@@ -11617,7 +11617,7 @@ int ath10k_mac_register(struct ath10k *a
        ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
  
  #ifdef CPTCFG_MAC80211_LEDS
diff --git a/package/kernel/ath10k-ct/patches/203-ath10k-ct-fix-compilation-warning-for-debug-level.patch b/package/kernel/ath10k-ct/patches/203-ath10k-ct-fix-compilation-warning-for-debug-level.patch
deleted file mode 100644 (file)
index 6c85492..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-From 3b07c3a6e4adebd0466f5e539f318224db8cfc37 Mon Sep 17 00:00:00 2001
-From: Christian Marangi <ansuelsmth@gmail.com>
-Date: Sat, 6 May 2023 15:29:52 +0200
-Subject: [PATCH] ath10k-ct: fix compilation warning for debug level
-
-Rework read_debug_level function as it does exceed the stack limit for
-some arch.
-Fix compilation error:
-/__w/openwrt/openwrt/openwrt/build_dir/target-mips-openwrt-linux-musl_musl/linux-malta_be/ath10k-ct-regular/ath10k-ct-2022-05-13-f808496f/ath10k-5.15/debug.c: In function 'ath10k_read_debug_level':
-/__w/openwrt/openwrt/openwrt/build_dir/target-mips-openwrt-linux-musl_musl/linux-malta_be/ath10k-ct-regular/ath10k-ct-2022-05-13-f808496f/ath10k-5.15/debug.c:1388:1: error: the frame size of 1440 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]
- 1388 | }
-      | ^
-
-Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
----
- ath10k-5.15/debug.c | 85 +++++++++++++++++++++++++--------------------
- ath10k-5.17/debug.c | 85 +++++++++++++++++++++++++--------------------
- 2 files changed, 96 insertions(+), 74 deletions(-)
-
-diff --git a/ath10k-5.15/debug.c b/ath10k-5.15/debug.c
-index af84012..d0fa911 100644
---- a/ath10k-5.15/debug.c
-+++ b/ath10k-5.15/debug.c
-@@ -1344,47 +1344,58 @@ static const struct file_operations fops_simulate_fw_crash = {
-       .llseek = default_llseek,
- };
-+static const char debug_level_buf[] =
-+      "To change debug level, set value adding up desired flags:\n"
-+      "PCI:                0x1\n"
-+      "WMI:                0x2\n"
-+      "HTC:                0x4\n"
-+      "HTT:                0x8\n"
-+      "MAC:               0x10\n"
-+      "BOOT:              0x20\n"
-+      "PCI-DUMP:          0x40\n"
-+      "HTT-DUMP:          0x80\n"
-+      "MGMT:             0x100\n"
-+      "DATA:             0x200\n"
-+      "BMI:              0x400\n"
-+      "REGULATORY:       0x800\n"
-+      "TESTMODE:        0x1000\n"
-+      "WMI-PRINT:       0x2000\n"
-+      "PCI-PS:          0x4000\n"
-+      "AHB:             0x8000\n"
-+      "SDIO:           0x10000\n"
-+      "SDIO_DUMP:      0x20000\n"
-+      "USB:            0x40000\n"
-+      "USB_BULK:       0x80000\n"
-+      "SNOC:          0x100000\n"
-+      "QMI:           0x200000\n"
-+      "BEACONS:      0x8000000\n"
-+      "NO-FW-DBGLOG:0x10000000\n"
-+      "MAC2:        0x20000000\n"
-+      "INFO-AS-DBG: 0x40000000\n"
-+      "FW:          0x80000000\n"
-+      "ALL:         0xEFFFFFFF\n";
-+
-+#define READ_DEBUG_LEVEL_SIZE sizeof(debug_level_buf) + 60
-+
- static ssize_t ath10k_read_debug_level(struct file *file,
-                                      char __user *user_buf,
-                                      size_t count, loff_t *ppos)
- {
--      int sz;
--      const char buf[] =
--              "To change debug level, set value adding up desired flags:\n"
--              "PCI:                0x1\n"
--              "WMI:                0x2\n"
--              "HTC:                0x4\n"
--              "HTT:                0x8\n"
--              "MAC:               0x10\n"
--              "BOOT:              0x20\n"
--              "PCI-DUMP:          0x40\n"
--              "HTT-DUMP:          0x80\n"
--              "MGMT:             0x100\n"
--              "DATA:             0x200\n"
--              "BMI:              0x400\n"
--              "REGULATORY:       0x800\n"
--              "TESTMODE:        0x1000\n"
--              "WMI-PRINT:       0x2000\n"
--              "PCI-PS:          0x4000\n"
--              "AHB:             0x8000\n"
--              "SDIO:           0x10000\n"
--              "SDIO_DUMP:      0x20000\n"
--              "USB:            0x40000\n"
--              "USB_BULK:       0x80000\n"
--              "SNOC:          0x100000\n"
--              "QMI:           0x200000\n"
--              "BEACONS:      0x8000000\n"
--              "NO-FW-DBGLOG:0x10000000\n"
--              "MAC2:        0x20000000\n"
--              "INFO-AS-DBG: 0x40000000\n"
--              "FW:          0x80000000\n"
--              "ALL:         0xEFFFFFFF\n";
--      char wbuf[sizeof(buf) + 60];
--      sz = snprintf(wbuf, sizeof(wbuf), "Current debug level: 0x%x\n\n%s",
--                    ath10k_debug_mask, buf);
--      wbuf[sizeof(wbuf) - 1] = 0;
--
--      return simple_read_from_buffer(user_buf, count, ppos, wbuf, sz);
-+      int sz, ret;
-+      char *wbuf;
-+
-+      wbuf = kcalloc(READ_DEBUG_LEVEL_SIZE, sizeof(char), GFP_KERNEL);
-+      if (!wbuf)
-+              return -ENOMEM;
-+
-+      sz = snprintf(wbuf, READ_DEBUG_LEVEL_SIZE,
-+                    "Current debug level: 0x%x\n\n%s",
-+                    ath10k_debug_mask, debug_level_buf);
-+
-+      ret = simple_read_from_buffer(user_buf, count, ppos, wbuf, sz);
-+      kfree(wbuf);
-+
-+      return ret;
- }
- /* Set logging level.
-diff --git a/ath10k-5.17/debug.c b/ath10k-5.17/debug.c
-index af84012..d0fa911 100644
---- a/ath10k-5.17/debug.c
-+++ b/ath10k-5.17/debug.c
-@@ -1344,47 +1344,58 @@ static const struct file_operations fops_simulate_fw_crash = {
-       .llseek = default_llseek,
- };
-+static const char debug_level_buf[] =
-+      "To change debug level, set value adding up desired flags:\n"
-+      "PCI:                0x1\n"
-+      "WMI:                0x2\n"
-+      "HTC:                0x4\n"
-+      "HTT:                0x8\n"
-+      "MAC:               0x10\n"
-+      "BOOT:              0x20\n"
-+      "PCI-DUMP:          0x40\n"
-+      "HTT-DUMP:          0x80\n"
-+      "MGMT:             0x100\n"
-+      "DATA:             0x200\n"
-+      "BMI:              0x400\n"
-+      "REGULATORY:       0x800\n"
-+      "TESTMODE:        0x1000\n"
-+      "WMI-PRINT:       0x2000\n"
-+      "PCI-PS:          0x4000\n"
-+      "AHB:             0x8000\n"
-+      "SDIO:           0x10000\n"
-+      "SDIO_DUMP:      0x20000\n"
-+      "USB:            0x40000\n"
-+      "USB_BULK:       0x80000\n"
-+      "SNOC:          0x100000\n"
-+      "QMI:           0x200000\n"
-+      "BEACONS:      0x8000000\n"
-+      "NO-FW-DBGLOG:0x10000000\n"
-+      "MAC2:        0x20000000\n"
-+      "INFO-AS-DBG: 0x40000000\n"
-+      "FW:          0x80000000\n"
-+      "ALL:         0xEFFFFFFF\n";
-+
-+#define READ_DEBUG_LEVEL_SIZE sizeof(debug_level_buf) + 60
-+
- static ssize_t ath10k_read_debug_level(struct file *file,
-                                      char __user *user_buf,
-                                      size_t count, loff_t *ppos)
- {
--      int sz;
--      const char buf[] =
--              "To change debug level, set value adding up desired flags:\n"
--              "PCI:                0x1\n"
--              "WMI:                0x2\n"
--              "HTC:                0x4\n"
--              "HTT:                0x8\n"
--              "MAC:               0x10\n"
--              "BOOT:              0x20\n"
--              "PCI-DUMP:          0x40\n"
--              "HTT-DUMP:          0x80\n"
--              "MGMT:             0x100\n"
--              "DATA:             0x200\n"
--              "BMI:              0x400\n"
--              "REGULATORY:       0x800\n"
--              "TESTMODE:        0x1000\n"
--              "WMI-PRINT:       0x2000\n"
--              "PCI-PS:          0x4000\n"
--              "AHB:             0x8000\n"
--              "SDIO:           0x10000\n"
--              "SDIO_DUMP:      0x20000\n"
--              "USB:            0x40000\n"
--              "USB_BULK:       0x80000\n"
--              "SNOC:          0x100000\n"
--              "QMI:           0x200000\n"
--              "BEACONS:      0x8000000\n"
--              "NO-FW-DBGLOG:0x10000000\n"
--              "MAC2:        0x20000000\n"
--              "INFO-AS-DBG: 0x40000000\n"
--              "FW:          0x80000000\n"
--              "ALL:         0xEFFFFFFF\n";
--      char wbuf[sizeof(buf) + 60];
--      sz = snprintf(wbuf, sizeof(wbuf), "Current debug level: 0x%x\n\n%s",
--                    ath10k_debug_mask, buf);
--      wbuf[sizeof(wbuf) - 1] = 0;
--
--      return simple_read_from_buffer(user_buf, count, ppos, wbuf, sz);
-+      int sz, ret;
-+      char *wbuf;
-+
-+      wbuf = kcalloc(READ_DEBUG_LEVEL_SIZE, sizeof(char), GFP_KERNEL);
-+      if (!wbuf)
-+              return -ENOMEM;
-+
-+      sz = snprintf(wbuf, READ_DEBUG_LEVEL_SIZE,
-+                    "Current debug level: 0x%x\n\n%s",
-+                    ath10k_debug_mask, debug_level_buf);
-+
-+      ret = simple_read_from_buffer(user_buf, count, ppos, wbuf, sz);
-+      kfree(wbuf);
-+
-+      return ret;
- }
- /* Set logging level.
--- 
-2.39.2
-
index a3822a7e49f2bd2dfd7f8b9b7eb442730776461d..6a14a75a327a2759d357ab09eded5db0aa428a3f 100644 (file)
@@ -13,11 +13,11 @@ callback struct, otherwise use the regular struct.
 Fixes: 553a3ac ("ath10k-ct: use 5.15 version")
 Signed-off-by: Robert Marko <robimarko@gmail.com>
 ---
- ath10k-5.15/spectral.c | 4 ++++
+ ath10k-6.2/spectral.c | 4 ++++
  1 file changed, 4 insertions(+)
 
---- a/ath10k-5.15/spectral.c
-+++ b/ath10k-5.15/spectral.c
+--- a/ath10k-6.2/spectral.c
++++ b/ath10k-6.2/spectral.c
 @@ -497,7 +497,11 @@ static int remove_buf_file_handler(struc
        return 0;
  }
index d50611b97060689445d88107f90b60101f435306..1471902be3bb519bc48afd5cd63d1d90f3e7a152 100644 (file)
@@ -1,5 +1,5 @@
---- a/ath10k-5.15/htt.h
-+++ b/ath10k-5.15/htt.h
+--- a/ath10k-6.2/htt.h
++++ b/ath10k-6.2/htt.h
 @@ -237,7 +237,11 @@ enum htt_rx_ring_flags {
  };
  
index b8c6c35326685a30a0350a7cd27083fec7811cbc..145b2e7c3586dbad2253f65ca633641972c5101f 100644 (file)
@@ -1,5 +1,5 @@
---- a/ath10k-5.15/pci.c
-+++ b/ath10k-5.15/pci.c
+--- a/ath10k-6.2/pci.c
++++ b/ath10k-6.2/pci.c
 @@ -131,7 +131,11 @@ static const struct ce_attr pci_host_ce_
                .flags = CE_ATTR_FLAGS,
                .src_nentries = 0,