aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/cfg80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/cfg80211.h')
-rw-r--r--include/net/cfg80211.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 10eb53e2bc9f..885d4e5bc4b5 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -857,6 +857,8 @@ enum tx_power_setting {
857 * 857 *
858 * @rfkill_poll: polls the hw rfkill line, use cfg80211 reporting 858 * @rfkill_poll: polls the hw rfkill line, use cfg80211 reporting
859 * functions to adjust rfkill hw state 859 * functions to adjust rfkill hw state
860 *
861 * @testmode_cmd: run a test mode command
860 */ 862 */
861struct cfg80211_ops { 863struct cfg80211_ops {
862 int (*suspend)(struct wiphy *wiphy); 864 int (*suspend)(struct wiphy *wiphy);
@@ -955,6 +957,10 @@ struct cfg80211_ops {
955 int (*get_tx_power)(struct wiphy *wiphy, int *dbm); 957 int (*get_tx_power)(struct wiphy *wiphy, int *dbm);
956 958
957 void (*rfkill_poll)(struct wiphy *wiphy); 959 void (*rfkill_poll)(struct wiphy *wiphy);
960
961#ifdef CONFIG_NL80211_TESTMODE
962 int (*testmode_cmd)(struct wiphy *wiphy, void *data, int len);
963#endif
958}; 964};
959 965
960/* 966/*
@@ -1705,4 +1711,81 @@ void wiphy_rfkill_start_polling(struct wiphy *wiphy);
1705 */ 1711 */
1706void wiphy_rfkill_stop_polling(struct wiphy *wiphy); 1712void wiphy_rfkill_stop_polling(struct wiphy *wiphy);
1707 1713
1714#ifdef CONFIG_NL80211_TESTMODE
1715/**
1716 * cfg80211_testmode_alloc_reply_skb - allocate testmode reply
1717 * @wiphy: the wiphy
1718 * @approxlen: an upper bound of the length of the data that will
1719 * be put into the skb
1720 *
1721 * This function allocates and pre-fills an skb for a reply to
1722 * the testmode command. Since it is intended for a reply, calling
1723 * it outside of the @testmode_cmd operation is invalid.
1724 *
1725 * The returned skb (or %NULL if any errors happen) is pre-filled
1726 * with the wiphy index and set up in a way that any data that is
1727 * put into the skb (with skb_put(), nla_put() or similar) will end
1728 * up being within the %NL80211_ATTR_TESTDATA attribute, so all that
1729 * needs to be done with the skb is adding data for the corresponding
1730 * userspace tool which can then read that data out of the testdata
1731 * attribute. You must not modify the skb in any other way.
1732 *
1733 * When done, call cfg80211_testmode_reply() with the skb and return
1734 * its error code as the result of the @testmode_cmd operation.
1735 */
1736struct sk_buff *cfg80211_testmode_alloc_reply_skb(struct wiphy *wiphy,
1737 int approxlen);
1738
1739/**
1740 * cfg80211_testmode_reply - send the reply skb
1741 * @skb: The skb, must have been allocated with
1742 * cfg80211_testmode_alloc_reply_skb()
1743 *
1744 * Returns an error code or 0 on success, since calling this
1745 * function will usually be the last thing before returning
1746 * from the @testmode_cmd you should return the error code.
1747 * Note that this function consumes the skb regardless of the
1748 * return value.
1749 */
1750int cfg80211_testmode_reply(struct sk_buff *skb);
1751
1752/**
1753 * cfg80211_testmode_alloc_event_skb - allocate testmode event
1754 * @wiphy: the wiphy
1755 * @approxlen: an upper bound of the length of the data that will
1756 * be put into the skb
1757 * @gfp: allocation flags
1758 *
1759 * This function allocates and pre-fills an skb for an event on the
1760 * testmode multicast group.
1761 *
1762 * The returned skb (or %NULL if any errors happen) is set up in the
1763 * same way as with cfg80211_testmode_alloc_reply_skb() but prepared
1764 * for an event. As there, you should simply add data to it that will
1765 * then end up in the %NL80211_ATTR_TESTDATA attribute. Again, you must
1766 * not modify the skb in any other way.
1767 *
1768 * When done filling the skb, call cfg80211_testmode_event() with the
1769 * skb to send the event.
1770 */
1771struct sk_buff *cfg80211_testmode_alloc_event_skb(struct wiphy *wiphy,
1772 int approxlen, gfp_t gfp);
1773
1774/**
1775 * cfg80211_testmode_event - send the event
1776 * @skb: The skb, must have been allocated with
1777 * cfg80211_testmode_alloc_event_skb()
1778 * @gfp: allocation flags
1779 *
1780 * This function sends the given @skb, which must have been allocated
1781 * by cfg80211_testmode_alloc_event_skb(), as an event. It always
1782 * consumes it.
1783 */
1784void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp);
1785
1786#define CFG80211_TESTMODE_CMD(cmd) .testmode_cmd = (cmd),
1787#else
1788#define CFG80211_TESTMODE_CMD(cmd)
1789#endif
1790
1708#endif /* __NET_CFG80211_H */ 1791#endif /* __NET_CFG80211_H */