cfg80211: pass a channel definition struct

Instead of passing a channel pointer and channel type
to all functions and driver methods, pass a new channel
definition struct. Right now, this struct contains just
the control channel and channel type, but for VHT this
will change.

Also, add a small inline cfg80211_get_chandef_type() so
that drivers don't need to use the _type field of the
new structure all the time, which will change.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg
2012-11-08 21:25:48 +01:00
parent fe4b31810c
commit 683b6d3b31
20 changed files with 402 additions and 401 deletions

View File

@@ -126,6 +126,26 @@
#define CHAN_PR_FMT ", band: %d, freq: %u"
#define CHAN_PR_ARG __entry->band, __entry->center_freq
#define CHAN_DEF_ENTRY __field(enum ieee80211_band, band) \
__field(u16, center_freq) \
__field(u32, channel_type)
#define CHAN_DEF_ASSIGN(chandef) \
do { \
if ((chandef) && (chandef)->chan) { \
__entry->band = (chandef)->chan->band; \
__entry->center_freq = \
(chandef)->chan->center_freq; \
__entry->channel_type = (chandef)->_type; \
} else { \
__entry->band = 0; \
__entry->center_freq = 0; \
__entry->channel_type = 0; \
} \
} while (0)
#define CHAN_DEF_PR_FMT ", band: %d, freq: %u, chantype: %d"
#define CHAN_DEF_PR_ARG __entry->band, __entry->center_freq, \
__entry->channel_type
#define SINFO_ENTRY __field(int, generation) \
__field(u32, connected_time) \
__field(u32, inactive_time) \
@@ -433,7 +453,7 @@ TRACE_EVENT(rdev_start_ap,
TP_STRUCT__entry(
WIPHY_ENTRY
NETDEV_ENTRY
CHAN_ENTRY
CHAN_DEF_ENTRY
__field(int, beacon_interval)
__field(int, dtim_period)
__array(char, ssid, IEEE80211_MAX_SSID_LEN + 1)
@@ -446,7 +466,7 @@ TRACE_EVENT(rdev_start_ap,
TP_fast_assign(
WIPHY_ASSIGN;
NETDEV_ASSIGN;
CHAN_ASSIGN(settings->channel);
CHAN_DEF_ASSIGN(&settings->chandef);
__entry->beacon_interval = settings->beacon_interval;
__entry->dtim_period = settings->dtim_period;
__entry->hidden_ssid = settings->hidden_ssid;
@@ -458,10 +478,10 @@ TRACE_EVENT(rdev_start_ap,
memcpy(__entry->ssid, settings->ssid, settings->ssid_len);
),
TP_printk(WIPHY_PR_FMT NETDEV_PR_FMT ", AP settings - ssid: %s, "
CHAN_PR_FMT ", beacon interval: %d, dtim period: %d, "
CHAN_DEF_PR_FMT ", beacon interval: %d, dtim period: %d, "
"hidden ssid: %d, wpa versions: %u, privacy: %s, "
"auth type: %d, inactivity timeout: %d",
WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->ssid, CHAN_PR_ARG,
WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->ssid, CHAN_DEF_PR_ARG,
__entry->beacon_interval, __entry->dtim_period,
__entry->hidden_ssid, __entry->wpa_ver,
BOOL_TO_STR(__entry->privacy), __entry->auth_type,
@@ -933,21 +953,19 @@ TRACE_EVENT(rdev_libertas_set_mesh_channel,
);
TRACE_EVENT(rdev_set_monitor_channel,
TP_PROTO(struct wiphy *wiphy, struct ieee80211_channel *chan,
enum nl80211_channel_type chan_type),
TP_ARGS(wiphy, chan, chan_type),
TP_PROTO(struct wiphy *wiphy,
struct cfg80211_chan_def *chandef),
TP_ARGS(wiphy, chandef),
TP_STRUCT__entry(
WIPHY_ENTRY
CHAN_ENTRY
__field(enum nl80211_channel_type, chan_type)
CHAN_DEF_ENTRY
),
TP_fast_assign(
WIPHY_ASSIGN;
CHAN_ASSIGN(chan);
__entry->chan_type = chan_type;
CHAN_DEF_ASSIGN(chandef);
),
TP_printk(WIPHY_PR_FMT CHAN_PR_FMT ", channel type : %d",
WIPHY_PR_ARG, CHAN_PR_ARG, __entry->chan_type)
TP_printk(WIPHY_PR_FMT CHAN_DEF_PR_FMT,
WIPHY_PR_ARG, CHAN_DEF_PR_ARG)
);
TRACE_EVENT(rdev_auth,
@@ -1713,22 +1731,25 @@ DEFINE_EVENT(wiphy_wdev_evt, rdev_get_channel,
TP_ARGS(wiphy, wdev)
);
TRACE_EVENT(rdev_return_channel,
TP_PROTO(struct wiphy *wiphy, struct ieee80211_channel *chan,
enum nl80211_channel_type type),
TP_ARGS(wiphy, chan, type),
TRACE_EVENT(rdev_return_chandef,
TP_PROTO(struct wiphy *wiphy, int ret,
struct cfg80211_chan_def *chandef),
TP_ARGS(wiphy, ret, chandef),
TP_STRUCT__entry(
WIPHY_ENTRY
CHAN_ENTRY
__field(enum nl80211_channel_type, type)
__field(int, ret)
CHAN_DEF_ENTRY
),
TP_fast_assign(
WIPHY_ASSIGN;
CHAN_ASSIGN(chan);
__entry->type = type;
if (ret == 0)
CHAN_DEF_ASSIGN(chandef);
else
CHAN_DEF_ASSIGN((struct cfg80211_chan_def *)NULL);
__entry->ret = ret;
),
TP_printk(WIPHY_PR_FMT CHAN_PR_FMT ", channel type: %d",
WIPHY_PR_ARG, CHAN_PR_ARG, __entry->type)
TP_printk(WIPHY_PR_FMT CHAN_DEF_PR_FMT ", ret: %d",
WIPHY_PR_ARG, CHAN_DEF_PR_ARG, __entry->ret)
);
DEFINE_EVENT(wiphy_wdev_evt, rdev_start_p2p_device,
@@ -1992,40 +2013,35 @@ TRACE_EVENT(cfg80211_cqm_rssi_notify,
NETDEV_PR_ARG, __entry->rssi_event)
);
TRACE_EVENT(cfg80211_can_beacon_sec_chan,
TP_PROTO(struct wiphy *wiphy, struct ieee80211_channel *channel,
enum nl80211_channel_type channel_type),
TP_ARGS(wiphy, channel, channel_type),
TRACE_EVENT(cfg80211_reg_can_beacon,
TP_PROTO(struct wiphy *wiphy, struct cfg80211_chan_def *chandef),
TP_ARGS(wiphy, chandef),
TP_STRUCT__entry(
WIPHY_ENTRY
CHAN_ENTRY
__field(enum nl80211_channel_type, channel_type)
CHAN_DEF_ENTRY
),
TP_fast_assign(
WIPHY_ASSIGN;
CHAN_ASSIGN(channel);
__entry->channel_type = channel_type;
CHAN_DEF_ASSIGN(chandef);
),
TP_printk(WIPHY_PR_FMT CHAN_PR_FMT ", channel_type: %d",
WIPHY_PR_ARG, CHAN_PR_ARG, __entry->channel_type)
TP_printk(WIPHY_PR_FMT CHAN_DEF_PR_FMT,
WIPHY_PR_ARG, CHAN_DEF_PR_ARG)
);
TRACE_EVENT(cfg80211_ch_switch_notify,
TP_PROTO(struct net_device *netdev, int freq,
enum nl80211_channel_type type),
TP_ARGS(netdev, freq, type),
TP_PROTO(struct net_device *netdev,
struct cfg80211_chan_def *chandef),
TP_ARGS(netdev, chandef),
TP_STRUCT__entry(
NETDEV_ENTRY
__field(int, freq)
__field(enum nl80211_channel_type, type)
CHAN_DEF_ENTRY
),
TP_fast_assign(
NETDEV_ASSIGN;
__entry->freq = freq;
__entry->type = type;
CHAN_DEF_ASSIGN(chandef);
),
TP_printk(NETDEV_PR_FMT ", freq: %d, type: %d", NETDEV_PR_ARG,
__entry->freq, __entry->type)
TP_printk(NETDEV_PR_FMT CHAN_DEF_PR_FMT,
NETDEV_PR_ARG, CHAN_DEF_PR_ARG)
);
DECLARE_EVENT_CLASS(cfg80211_rx_evt,