diff options
Diffstat (limited to 'src/drivers')
-rw-r--r-- | src/drivers/driver_nl80211.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 5ab292b..80121ea 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -9394,7 +9394,8 @@ static int wpa_driver_nl80211_driver_cmd(void *priv, char *cmd, char *buf, ret = 0; if ((os_strcasecmp(cmd, "LINKSPEED") == 0) || (os_strcasecmp(cmd, "RSSI") == 0) || - (os_strcasecmp(cmd, "GETBAND") == 0)) + (os_strcasecmp(cmd, "GETBAND") == 0) || + (os_strcasecmp(cmd, "P2P_GET_NOA") == 0)) ret = strlen(buf); wpa_printf(MSG_DEBUG, "%s %s len = %d, %d", __func__, @@ -9420,6 +9421,25 @@ static int wpa_driver_set_p2p_noa(void *priv, u8 count, int start, } +static int wpa_driver_get_p2p_noa(void *priv, u8 *buf, size_t len) +{ + char rbuf[MAX_DRV_CMD_SIZE]; + char *cmd = "P2P_GET_NOA"; + int ret; + + wpa_printf(MSG_DEBUG, "%s: Entry", __func__); + os_memset(buf, 0, len); + ret = wpa_driver_nl80211_driver_cmd(priv, cmd, rbuf, sizeof(rbuf)); + if (ret <= 0) + return 0; + ret >>= 1; + if (ret > (int)len) + ret = (int)len; + hexstr2bin(rbuf, buf, ret); + return ret; +} + + static int wpa_driver_set_ap_wps_p2p_ie(void *priv, const struct wpabuf *beacon, const struct wpabuf *proberesp, @@ -9549,6 +9569,7 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = { .tdls_oper = nl80211_tdls_oper, #endif /* CONFIG_TDLS */ #ifdef ANDROID_BRCM_P2P_PATCH + .get_noa = wpa_driver_get_p2p_noa, .set_noa = wpa_driver_set_p2p_noa, .set_ap_wps_ie = wpa_driver_set_ap_wps_p2p_ie, #endif /* ANDROID_BRCM_P2P_PATCH */ |