mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 06:09:23 -04:00
qcacmn: Set addr_search flags according to vdev opmode
Add support to set addr_search flags in WLAN Tx Descriptor as per vdev operational mode Change-Id: I25fcd4bf450982f8aecc6e91236211c17d5f3f22 CRs-Fixed: 2004658
This commit is contained in:
parent
83e1488870
commit
c9a13a52c8
5 changed files with 45 additions and 13 deletions
|
|
@ -444,6 +444,8 @@ struct cdp_soc_t {
|
|||
enum cdp_vdev_param_type {
|
||||
CDP_ENABLE_NAWDS,
|
||||
CDP_ENABLE_MCAST_EN,
|
||||
CDP_ENABLE_WDS,
|
||||
CDP_ENABLE_PROXYSTA,
|
||||
};
|
||||
|
||||
#define TXRX_FW_STATS_TXSTATS 1
|
||||
|
|
|
|||
|
|
@ -3082,13 +3082,22 @@ static void dp_set_vdev_param(struct cdp_vdev *vdev_handle,
|
|||
struct dp_vdev *vdev = (struct dp_vdev *)vdev_handle;
|
||||
|
||||
switch (param) {
|
||||
case CDP_ENABLE_WDS:
|
||||
vdev->wds_enabled = val;
|
||||
break;
|
||||
case CDP_ENABLE_NAWDS:
|
||||
vdev->nawds_enabled = val;
|
||||
case CDP_ENABLE_MCAST_EN:
|
||||
vdev->mcast_enhancement_en = val;
|
||||
break;
|
||||
case CDP_ENABLE_PROXYSTA:
|
||||
vdev->proxysta_vdev = val;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
dp_tx_vdev_update_search_flags(vdev);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -678,18 +678,8 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
|
|||
if (tx_desc->flags & DP_TX_DESC_FLAG_TO_FW)
|
||||
hal_tx_desc_set_to_fw(hal_tx_desc_cached, 1);
|
||||
|
||||
/*
|
||||
* TODO
|
||||
* For AP mode, enable AddrX flag only
|
||||
* For all other modes, enable both AddrX and AddrY
|
||||
* flags for now
|
||||
*/
|
||||
if (vdev->opmode == wlan_op_mode_ap)
|
||||
hal_tx_desc_set_addr_search_flags(hal_tx_desc_cached,
|
||||
HAL_TX_DESC_ADDRX_EN);
|
||||
else
|
||||
hal_tx_desc_set_addr_search_flags(hal_tx_desc_cached,
|
||||
HAL_TX_DESC_ADDRX_EN | HAL_TX_DESC_ADDRY_EN);
|
||||
hal_tx_desc_set_addr_search_flags(hal_tx_desc_cached,
|
||||
vdev->hal_desc_addr_search_flags);
|
||||
|
||||
if ((qdf_nbuf_get_tx_cksum(tx_desc->nbuf) == QDF_NBUF_TX_CKSUM_TCP_UDP)
|
||||
|| qdf_nbuf_is_tso(tx_desc->nbuf)) {
|
||||
|
|
@ -1973,7 +1963,6 @@ uint32_t dp_tx_comp_handler(struct dp_soc *soc, uint32_t ring_id,
|
|||
*/
|
||||
QDF_STATUS dp_tx_vdev_attach(struct dp_vdev *vdev)
|
||||
{
|
||||
|
||||
/*
|
||||
* Fill HTT TCL Metadata with Vdev ID and MAC ID
|
||||
*/
|
||||
|
|
@ -1991,9 +1980,34 @@ QDF_STATUS dp_tx_vdev_attach(struct dp_vdev *vdev)
|
|||
*/
|
||||
HTT_TX_TCL_METADATA_VALID_HTT_SET(vdev->htt_tcl_metadata, 0);
|
||||
|
||||
dp_tx_vdev_update_search_flags(vdev);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_tx_vdev_update_search_flags() - Update vdev flags as per opmode
|
||||
* @vdev: virtual device instance
|
||||
*
|
||||
* Return: void
|
||||
*
|
||||
*/
|
||||
void dp_tx_vdev_update_search_flags(struct dp_vdev *vdev)
|
||||
{
|
||||
/*
|
||||
* Enable AddrY (SA based search) only for non-WDS STA and
|
||||
* ProxySTA VAP modes.
|
||||
*
|
||||
* In all other VAP modes, only DA based search should be
|
||||
* enabled
|
||||
*/
|
||||
if ((vdev->opmode == wlan_op_mode_sta &&
|
||||
(!vdev->wds_enabled || vdev->proxysta_vdev)))
|
||||
vdev->hal_desc_addr_search_flags = HAL_TX_DESC_ADDRY_EN;
|
||||
else
|
||||
vdev->hal_desc_addr_search_flags = HAL_TX_DESC_ADDRX_EN;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_tx_vdev_detach() - detach vdev from dp tx
|
||||
* @vdev: virtual device instance
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@ struct dp_tx_msdu_info_s {
|
|||
|
||||
QDF_STATUS dp_tx_vdev_attach(struct dp_vdev *vdev);
|
||||
QDF_STATUS dp_tx_vdev_detach(struct dp_vdev *vdev);
|
||||
void dp_tx_vdev_update_search_flags(struct dp_vdev *vdev);
|
||||
|
||||
QDF_STATUS dp_tx_soc_attach(struct dp_soc *soc);
|
||||
QDF_STATUS dp_tx_soc_detach(struct dp_soc *soc);
|
||||
|
|
|
|||
|
|
@ -928,6 +928,12 @@ struct dp_vdev {
|
|||
/* VDEV Stats */
|
||||
struct cdp_vdev_stats stats;
|
||||
bool lro_enable;
|
||||
|
||||
/* Is this a proxySTA VAP */
|
||||
bool proxysta_vdev;
|
||||
|
||||
/* Address search flags to be configured in HAL descriptor */
|
||||
uint8_t hal_desc_addr_search_flags;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue