From c82dfa7ec4bc7bd58c865ee9aff837be2a8f513d Mon Sep 17 00:00:00 2001 From: "Padma, Santhosh Kumar" Date: Mon, 16 May 2016 15:25:58 +0530 Subject: qcacld-2.0: Set non-zero aggregation size Currently aggregation sizes are passed to fw as they are received from user application. Add check to send aggregation sizes that are in permissible range. Change-Id: I65cd6b63bae277d58bae4d4c3fe2d6f003ccd177 CRs-Fixed: 1016732 --- CORE/HDD/src/wlan_hdd_cfg80211.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index 427401f0fef6..1e40d7fe4af7 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -8550,12 +8550,27 @@ static int __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy, tb[QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION]); request.vdev_id = pAdapter->sessionId; - vos_status = wma_set_tx_rx_aggregation_size(&request); - if (vos_status != VOS_STATUS_SUCCESS) { + if (request.tx_aggregation_size >= + CFG_TX_AGGREGATION_SIZE_MIN && + request.tx_aggregation_size <= + CFG_TX_AGGREGATION_SIZE_MAX && + request.rx_aggregation_size >= + CFG_RX_AGGREGATION_SIZE_MIN && + request.rx_aggregation_size <= + CFG_RX_AGGREGATION_SIZE_MAX) { + vos_status = wma_set_tx_rx_aggregation_size(&request); + if (vos_status != VOS_STATUS_SUCCESS) { + hddLog(LOGE, + FL("failed to set aggr sizes err %d"), + vos_status); + ret_val = -EPERM; + } + } else { hddLog(LOGE, - FL("failed to set aggregation sizes(err=%d)"), - vos_status); - ret_val = -EPERM; + FL("TX %d RX %d MPDU aggr size not in range"), + request.tx_aggregation_size, + request.rx_aggregation_size); + ret_val = -EINVAL; } } return ret_val; -- cgit v1.2.3