Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 224563
b: refs/heads/master
c: 15d9675
h: refs/heads/master
i:
  224561: 3837670
  224559: 5807d4c
v: v3
  • Loading branch information
Bruno Randolf authored and John W. Linville committed Nov 16, 2010
1 parent a9be1cd commit ac22514
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: afe0cbf87500f0585d217deb8c6fd329793a7957
refs/heads/master: 15d967532148a5fcda075282b82a271b6595a386
2 changes: 2 additions & 0 deletions trunk/include/net/mac80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -1799,6 +1799,8 @@ struct ieee80211_ops {
void (*channel_switch)(struct ieee80211_hw *hw,
struct ieee80211_channel_switch *ch_switch);
int (*napi_poll)(struct ieee80211_hw *hw, int budget);
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);
};

/**
Expand Down
19 changes: 19 additions & 0 deletions trunk/net/mac80211/cfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -1628,6 +1628,23 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy,
ieee80211_queue_work(&local->hw, &local->reconfig_filter);
}

static int ieee80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant)
{
struct ieee80211_local *local = wiphy_priv(wiphy);

if (local->started)
return -EOPNOTSUPP;

return drv_set_antenna(local, tx_ant, rx_ant);
}

static int ieee80211_get_antenna(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant)
{
struct ieee80211_local *local = wiphy_priv(wiphy);

return drv_get_antenna(local, tx_ant, rx_ant);
}

struct cfg80211_ops mac80211_config_ops = {
.add_virtual_intf = ieee80211_add_iface,
.del_virtual_intf = ieee80211_del_iface,
Expand Down Expand Up @@ -1680,4 +1697,6 @@ struct cfg80211_ops mac80211_config_ops = {
.mgmt_tx = ieee80211_mgmt_tx,
.set_cqm_rssi_config = ieee80211_set_cqm_rssi_config,
.mgmt_frame_register = ieee80211_mgmt_frame_register,
.set_antenna = ieee80211_set_antenna,
.get_antenna = ieee80211_get_antenna,
};
23 changes: 23 additions & 0 deletions trunk/net/mac80211/driver-ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -442,4 +442,27 @@ static inline void drv_channel_switch(struct ieee80211_local *local,
trace_drv_return_void(local);
}


static inline int drv_set_antenna(struct ieee80211_local *local,
u32 tx_ant, u32 rx_ant)
{
int ret = -EOPNOTSUPP;
might_sleep();
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);
return ret;
}

static inline int drv_get_antenna(struct ieee80211_local *local,
u32 *tx_ant, u32 *rx_ant)
{
int ret = -EOPNOTSUPP;
might_sleep();
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);
return ret;
}

#endif /* __MAC80211_DRIVER_OPS */
50 changes: 50 additions & 0 deletions trunk/net/mac80211/driver-trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -883,6 +883,56 @@ TRACE_EVENT(drv_channel_switch,
)
);

TRACE_EVENT(drv_set_antenna,
TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),

TP_ARGS(local, tx_ant, rx_ant, ret),

TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, tx_ant)
__field(u32, rx_ant)
__field(int, ret)
),

TP_fast_assign(
LOCAL_ASSIGN;
__entry->tx_ant = tx_ant;
__entry->rx_ant = rx_ant;
__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
)
);

TRACE_EVENT(drv_get_antenna,
TP_PROTO(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant, int ret),

TP_ARGS(local, tx_ant, rx_ant, ret),

TP_STRUCT__entry(
LOCAL_ENTRY
__field(u32, tx_ant)
__field(u32, rx_ant)
__field(int, ret)
),

TP_fast_assign(
LOCAL_ASSIGN;
__entry->tx_ant = tx_ant;
__entry->rx_ant = rx_ant;
__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
)
);

/*
* Tracing for API calls that drivers call.
*/
Expand Down

0 comments on commit ac22514

Please sign in to comment.