[rdkb][common][bsp][Refactor and sync wifi from openwrt]
[Description]
3a2eef0b [MAC80211][Release][Update release note for Filogic 880/860 MLO Beta release]
cfbd2411 [MAC80211][Release][Filogic 880/860 MLO Beta release]
6c180e3f [MAC80211][WiFi7][misc][Add Eagle BE14000 efem default bin]
a55f34db [MAC80211][Release][Prepare for Filogic 880/860 release]
5b45ebca [MAC80211][WiFi7][hostapd][Add puncture bitmap to ucode]
95bbea73 [MAC80211][WiFi6][mt76][Add PID to only report data-frame TX rate]
b15ced26 [MAC80211][WiFi6][hostapd][Fix DFS channel selection issue]
d59133cb [MAC80211][WiFi6][mt76][Fix pse info not correct information]
3921b4b2 [MAC80211][WiFi6][mt76][Fix incomplete QoS-map setting to FW]
4e7690c7 [MAC80211][WiFi6/7][app][Change ATECHANNEL mapping cmd]
eb37af90 [MAC80211][WiFi7][app][Add support for per-packet bw & primary selection]
0ea82adf [MAC80211][WiFi6][core][Fix DFS CAC issue after CSA]
[Release-log]
Change-Id: I9bec97ec1b2e1c49ed43a812a07a5b21fcbb70a6
diff --git a/recipes-wifi/linux-mac80211/files/patches-6.x/subsys/0078-mtk-mac80211-add-per-radio-antenna-config.patch b/recipes-wifi/linux-mac80211/files/patches-6.x/subsys/0078-mtk-mac80211-add-per-radio-antenna-config.patch
new file mode 100644
index 0000000..44043ac
--- /dev/null
+++ b/recipes-wifi/linux-mac80211/files/patches-6.x/subsys/0078-mtk-mac80211-add-per-radio-antenna-config.patch
@@ -0,0 +1,463 @@
+From a218fd8e2e8a2d390d995e62ba9e351c6cee30fb Mon Sep 17 00:00:00 2001
+From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
+Date: Tue, 11 Jun 2024 16:10:12 +0800
+Subject: [PATCH 78/89] mtk: mac80211: add per-radio antenna config
+
+Add per-radio antenna config
+
+Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
+---
+ include/net/cfg80211.h | 9 ++--
+ include/net/mac80211.h | 4 +-
+ net/mac80211/cfg.c | 19 +++++---
+ net/mac80211/driver-ops.h | 12 ++---
+ net/mac80211/trace.h | 22 +++++----
+ net/wireless/nl80211.c | 97 +++++++++++++++++++++++++--------------
+ net/wireless/rdev-ops.h | 12 ++---
+ net/wireless/trace.h | 24 ++++++----
+ 8 files changed, 122 insertions(+), 77 deletions(-)
+
+diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
+index 110e555..835735f 100644
+--- a/include/net/cfg80211.h
++++ b/include/net/cfg80211.h
+@@ -4881,8 +4881,8 @@ struct cfg80211_ops {
+ struct wireless_dev *wdev,
+ struct mgmt_frame_regs *upd);
+
+- int (*set_antenna)(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant);
+- int (*get_antenna)(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant);
++ int (*set_antenna)(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant, int band);
++ int (*get_antenna)(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant, int band);
+
+ int (*sched_scan_start)(struct wiphy *wiphy,
+ struct net_device *dev,
+@@ -5831,8 +5831,9 @@ struct wiphy {
+
+ u8 max_num_pmkids;
+
+- u32 available_antennas_tx;
+- u32 available_antennas_rx;
++ /* FIXME: This should move to per-radio data struct */
++ u32 available_antennas_tx[NUM_NL80211_BANDS];
++ u32 available_antennas_rx[NUM_NL80211_BANDS];
+
+ u32 probe_resp_offload;
+
+diff --git a/include/net/mac80211.h b/include/net/mac80211.h
+index 08c15a7..9471892 100644
+--- a/include/net/mac80211.h
++++ b/include/net/mac80211.h
+@@ -4650,8 +4650,8 @@ struct ieee80211_ops {
+ void (*channel_switch)(struct ieee80211_hw *hw,
+ struct ieee80211_vif *vif,
+ struct ieee80211_channel_switch *ch_switch);
+- int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
+- int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant);
++ int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant, int band);
++ int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant, int band);
+
+ int (*remain_on_channel)(struct ieee80211_hw *hw,
+ struct ieee80211_vif *vif,
+diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
+index 51a9b21..69c3e81 100644
+--- a/net/mac80211/cfg.c
++++ b/net/mac80211/cfg.c
+@@ -4255,15 +4255,22 @@ ieee80211_update_mgmt_frame_registrations(struct wiphy *wiphy,
+ ieee80211_configure_filter(local);
+ }
+
+-static int ieee80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant)
++static int ieee80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant, int band)
+ {
+ struct ieee80211_local *local = wiphy_priv(wiphy);
+ int ret;
+
+- if (local->started)
+- return -EOPNOTSUPP;
++ /* FIXME:
++ * This flag should be moved to per-radio data struct; otherwise,
++ * radio 1 or 2 will be blocked when radio 0 is started.
++ * Temporarily disable this check until we have a better solution.
++ * if (local->started)
++ * return -EOPNOTSUPP;
++ */
++ wiphy_info(wiphy,
++ "Temporarily disable local->started check during setting antenna\n");
+
+- ret = drv_set_antenna(local, tx_ant, rx_ant);
++ ret = drv_set_antenna(local, tx_ant, rx_ant, band);
+ if (ret)
+ return ret;
+
+@@ -4271,11 +4278,11 @@ static int ieee80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant)
+ return 0;
+ }
+
+-static int ieee80211_get_antenna(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant)
++static int ieee80211_get_antenna(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant, int band)
+ {
+ struct ieee80211_local *local = wiphy_priv(wiphy);
+
+- return drv_get_antenna(local, tx_ant, rx_ant);
++ return drv_get_antenna(local, tx_ant, rx_ant, band);
+ }
+
+ static int ieee80211_set_rekey_data(struct wiphy *wiphy,
+diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
+index 4c0ac85..3bf8768 100644
+--- a/net/mac80211/driver-ops.h
++++ b/net/mac80211/driver-ops.h
+@@ -762,26 +762,26 @@ static inline void drv_channel_switch(struct ieee80211_local *local,
+
+
+ static inline int drv_set_antenna(struct ieee80211_local *local,
+- u32 tx_ant, u32 rx_ant)
++ u32 tx_ant, u32 rx_ant, int band)
+ {
+ int ret = -EOPNOTSUPP;
+ might_sleep();
+ lockdep_assert_wiphy(local->hw.wiphy);
+ if (local->ops->set_antenna)
+- ret = local->ops->set_antenna(&local->hw, tx_ant, rx_ant);
+- trace_drv_set_antenna(local, tx_ant, rx_ant, ret);
++ ret = local->ops->set_antenna(&local->hw, tx_ant, rx_ant, band);
++ trace_drv_set_antenna(local, tx_ant, rx_ant, band, ret);
+ return ret;
+ }
+
+ static inline int drv_get_antenna(struct ieee80211_local *local,
+- u32 *tx_ant, u32 *rx_ant)
++ u32 *tx_ant, u32 *rx_ant, int band)
+ {
+ int ret = -EOPNOTSUPP;
+ might_sleep();
+ lockdep_assert_wiphy(local->hw.wiphy);
+ if (local->ops->get_antenna)
+- ret = local->ops->get_antenna(&local->hw, tx_ant, rx_ant);
+- trace_drv_get_antenna(local, *tx_ant, *rx_ant, ret);
++ ret = local->ops->get_antenna(&local->hw, tx_ant, rx_ant, band);
++ trace_drv_get_antenna(local, *tx_ant, *rx_ant, band, ret);
+ return ret;
+ }
+
+diff --git a/net/mac80211/trace.h b/net/mac80211/trace.h
+index 48fcc8f..84b5c35 100644
+--- a/net/mac80211/trace.h
++++ b/net/mac80211/trace.h
+@@ -1263,14 +1263,16 @@ DEFINE_EVENT(chanswitch_evt, drv_channel_switch,
+ );
+
+ TRACE_EVENT(drv_set_antenna,
+- TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
++ TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant,
++ int band, int ret),
+
+- TP_ARGS(local, tx_ant, rx_ant, ret),
++ TP_ARGS(local, tx_ant, rx_ant, band, ret),
+
+ TP_STRUCT__entry(
+ LOCAL_ENTRY
+ __field(u32, tx_ant)
+ __field(u32, rx_ant)
++ __field(int, band)
+ __field(int, ret)
+ ),
+
+@@ -1278,24 +1280,27 @@ TRACE_EVENT(drv_set_antenna,
+ LOCAL_ASSIGN;
+ __entry->tx_ant = tx_ant;
+ __entry->rx_ant = rx_ant;
++ __entry->band = band;
+ __entry->ret = ret;
+ ),
+
+ TP_printk(
+- LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
+- LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
++ LOCAL_PR_FMT " tx_ant:%d rx_ant:%d band:%d ret:%d",
++ LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant,
++ __entry->band, __entry->ret
+ )
+ );
+
+ TRACE_EVENT(drv_get_antenna,
+- TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),
++ TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int band, int ret),
+
+- TP_ARGS(local, tx_ant, rx_ant, ret),
++ TP_ARGS(local, tx_ant, rx_ant, band, ret),
+
+ TP_STRUCT__entry(
+ LOCAL_ENTRY
+ __field(u32, tx_ant)
+ __field(u32, rx_ant)
++ __field(int, band)
+ __field(int, ret)
+ ),
+
+@@ -1303,12 +1308,13 @@ TRACE_EVENT(drv_get_antenna,
+ LOCAL_ASSIGN;
+ __entry->tx_ant = tx_ant;
+ __entry->rx_ant = rx_ant;
++ __entry->rx_ant = band;
+ __entry->ret = ret;
+ ),
+
+ TP_printk(
+- LOCAL_PR_FMT " tx_ant:%d rx_ant:%d ret:%d",
+- LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->ret
++ LOCAL_PR_FMT " tx_ant:%d rx_ant:%d band:%d ret:%d",
++ LOCAL_PR_ARG, __entry->tx_ant, __entry->rx_ant, __entry->band, __entry->ret
+ )
+ );
+
+diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
+index e62116e..c38a5d0 100644
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -618,8 +618,6 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
+ [NL80211_ATTR_WIPHY_TX_POWER_SETTING] = { .type = NLA_U32 },
+ [NL80211_ATTR_WIPHY_TX_POWER_LEVEL] = { .type = NLA_U32 },
+ [NL80211_ATTR_FRAME_TYPE] = { .type = NLA_U16 },
+- [NL80211_ATTR_WIPHY_ANTENNA_TX] = { .type = NLA_U32 },
+- [NL80211_ATTR_WIPHY_ANTENNA_RX] = { .type = NLA_U32 },
+ [NL80211_ATTR_MCAST_RATE] = { .type = NLA_U32 },
+ [NL80211_ATTR_OFFCHANNEL_TX_OK] = { .type = NLA_FLAG },
+ [NL80211_ATTR_KEY_DEFAULT_TYPES] = { .type = NLA_NESTED },
+@@ -2626,10 +2624,12 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
+ nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_ETHERTYPE))
+ goto nla_put_failure;
+
+- if (nla_put_u32(msg, NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX,
+- rdev->wiphy.available_antennas_tx) ||
+- nla_put_u32(msg, NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX,
+- rdev->wiphy.available_antennas_rx))
++ if (nla_put(msg, NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX,
++ sizeof(rdev->wiphy.available_antennas_tx),
++ rdev->wiphy.available_antennas_tx) ||
++ nla_put(msg, NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX,
++ sizeof(rdev->wiphy.available_antennas_rx),
++ rdev->wiphy.available_antennas_rx))
+ goto nla_put_failure;
+
+ if ((rdev->wiphy.flags & WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD) &&
+@@ -2637,22 +2637,29 @@ static int nl80211_send_wiphy(struct cfg80211_registered_device *rdev,
+ rdev->wiphy.probe_resp_offload))
+ goto nla_put_failure;
+
+- if ((rdev->wiphy.available_antennas_tx ||
+- rdev->wiphy.available_antennas_rx) &&
+- rdev->ops->get_antenna) {
+- u32 tx_ant = 0, rx_ant = 0;
++ if (rdev->ops->get_antenna) {
++ u32 tx_ants[NUM_NL80211_BANDS], rx_ants[NUM_NL80211_BANDS];
++ u32 tx_ant, rx_ant;
+ int res;
+
+- res = rdev_get_antenna(rdev, &tx_ant, &rx_ant);
+- if (!res) {
+- if (nla_put_u32(msg,
+- NL80211_ATTR_WIPHY_ANTENNA_TX,
+- tx_ant) ||
+- nla_put_u32(msg,
+- NL80211_ATTR_WIPHY_ANTENNA_RX,
+- rx_ant))
+- goto nla_put_failure;
++ memset(tx_ants, 0, sizeof(tx_ants));
++ memset(rx_ants, 0, sizeof(rx_ants));
++ for (i = 0; i < NUM_NL80211_BANDS; i++) {
++ if (!rdev->wiphy.available_antennas_tx[i] ||
++ !rdev->wiphy.available_antennas_rx[i])
++ continue;
++
++ res = rdev_get_antenna(rdev, &tx_ant, &rx_ant, i);
++ if (!res) {
++ tx_ants[i] = tx_ant;
++ rx_ants[i] = rx_ant;
++ }
+ }
++ if (nla_put(msg, NL80211_ATTR_WIPHY_ANTENNA_TX,
++ sizeof(tx_ants), tx_ants) ||
++ nla_put(msg, NL80211_ATTR_WIPHY_ANTENNA_RX,
++ sizeof(rx_ants), rx_ants))
++ goto nla_put_failure;
+ }
+
+ state->split_start++;
+@@ -3784,32 +3791,52 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
+
+ if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] &&
+ info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) {
+- u32 tx_ant, rx_ant;
++ u32 *tx_ants, *rx_ants;
++ int bandid, tx_num, rx_num;
+
+- if ((!rdev->wiphy.available_antennas_tx &&
+- !rdev->wiphy.available_antennas_rx) ||
+- !rdev->ops->set_antenna) {
++ if (!rdev->ops->set_antenna) {
+ result = -EOPNOTSUPP;
+ goto out;
+ }
+
+- tx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]);
+- rx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]);
+-
+- /* reject antenna configurations which don't match the
+- * available antenna masks, except for the "all" mask */
+- if ((~tx_ant && (tx_ant & ~rdev->wiphy.available_antennas_tx)) ||
+- (~rx_ant && (rx_ant & ~rdev->wiphy.available_antennas_rx))) {
++ tx_num = nla_len(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]) / sizeof(u32);
++ rx_num = nla_len(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) / sizeof(u32);
++ if (tx_num != rx_num || tx_num != NUM_NL80211_BANDS) {
+ result = -EINVAL;
+ goto out;
+ }
++ tx_ants = nla_data(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]);
++ rx_ants = nla_data(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]);
+
+- tx_ant = tx_ant & rdev->wiphy.available_antennas_tx;
+- rx_ant = rx_ant & rdev->wiphy.available_antennas_rx;
++ /* reject antenna configurations which don't match the
++ * available antenna masks in wiphy, except for the "all" mask
++ */
++ for (bandid = 0; bandid < NUM_NL80211_BANDS; bandid++) {
++ struct ieee80211_supported_band *sband = rdev->wiphy.bands[bandid];
++ u32 tx_ant = tx_ants[bandid], rx_ant = rx_ants[bandid];
++ u32 avail_ants_tx = rdev->wiphy.available_antennas_tx[bandid];
++ u32 avail_ants_rx = rdev->wiphy.available_antennas_rx[bandid];
+
+- result = rdev_set_antenna(rdev, tx_ant, rx_ant);
+- if (result)
+- goto out;
++ if (!sband || !tx_ant || !rx_ant)
++ continue;
++
++ if (!avail_ants_tx && !avail_ants_rx) {
++ result = -EOPNOTSUPP;
++ goto out;
++ }
++
++ if ((~tx_ant && (tx_ant & ~avail_ants_tx)) ||
++ (~rx_ant && (rx_ant & ~avail_ants_rx))) {
++ result = -EINVAL;
++ goto out;
++ }
++
++ tx_ant = tx_ant & avail_ants_tx;
++ rx_ant = rx_ant & avail_ants_rx;
++ result = rdev_set_antenna(rdev, tx_ant, rx_ant, bandid);
++ if (result)
++ goto out;
++ }
+ }
+
+ changed = 0;
+diff --git a/net/wireless/rdev-ops.h b/net/wireless/rdev-ops.h
+index 9b411db..bcd51fc 100644
+--- a/net/wireless/rdev-ops.h
++++ b/net/wireless/rdev-ops.h
+@@ -857,26 +857,26 @@ rdev_update_mgmt_frame_registrations(struct cfg80211_registered_device *rdev,
+ }
+
+ static inline int rdev_set_antenna(struct cfg80211_registered_device *rdev,
+- u32 tx_ant, u32 rx_ant)
++ u32 tx_ant, u32 rx_ant, int band)
+ {
+ int ret;
+- trace_rdev_set_antenna(&rdev->wiphy, tx_ant, rx_ant);
+- ret = rdev->ops->set_antenna(&rdev->wiphy, tx_ant, rx_ant);
++ trace_rdev_set_antenna(&rdev->wiphy, tx_ant, rx_ant, band);
++ ret = rdev->ops->set_antenna(&rdev->wiphy, tx_ant, rx_ant, band);
+ trace_rdev_return_int(&rdev->wiphy, ret);
+ return ret;
+ }
+
+ static inline int rdev_get_antenna(struct cfg80211_registered_device *rdev,
+- u32 *tx_ant, u32 *rx_ant)
++ u32 *tx_ant, u32 *rx_ant, int band)
+ {
+ int ret;
+ trace_rdev_get_antenna(&rdev->wiphy);
+- ret = rdev->ops->get_antenna(&rdev->wiphy, tx_ant, rx_ant);
++ ret = rdev->ops->get_antenna(&rdev->wiphy, tx_ant, rx_ant, band);
+ if (ret)
+ trace_rdev_return_int(&rdev->wiphy, ret);
+ else
+ trace_rdev_return_int_tx_rx(&rdev->wiphy, ret, *tx_ant,
+- *rx_ant);
++ *rx_ant, band);
+ return ret;
+ }
+
+diff --git a/net/wireless/trace.h b/net/wireless/trace.h
+index 6af432e..90ba38a 100644
+--- a/net/wireless/trace.h
++++ b/net/wireless/trace.h
+@@ -1818,22 +1818,24 @@ TRACE_EVENT(rdev_update_mgmt_frame_registrations,
+ );
+
+ TRACE_EVENT(rdev_return_int_tx_rx,
+- TP_PROTO(struct wiphy *wiphy, int ret, u32 tx, u32 rx),
+- TP_ARGS(wiphy, ret, tx, rx),
++ TP_PROTO(struct wiphy *wiphy, int ret, u32 tx, u32 rx, int band),
++ TP_ARGS(wiphy, ret, tx, rx, band),
+ TP_STRUCT__entry(
+ WIPHY_ENTRY
+ __field(int, ret)
+ __field(u32, tx)
+ __field(u32, rx)
++ __field(int, band)
+ ),
+ TP_fast_assign(
+ WIPHY_ASSIGN;
+ __entry->ret = ret;
+ __entry->tx = tx;
+ __entry->rx = rx;
++ __entry->band = band;
+ ),
+- TP_printk(WIPHY_PR_FMT ", returned %d, tx: %u, rx: %u",
+- WIPHY_PR_ARG, __entry->ret, __entry->tx, __entry->rx)
++ TP_printk(WIPHY_PR_FMT ", returned %d, tx: %u, rx: %u band %d",
++ WIPHY_PR_ARG, __entry->ret, __entry->tx, __entry->rx, __entry->band)
+ );
+
+ TRACE_EVENT(rdev_return_void_tx_rx,
+@@ -1860,25 +1862,27 @@ TRACE_EVENT(rdev_return_void_tx_rx,
+ );
+
+ DECLARE_EVENT_CLASS(tx_rx_evt,
+- TP_PROTO(struct wiphy *wiphy, u32 tx, u32 rx),
+- TP_ARGS(wiphy, tx, rx),
++ TP_PROTO(struct wiphy *wiphy, u32 tx, u32 rx, int band),
++ TP_ARGS(wiphy, rx, tx, band),
+ TP_STRUCT__entry(
+ WIPHY_ENTRY
+ __field(u32, tx)
+ __field(u32, rx)
++ __field(int, band)
+ ),
+ TP_fast_assign(
+ WIPHY_ASSIGN;
+ __entry->tx = tx;
+ __entry->rx = rx;
++ __entry->band = band;
+ ),
+- TP_printk(WIPHY_PR_FMT ", tx: %u, rx: %u ",
+- WIPHY_PR_ARG, __entry->tx, __entry->rx)
++ TP_printk(WIPHY_PR_FMT ", tx: %u, rx: %u band: %d ",
++ WIPHY_PR_ARG, __entry->tx, __entry->rx, __entry->band)
+ );
+
+ DEFINE_EVENT(tx_rx_evt, rdev_set_antenna,
+- TP_PROTO(struct wiphy *wiphy, u32 tx, u32 rx),
+- TP_ARGS(wiphy, tx, rx)
++ TP_PROTO(struct wiphy *wiphy, u32 tx, u32 rx, int band),
++ TP_ARGS(wiphy, rx, tx, band)
+ );
+
+ DECLARE_EVENT_CLASS(wiphy_netdev_id_evt,
+--
+2.18.0
+