* [ath9k-devel] [PATCH v0 2/6] support for antenna configuration profiles
@ 2011-11-14 13:02 Daniel Golle
0 siblings, 0 replies; only message in thread
From: Daniel Golle @ 2011-11-14 13:02 UTC (permalink / raw)
To: ath9k-devel
This adds the operations set_extant and get_extant to cfg80211.
Signed-off-by: Daniel Golle <dgolle@allnet.de>
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -580,6 +580,26 @@ static inline int drv_get_antenna(struct
return ret;
}
+static inline int drv_set_extant(struct ieee80211_local *local, u32 extant)
+{
+ int ret = -EOPNOTSUPP;
+ might_sleep();
+ if (local->ops->set_extant)
+ ret = local->ops->set_extant(&local->hw, extant);
+ trace_drv_set_extant(local, extant, ret);
+ return ret;
+}
+
+static inline int drv_get_extant(struct ieee80211_local *local, u32 *extant)
+{
+ int ret = -EOPNOTSUPP;
+ might_sleep();
+ if (local->ops->get_extant)
+ ret = local->ops->get_extant(&local->hw, extant);
+ trace_drv_get_extant(local, *extant, ret);
+ return ret;
+}
+
static inline int drv_remain_on_channel(struct ieee80211_local *local,
struct ieee80211_channel *chan,
enum nl80211_channel_type chantype,
--- a/net/mac80211/driver-trace.h
+++ b/net/mac80211/driver-trace.h
@@ -931,6 +931,52 @@ TRACE_EVENT(drv_get_antenna,
)
);
+TRACE_EVENT(drv_set_extant,
+ TP_PROTO(struct ieee80211_local *local, u8 extant, int ret),
+
+ TP_ARGS(local, extant, ret),
+
+ TP_STRUCT__entry(
+ LOCAL_ENTRY
+ __field(u32, extant)
+ __field(int, ret)
+ ),
+
+ TP_fast_assign(
+ LOCAL_ASSIGN;
+ __entry->extant = extant;
+ __entry->ret = ret;
+ ),
+
+ TP_printk(
+ LOCAL_PR_FMT " extant:%d ret:%d",
+ LOCAL_PR_ARG, __entry->extant, __entry->ret
+ )
+);
+
+TRACE_EVENT(drv_get_extant,
+ TP_PROTO(struct ieee80211_local *local, u8 extant, int ret),
+
+ TP_ARGS(local, ext, ret),
+
+ TP_STRUCT__entry(
+ LOCAL_ENTRY
+ __field(u32, extant)
+ __field(int, ret)
+ ),
+
+ TP_fast_assign(
+ LOCAL_ASSIGN;
+ __entry->extant = extant;
+ __entry->ret = ret;
+ ),
+
+ TP_printk(
+ LOCAL_PR_FMT " extant:%d ret:%d",
+ LOCAL_PR_ARG, __entry->extant, __entry->ret
+ )
+);
+
TRACE_EVENT(drv_remain_on_channel,
TP_PROTO(struct ieee80211_local *local, struct ieee80211_channel *chan,
enum nl80211_channel_type chantype, unsigned int duration),
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2195,6 +2195,9 @@ struct ieee80211_ops {
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_extant)(struct ieee80211_hw *hw, u32 extant);
+ int (*get_extant)(struct ieee80211_hw *hw, u32 *extant);
+
int (*remain_on_channel)(struct ieee80211_hw *hw,
struct ieee80211_channel *chan,
enum nl80211_channel_type channel_type,
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2153,6 +2153,23 @@ static int ieee80211_get_antenna(struct
return drv_get_antenna(local, tx_ant, rx_ant);
}
+static int ieee80211_set_extant(struct wiphy *wiphy, u32 extant)
+{
+ struct ieee80211_local *local = wiphy_priv(wiphy);
+
+ if (local->started)
+ return -EOPNOTSUPP;
+
+ return drv_set_extant(local, extant);
+}
+
+static int ieee80211_get_extant(struct wiphy *wiphy, u32 *extant)
+{
+ struct ieee80211_local *local = wiphy_priv(wiphy);
+
+ return drv_get_extant(local, extant);
+}
+
static int ieee80211_set_ringparam(struct wiphy *wiphy, u32 tx, u32 rx)
{
struct ieee80211_local *local = wiphy_priv(wiphy);
@@ -2560,6 +2577,8 @@ struct cfg80211_ops mac80211_config_ops
.mgmt_frame_register = ieee80211_mgmt_frame_register,
.set_antenna = ieee80211_set_antenna,
.get_antenna = ieee80211_get_antenna,
+ .set_extant = ieee80211_set_extant,
+ .get_extant = ieee80211_get_extant,
.set_ringparam = ieee80211_set_ringparam,
.get_ringparam = ieee80211_get_ringparam,
.set_rekey_data = ieee80211_set_rekey_data,
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-11-14 13:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-14 13:02 [ath9k-devel] [PATCH v0 2/6] support for antenna configuration profiles Daniel Golle
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.