diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/htt_tx.c')
-rw-r--r-- | drivers/net/wireless/ath/ath10k/htt_tx.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath10k/htt_tx.c b/drivers/net/wireless/ath/ath10k/htt_tx.c index 7064354d1f4f..accb6b4f6faf 100644 --- a/drivers/net/wireless/ath/ath10k/htt_tx.c +++ b/drivers/net/wireless/ath/ath10k/htt_tx.c | |||
@@ -307,6 +307,52 @@ int ath10k_htt_send_rx_ring_cfg_ll(struct ath10k_htt *htt) | |||
307 | return 0; | 307 | return 0; |
308 | } | 308 | } |
309 | 309 | ||
310 | int ath10k_htt_h2t_aggr_cfg_msg(struct ath10k_htt *htt, | ||
311 | u8 max_subfrms_ampdu, | ||
312 | u8 max_subfrms_amsdu) | ||
313 | { | ||
314 | struct htt_aggr_conf *aggr_conf; | ||
315 | struct sk_buff *skb; | ||
316 | struct htt_cmd *cmd; | ||
317 | int len; | ||
318 | int ret; | ||
319 | |||
320 | /* Firmware defaults are: amsdu = 3 and ampdu = 64 */ | ||
321 | |||
322 | if (max_subfrms_ampdu == 0 || max_subfrms_ampdu > 64) | ||
323 | return -EINVAL; | ||
324 | |||
325 | if (max_subfrms_amsdu == 0 || max_subfrms_amsdu > 31) | ||
326 | return -EINVAL; | ||
327 | |||
328 | len = sizeof(cmd->hdr); | ||
329 | len += sizeof(cmd->aggr_conf); | ||
330 | |||
331 | skb = ath10k_htc_alloc_skb(len); | ||
332 | if (!skb) | ||
333 | return -ENOMEM; | ||
334 | |||
335 | skb_put(skb, len); | ||
336 | cmd = (struct htt_cmd *)skb->data; | ||
337 | cmd->hdr.msg_type = HTT_H2T_MSG_TYPE_AGGR_CFG; | ||
338 | |||
339 | aggr_conf = &cmd->aggr_conf; | ||
340 | aggr_conf->max_num_ampdu_subframes = max_subfrms_ampdu; | ||
341 | aggr_conf->max_num_amsdu_subframes = max_subfrms_amsdu; | ||
342 | |||
343 | ath10k_dbg(ATH10K_DBG_HTT, "htt h2t aggr cfg msg amsdu %d ampdu %d", | ||
344 | aggr_conf->max_num_amsdu_subframes, | ||
345 | aggr_conf->max_num_ampdu_subframes); | ||
346 | |||
347 | ret = ath10k_htc_send(&htt->ar->htc, htt->eid, skb); | ||
348 | if (ret) { | ||
349 | dev_kfree_skb_any(skb); | ||
350 | return ret; | ||
351 | } | ||
352 | |||
353 | return 0; | ||
354 | } | ||
355 | |||
310 | int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *msdu) | 356 | int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *msdu) |
311 | { | 357 | { |
312 | struct device *dev = htt->ar->dev; | 358 | struct device *dev = htt->ar->dev; |