Return-path: Received: from na3sys009aog120.obsmtp.com ([74.125.149.140]:34561 "EHLO na3sys009aog120.obsmtp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757632Ab2HHMC3 (ORCPT ); Wed, 8 Aug 2012 08:02:29 -0400 Received: by obbwd18 with SMTP id wd18so2479888obb.1 for ; Wed, 08 Aug 2012 05:02:28 -0700 (PDT) From: Victor Goldenshtein To: Cc: , , , , , , , , , , , , , Subject: [PATCH v3 5/7] nl80211: add support to enable TX on oper-channel Date: Wed, 8 Aug 2012 14:55:36 +0300 Message-Id: <1344426938-1883-6-git-send-email-victorg@ti.com> (sfid-20120808_140234_946959_95B632AF) In-Reply-To: <1344426938-1883-1-git-send-email-victorg@ti.com> References: <1344426938-1883-1-git-send-email-victorg@ti.com> Sender: linux-wireless-owner@vger.kernel.org List-ID: Once a channel has been passes the channel availability check (CAC) the ap may start the tx with wpa_driver_nl80211_enable_dfs_tx(). Add wpa_driver_nl80211_enable_dfs_tx() + init drv_ops. Signed-hostap: Boris Presman Signed-hostap: Victor Goldenshtein --- src/drivers/driver_nl80211.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 3ac485c..fadd4cb 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -8849,6 +8849,33 @@ static int nl80211_set_p2p_powersave(void *priv, int legacy_ps, int opp_ps, } +static int nl80211_enable_dfs_tx(void *priv, int freq) +{ + struct i802_bss *bss = priv; + struct wpa_driver_nl80211_data *drv = bss->drv; + struct nl_msg *msg; + int ret; + + wpa_printf(MSG_DEBUG, "nl80211: Enable DFS tx"); + + msg = nlmsg_alloc(); + if (!msg) + return -1; + + nl80211_cmd(bss->drv, msg, 0, NL80211_CMD_DFS_ENABLE_TX); + NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, drv->ifindex); + NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, freq); + + ret = send_and_recv_msgs(drv, msg, NULL, NULL); + if (ret == 0) + return 0; + wpa_printf(MSG_DEBUG, "nl80211: Failed to enable DFS tx: " + "%d (%s)", ret, strerror(-ret)); +nla_put_failure: + return -1; +} + + #ifdef CONFIG_TDLS static int nl80211_send_tdls_mgmt(void *priv, const u8 *dst, u8 action_code, @@ -9143,6 +9170,7 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = { .set_rekey_info = nl80211_set_rekey_info, .poll_client = nl80211_poll_client, .set_p2p_powersave = nl80211_set_p2p_powersave, + .enable_tx = nl80211_enable_dfs_tx, #ifdef CONFIG_TDLS .send_tdls_mgmt = nl80211_send_tdls_mgmt, .tdls_oper = nl80211_tdls_oper, -- 1.7.5.4