Loading include/net/mac80211.h +7 −0 Original line number Original line Diff line number Diff line Loading @@ -1804,6 +1804,10 @@ enum ieee80211_ampdu_mlme_action { * return value is 1, then the @remain_on_channel will be used with a * return value is 1, then the @remain_on_channel will be used with a * regular transmission (if supported.) * regular transmission (if supported.) * @offchannel_tx_cancel_wait: cancel wait associated with offchannel TX * @offchannel_tx_cancel_wait: cancel wait associated with offchannel TX * * @set_ringparam: Set tx and rx ring sizes. * * @get_ringparam: Get tx and rx ring current and maximum sizes. */ */ struct ieee80211_ops { struct ieee80211_ops { void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); Loading Loading @@ -1888,6 +1892,9 @@ struct ieee80211_ops { enum nl80211_channel_type channel_type, enum nl80211_channel_type channel_type, unsigned int wait); unsigned int wait); int (*offchannel_tx_cancel_wait)(struct ieee80211_hw *hw); int (*offchannel_tx_cancel_wait)(struct ieee80211_hw *hw); int (*set_ringparam)(struct ieee80211_hw *hw, u32 tx, u32 rx); void (*get_ringparam)(struct ieee80211_hw *hw, u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max); }; }; /** /** Loading net/mac80211/cfg.c +17 −0 Original line number Original line Diff line number Diff line Loading @@ -2012,6 +2012,21 @@ static int ieee80211_get_antenna(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant) return drv_get_antenna(local, tx_ant, rx_ant); return drv_get_antenna(local, tx_ant, rx_ant); } } static int ieee80211_set_ringparam(struct wiphy *wiphy, u32 tx, u32 rx) { struct ieee80211_local *local = wiphy_priv(wiphy); return drv_set_ringparam(local, tx, rx); } static void ieee80211_get_ringparam(struct wiphy *wiphy, u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max) { struct ieee80211_local *local = wiphy_priv(wiphy); drv_get_ringparam(local, tx, tx_max, rx, rx_max); } struct cfg80211_ops mac80211_config_ops = { struct cfg80211_ops mac80211_config_ops = { .add_virtual_intf = ieee80211_add_iface, .add_virtual_intf = ieee80211_add_iface, .del_virtual_intf = ieee80211_del_iface, .del_virtual_intf = ieee80211_del_iface, Loading Loading @@ -2069,4 +2084,6 @@ struct cfg80211_ops mac80211_config_ops = { .mgmt_frame_register = ieee80211_mgmt_frame_register, .mgmt_frame_register = ieee80211_mgmt_frame_register, .set_antenna = ieee80211_set_antenna, .set_antenna = ieee80211_set_antenna, .get_antenna = ieee80211_get_antenna, .get_antenna = ieee80211_get_antenna, .set_ringparam = ieee80211_set_ringparam, .get_ringparam = ieee80211_get_ringparam, }; }; net/mac80211/driver-ops.h +26 −0 Original line number Original line Diff line number Diff line Loading @@ -526,4 +526,30 @@ static inline int drv_offchannel_tx_cancel_wait(struct ieee80211_local *local) return ret; return ret; } } static inline int drv_set_ringparam(struct ieee80211_local *local, u32 tx, u32 rx) { int ret = -ENOTSUPP; might_sleep(); trace_drv_set_ringparam(local, tx, rx); if (local->ops->set_ringparam) ret = local->ops->set_ringparam(&local->hw, tx, rx); trace_drv_return_int(local, ret); return ret; } static inline void drv_get_ringparam(struct ieee80211_local *local, u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max) { might_sleep(); trace_drv_get_ringparam(local, tx, tx_max, rx, rx_max); if (local->ops->get_ringparam) local->ops->get_ringparam(&local->hw, tx, tx_max, rx, rx_max); trace_drv_return_void(local); } #endif /* __MAC80211_DRIVER_OPS */ #endif /* __MAC80211_DRIVER_OPS */ net/mac80211/driver-trace.h +52 −0 Original line number Original line Diff line number Diff line Loading @@ -912,6 +912,58 @@ TRACE_EVENT(drv_offchannel_tx, ) ) ); ); TRACE_EVENT(drv_set_ringparam, TP_PROTO(struct ieee80211_local *local, u32 tx, u32 rx), TP_ARGS(local, tx, rx), TP_STRUCT__entry( LOCAL_ENTRY __field(u32, tx) __field(u32, rx) ), TP_fast_assign( LOCAL_ASSIGN; __entry->tx = tx; __entry->rx = rx; ), TP_printk( LOCAL_PR_FMT " tx:%d rx %d", LOCAL_PR_ARG, __entry->tx, __entry->rx ) ); TRACE_EVENT(drv_get_ringparam, TP_PROTO(struct ieee80211_local *local, u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max), TP_ARGS(local, tx, tx_max, rx, rx_max), TP_STRUCT__entry( LOCAL_ENTRY __field(u32, tx) __field(u32, tx_max) __field(u32, rx) __field(u32, rx_max) ), TP_fast_assign( LOCAL_ASSIGN; __entry->tx = *tx; __entry->tx_max = *tx_max; __entry->rx = *rx; __entry->rx_max = *rx_max; ), TP_printk( LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d", LOCAL_PR_ARG, __entry->tx, __entry->tx_max, __entry->rx, __entry->rx_max ) ); DEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait, DEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait, TP_PROTO(struct ieee80211_local *local), TP_PROTO(struct ieee80211_local *local), TP_ARGS(local) TP_ARGS(local) Loading Loading
include/net/mac80211.h +7 −0 Original line number Original line Diff line number Diff line Loading @@ -1804,6 +1804,10 @@ enum ieee80211_ampdu_mlme_action { * return value is 1, then the @remain_on_channel will be used with a * return value is 1, then the @remain_on_channel will be used with a * regular transmission (if supported.) * regular transmission (if supported.) * @offchannel_tx_cancel_wait: cancel wait associated with offchannel TX * @offchannel_tx_cancel_wait: cancel wait associated with offchannel TX * * @set_ringparam: Set tx and rx ring sizes. * * @get_ringparam: Get tx and rx ring current and maximum sizes. */ */ struct ieee80211_ops { struct ieee80211_ops { void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); Loading Loading @@ -1888,6 +1892,9 @@ struct ieee80211_ops { enum nl80211_channel_type channel_type, enum nl80211_channel_type channel_type, unsigned int wait); unsigned int wait); int (*offchannel_tx_cancel_wait)(struct ieee80211_hw *hw); int (*offchannel_tx_cancel_wait)(struct ieee80211_hw *hw); int (*set_ringparam)(struct ieee80211_hw *hw, u32 tx, u32 rx); void (*get_ringparam)(struct ieee80211_hw *hw, u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max); }; }; /** /** Loading
net/mac80211/cfg.c +17 −0 Original line number Original line Diff line number Diff line Loading @@ -2012,6 +2012,21 @@ static int ieee80211_get_antenna(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant) return drv_get_antenna(local, tx_ant, rx_ant); return drv_get_antenna(local, tx_ant, rx_ant); } } static int ieee80211_set_ringparam(struct wiphy *wiphy, u32 tx, u32 rx) { struct ieee80211_local *local = wiphy_priv(wiphy); return drv_set_ringparam(local, tx, rx); } static void ieee80211_get_ringparam(struct wiphy *wiphy, u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max) { struct ieee80211_local *local = wiphy_priv(wiphy); drv_get_ringparam(local, tx, tx_max, rx, rx_max); } struct cfg80211_ops mac80211_config_ops = { struct cfg80211_ops mac80211_config_ops = { .add_virtual_intf = ieee80211_add_iface, .add_virtual_intf = ieee80211_add_iface, .del_virtual_intf = ieee80211_del_iface, .del_virtual_intf = ieee80211_del_iface, Loading Loading @@ -2069,4 +2084,6 @@ struct cfg80211_ops mac80211_config_ops = { .mgmt_frame_register = ieee80211_mgmt_frame_register, .mgmt_frame_register = ieee80211_mgmt_frame_register, .set_antenna = ieee80211_set_antenna, .set_antenna = ieee80211_set_antenna, .get_antenna = ieee80211_get_antenna, .get_antenna = ieee80211_get_antenna, .set_ringparam = ieee80211_set_ringparam, .get_ringparam = ieee80211_get_ringparam, }; };
net/mac80211/driver-ops.h +26 −0 Original line number Original line Diff line number Diff line Loading @@ -526,4 +526,30 @@ static inline int drv_offchannel_tx_cancel_wait(struct ieee80211_local *local) return ret; return ret; } } static inline int drv_set_ringparam(struct ieee80211_local *local, u32 tx, u32 rx) { int ret = -ENOTSUPP; might_sleep(); trace_drv_set_ringparam(local, tx, rx); if (local->ops->set_ringparam) ret = local->ops->set_ringparam(&local->hw, tx, rx); trace_drv_return_int(local, ret); return ret; } static inline void drv_get_ringparam(struct ieee80211_local *local, u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max) { might_sleep(); trace_drv_get_ringparam(local, tx, tx_max, rx, rx_max); if (local->ops->get_ringparam) local->ops->get_ringparam(&local->hw, tx, tx_max, rx, rx_max); trace_drv_return_void(local); } #endif /* __MAC80211_DRIVER_OPS */ #endif /* __MAC80211_DRIVER_OPS */
net/mac80211/driver-trace.h +52 −0 Original line number Original line Diff line number Diff line Loading @@ -912,6 +912,58 @@ TRACE_EVENT(drv_offchannel_tx, ) ) ); ); TRACE_EVENT(drv_set_ringparam, TP_PROTO(struct ieee80211_local *local, u32 tx, u32 rx), TP_ARGS(local, tx, rx), TP_STRUCT__entry( LOCAL_ENTRY __field(u32, tx) __field(u32, rx) ), TP_fast_assign( LOCAL_ASSIGN; __entry->tx = tx; __entry->rx = rx; ), TP_printk( LOCAL_PR_FMT " tx:%d rx %d", LOCAL_PR_ARG, __entry->tx, __entry->rx ) ); TRACE_EVENT(drv_get_ringparam, TP_PROTO(struct ieee80211_local *local, u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max), TP_ARGS(local, tx, tx_max, rx, rx_max), TP_STRUCT__entry( LOCAL_ENTRY __field(u32, tx) __field(u32, tx_max) __field(u32, rx) __field(u32, rx_max) ), TP_fast_assign( LOCAL_ASSIGN; __entry->tx = *tx; __entry->tx_max = *tx_max; __entry->rx = *rx; __entry->rx_max = *rx_max; ), TP_printk( LOCAL_PR_FMT " tx:%d tx_max %d rx %d rx_max %d", LOCAL_PR_ARG, __entry->tx, __entry->tx_max, __entry->rx, __entry->rx_max ) ); DEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait, DEFINE_EVENT(local_only_evt, drv_offchannel_tx_cancel_wait, TP_PROTO(struct ieee80211_local *local), TP_PROTO(struct ieee80211_local *local), TP_ARGS(local) TP_ARGS(local) Loading