mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-11-09 04:12:08 -05:00
qcacmn: WEP bit set for RAW Mode Workaround
Set WEP bit for protection disabled VAP, to avoid Hardware crash Change-Id: I4121d04de9465e07aae2ba24930b1045fb8addf8 CRs-Fixed: 2132317
This commit is contained in:
parent
283a2f4221
commit
45f3ac45c9
4 changed files with 27 additions and 3 deletions
|
|
@ -549,6 +549,7 @@ enum cdp_pdev_param_type {
|
|||
* @CDP_ENABLE_PROXYSTA: proxy sta
|
||||
* @CDP_UPDATE_TDLS_FLAGS: tdls link flags
|
||||
* @CDP_ENABLE_AP_BRIDGE: set ap_bridging enable/disable
|
||||
* @CDP_ENABLE_CIPHER : set cipher type based on security
|
||||
*/
|
||||
enum cdp_vdev_param_type {
|
||||
CDP_ENABLE_NAWDS,
|
||||
|
|
@ -558,6 +559,7 @@ enum cdp_vdev_param_type {
|
|||
CDP_UPDATE_TDLS_FLAGS,
|
||||
CDP_CFG_WDS_AGING_TIMER,
|
||||
CDP_ENABLE_AP_BRIDGE,
|
||||
CDP_ENABLE_CIPHER
|
||||
};
|
||||
|
||||
#define TXRX_FW_STATS_TXSTATS 1
|
||||
|
|
|
|||
|
|
@ -2726,6 +2726,7 @@ static struct cdp_vdev *dp_vdev_attach_wifi3(struct cdp_pdev *txrx_pdev,
|
|||
vdev->delete.pending = 0;
|
||||
vdev->safemode = 0;
|
||||
vdev->drop_unenc = 1;
|
||||
vdev->sec_type = cdp_sec_type_none;
|
||||
#ifdef notyet
|
||||
vdev->filters_num = 0;
|
||||
#endif
|
||||
|
|
@ -4817,6 +4818,9 @@ static void dp_set_vdev_param(struct cdp_vdev *vdev_handle,
|
|||
else
|
||||
vdev->ap_bridge_enabled = false;
|
||||
break;
|
||||
case CDP_ENABLE_CIPHER:
|
||||
vdev->sec_type = val;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,22 @@
|
|||
/* invalid peer id for reinject*/
|
||||
#define DP_INVALID_PEER 0XFFFE
|
||||
|
||||
/*mapping between hal encrypt type and cdp_sec_type*/
|
||||
#define MAX_CDP_SEC_TYPE 12
|
||||
static const uint8_t sec_type_map[MAX_CDP_SEC_TYPE] = {
|
||||
HAL_TX_ENCRYPT_TYPE_NO_CIPHER,
|
||||
HAL_TX_ENCRYPT_TYPE_WEP_128,
|
||||
HAL_TX_ENCRYPT_TYPE_WEP_104,
|
||||
HAL_TX_ENCRYPT_TYPE_WEP_40,
|
||||
HAL_TX_ENCRYPT_TYPE_TKIP_WITH_MIC,
|
||||
HAL_TX_ENCRYPT_TYPE_TKIP_NO_MIC,
|
||||
HAL_TX_ENCRYPT_TYPE_AES_CCMP_128,
|
||||
HAL_TX_ENCRYPT_TYPE_WAPI,
|
||||
HAL_TX_ENCRYPT_TYPE_AES_CCMP_256,
|
||||
HAL_TX_ENCRYPT_TYPE_AES_GCMP_128,
|
||||
HAL_TX_ENCRYPT_TYPE_AES_GCMP_256,
|
||||
HAL_TX_ENCRYPT_TYPE_WAPI_GCM_SM4};
|
||||
|
||||
/**
|
||||
* dp_tx_get_queue() - Returns Tx queue IDs to be used for this Tx frame
|
||||
* @vdev: DP Virtual device handle
|
||||
|
|
@ -716,10 +732,8 @@ static qdf_nbuf_t dp_tx_prepare_raw(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||
DP_STATS_INC_PKT(vdev, tx_i.raw.raw_pkt, 1, qdf_nbuf_len(nbuf));
|
||||
|
||||
/* SWAR for HW: Enable WEP bit in the AMSDU frames for RAW mode */
|
||||
if ((qos_wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_QOS)
|
||||
&& (qos_wh->i_qos[0] & IEEE80211_QOS_AMSDU)) {
|
||||
if (qos_wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_QOS)
|
||||
qos_wh->i_fc[1] |= IEEE80211_FC1_WEP;
|
||||
}
|
||||
|
||||
if (QDF_STATUS_SUCCESS != qdf_nbuf_map(vdev->osdev, nbuf,
|
||||
QDF_DMA_TO_DEVICE)) {
|
||||
|
|
@ -800,6 +814,8 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
|
|||
hal_tx_desc_set_encap_type(hal_tx_desc_cached, tx_desc->tx_encap_type);
|
||||
hal_tx_desc_set_dscp_tid_table_id(hal_tx_desc_cached,
|
||||
vdev->dscp_tid_map_id);
|
||||
hal_tx_desc_set_encrypt_type(hal_tx_desc_cached,
|
||||
sec_type_map[vdev->sec_type]);
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
||||
"%s length:%d , type = %d, dma_addr %llx, offset %d desc id %u",
|
||||
|
|
|
|||
|
|
@ -1192,6 +1192,8 @@ struct dp_vdev {
|
|||
/* AP BRIDGE enabled */
|
||||
uint32_t ap_bridge_enabled;
|
||||
|
||||
enum cdp_sec_type sec_type;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue