aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Mitsyanko <igor.mitsyanko.os@quantenna.com>2017-10-30 21:04:52 -0400
committerKalle Valo <kvalo@codeaurora.org>2017-11-09 21:30:57 -0500
commit4d1f0fabdc4515db1b57da2dfdfdeb931cd49e92 (patch)
tree1bee56509811c4d0560ee135ba0ebb16110b157b
parent5face518d4467868e7a82a321955236b2bb65bdc (diff)
qtnfmac: convert "Append IEs" command to QTN_TLV_ID_IE_SET usage
Data contained within "Append IEs" command (QLINK_CMD_MGMT_SET_APPIE) duplicates QTN_TLV_ID_IE_SET TLV. Convert the command to use that TLV instead. Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/cfg80211.c12
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/commands.c17
-rw-r--r--drivers/net/wireless/quantenna/qtnfmac/qlink.h15
3 files changed, 10 insertions, 34 deletions
diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
index 1a0c538a38d2..27b11dc1e6fd 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c
@@ -217,10 +217,10 @@ static int qtnf_mgmt_set_appie(struct qtnf_vif *vif,
217 int ret = 0; 217 int ret = 0;
218 218
219 if (!info->beacon_ies || !info->beacon_ies_len) { 219 if (!info->beacon_ies || !info->beacon_ies_len) {
220 ret = qtnf_cmd_send_mgmt_set_appie(vif, QLINK_MGMT_FRAME_BEACON, 220 ret = qtnf_cmd_send_mgmt_set_appie(vif, QLINK_IE_SET_BEACON_IES,
221 NULL, 0); 221 NULL, 0);
222 } else { 222 } else {
223 ret = qtnf_cmd_send_mgmt_set_appie(vif, QLINK_MGMT_FRAME_BEACON, 223 ret = qtnf_cmd_send_mgmt_set_appie(vif, QLINK_IE_SET_BEACON_IES,
224 info->beacon_ies, 224 info->beacon_ies,
225 info->beacon_ies_len); 225 info->beacon_ies_len);
226 } 226 }
@@ -230,11 +230,11 @@ static int qtnf_mgmt_set_appie(struct qtnf_vif *vif,
230 230
231 if (!info->proberesp_ies || !info->proberesp_ies_len) { 231 if (!info->proberesp_ies || !info->proberesp_ies_len) {
232 ret = qtnf_cmd_send_mgmt_set_appie(vif, 232 ret = qtnf_cmd_send_mgmt_set_appie(vif,
233 QLINK_MGMT_FRAME_PROBE_RESP, 233 QLINK_IE_SET_PROBE_RESP_IES,
234 NULL, 0); 234 NULL, 0);
235 } else { 235 } else {
236 ret = qtnf_cmd_send_mgmt_set_appie(vif, 236 ret = qtnf_cmd_send_mgmt_set_appie(vif,
237 QLINK_MGMT_FRAME_PROBE_RESP, 237 QLINK_IE_SET_PROBE_RESP_IES,
238 info->proberesp_ies, 238 info->proberesp_ies,
239 info->proberesp_ies_len); 239 info->proberesp_ies_len);
240 } 240 }
@@ -244,11 +244,11 @@ static int qtnf_mgmt_set_appie(struct qtnf_vif *vif,
244 244
245 if (!info->assocresp_ies || !info->assocresp_ies_len) { 245 if (!info->assocresp_ies || !info->assocresp_ies_len) {
246 ret = qtnf_cmd_send_mgmt_set_appie(vif, 246 ret = qtnf_cmd_send_mgmt_set_appie(vif,
247 QLINK_MGMT_FRAME_ASSOC_RESP, 247 QLINK_IE_SET_ASSOC_RESP,
248 NULL, 0); 248 NULL, 0);
249 } else { 249 } else {
250 ret = qtnf_cmd_send_mgmt_set_appie(vif, 250 ret = qtnf_cmd_send_mgmt_set_appie(vif,
251 QLINK_MGMT_FRAME_ASSOC_RESP, 251 QLINK_IE_SET_ASSOC_RESP,
252 info->assocresp_ies, 252 info->assocresp_ies,
253 info->assocresp_ies_len); 253 info->assocresp_ies_len);
254 } 254 }
diff --git a/drivers/net/wireless/quantenna/qtnfmac/commands.c b/drivers/net/wireless/quantenna/qtnfmac/commands.c
index 8d3cdba99390..294418c7e59b 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/commands.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/commands.c
@@ -395,11 +395,10 @@ int qtnf_cmd_send_mgmt_set_appie(struct qtnf_vif *vif, u8 frame_type,
395 const u8 *buf, size_t len) 395 const u8 *buf, size_t len)
396{ 396{
397 struct sk_buff *cmd_skb; 397 struct sk_buff *cmd_skb;
398 struct qlink_cmd_mgmt_append_ie *cmd;
399 u16 res_code = QLINK_CMD_RESULT_OK; 398 u16 res_code = QLINK_CMD_RESULT_OK;
400 int ret; 399 int ret;
401 400
402 if (sizeof(*cmd) + len > QTNF_MAX_CMD_BUF_SIZE) { 401 if (len > QTNF_MAX_CMD_BUF_SIZE) {
403 pr_warn("VIF%u.%u: %u frame is too big: %zu\n", vif->mac->macid, 402 pr_warn("VIF%u.%u: %u frame is too big: %zu\n", vif->mac->macid,
404 vif->vifid, frame_type, len); 403 vif->vifid, frame_type, len);
405 return -E2BIG; 404 return -E2BIG;
@@ -407,21 +406,13 @@ int qtnf_cmd_send_mgmt_set_appie(struct qtnf_vif *vif, u8 frame_type,
407 406
408 cmd_skb = qtnf_cmd_alloc_new_cmdskb(vif->mac->macid, vif->vifid, 407 cmd_skb = qtnf_cmd_alloc_new_cmdskb(vif->mac->macid, vif->vifid,
409 QLINK_CMD_MGMT_SET_APPIE, 408 QLINK_CMD_MGMT_SET_APPIE,
410 sizeof(*cmd)); 409 sizeof(struct qlink_cmd));
411 if (unlikely(!cmd_skb)) 410 if (unlikely(!cmd_skb))
412 return -ENOMEM; 411 return -ENOMEM;
413 412
414 qtnf_bus_lock(vif->mac->bus); 413 qtnf_cmd_tlv_ie_set_add(cmd_skb, frame_type, buf, len);
415
416 cmd = (struct qlink_cmd_mgmt_append_ie *)cmd_skb->data;
417 cmd->type = frame_type;
418 cmd->flags = 0;
419 414
420 /* If len == 0 then IE buf for specified frame type 415 qtnf_bus_lock(vif->mac->bus);
421 * should be cleared on EP.
422 */
423 if (len && buf)
424 qtnf_cmd_skb_put_buffer(cmd_skb, buf, len);
425 416
426 ret = qtnf_cmd_send(vif->mac->bus, cmd_skb, &res_code); 417 ret = qtnf_cmd_send(vif->mac->bus, cmd_skb, &res_code);
427 418
diff --git a/drivers/net/wireless/quantenna/qtnfmac/qlink.h b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
index 81effd21075c..43ce45106aad 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/qlink.h
+++ b/drivers/net/wireless/quantenna/qtnfmac/qlink.h
@@ -299,21 +299,6 @@ struct qlink_cmd_mgmt_frame_tx {
299} __packed; 299} __packed;
300 300
301/** 301/**
302 * struct qlink_cmd_mgmt_append_ie - data for QLINK_CMD_MGMT_SET_APPIE command
303 *
304 * @type: type of MGMT frame to appent requested IEs to, one of
305 * &enum qlink_mgmt_frame_type.
306 * @flags: for future use.
307 * @ie_data: IEs data to append.
308 */
309struct qlink_cmd_mgmt_append_ie {
310 struct qlink_cmd chdr;
311 u8 type;
312 u8 flags;
313 u8 ie_data[0];
314} __packed;
315
316/**
317 * struct qlink_cmd_get_sta_info - data for QLINK_CMD_GET_STA_INFO command 302 * struct qlink_cmd_get_sta_info - data for QLINK_CMD_GET_STA_INFO command
318 * 303 *
319 * @sta_addr: MAC address of the STA statistics is requested for. 304 * @sta_addr: MAC address of the STA statistics is requested for.