From f2110a8cdf1854f3616d6f1d9f2a1aa7d31ee86c Mon Sep 17 00:00:00 2001 From: Pavankumar Nandeshwar Date: Sun, 29 Sep 2019 16:03:21 +0530 Subject: [PATCH] qca-wifi: Decoupling changes for stats, wds, raw and pflow ops Corresponding changes in datapath for changes in interface APIs for stats, wds, raw, pflow ops. Change-Id: I04b595bbe52d8871573b4f6c811d5555659f7d47 --- dp/wifi3.0/dp_txrx_wds.c | 35 ++++++++++++++++++++++++++++------- dp/wifi3.0/dp_txrx_wds.h | 7 ++++--- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/dp/wifi3.0/dp_txrx_wds.c b/dp/wifi3.0/dp_txrx_wds.c index 30e3ec9380..c610026200 100644 --- a/dp/wifi3.0/dp_txrx_wds.c +++ b/dp/wifi3.0/dp_txrx_wds.c @@ -231,17 +231,25 @@ void dp_tx_mec_handler(struct dp_vdev *vdev, uint8_t *status) /** * dp_txrx_set_wds_rx_policy() - API to store datapath * config parameters - * @vdev_handle - datapath vdev handle + * @soc - datapath soc handle + * @vdev_id - id of datapath vdev handle * @cfg: ini parameter handle * * Return: status */ #ifdef WDS_VENDOR_EXTENSION void -dp_txrx_set_wds_rx_policy(struct cdp_vdev *vdev_handle, u_int32_t val) +dp_txrx_set_wds_rx_policy(struct cdp_soc_t *soc, uint8_t vdev_id, u_int32_t val) { - struct dp_vdev *vdev = (struct dp_vdev *)vdev_handle; struct dp_peer *peer; + struct dp_vdev *vdev = + dp_get_vdev_from_soc_vdev_id_wifi3((struct dp_soc *)soc, + vdev_id); + if (!vdev) { + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, + FL("vdev is NULL for vdev_id %d"), vdev_id); + return; + } if (vdev->opmode == wlan_op_mode_ap) { /* for ap, set it on bss_peer */ @@ -270,17 +278,28 @@ dp_txrx_set_wds_rx_policy(struct cdp_vdev *vdev_handle, u_int32_t val) /** * dp_txrx_peer_wds_tx_policy_update() - API to set tx wds policy * - * @peer_handle - datapath peer handle + * @cdp_soc: DP soc handle + * @vdev_id: id of vdev handle + * @peer_mac: peer mac address * @wds_tx_ucast: policy for unicast transmission * @wds_tx_mcast: policy for multicast transmission * * Return: void */ void -dp_txrx_peer_wds_tx_policy_update(struct cdp_peer *peer_handle, - int wds_tx_ucast, int wds_tx_mcast) +dp_txrx_peer_wds_tx_policy_update(struct cdp_soc_t *soc, uint8_t vdev_id, + uint8_t *peer_mac, int wds_tx_ucast, + int wds_tx_mcast) { - struct dp_peer *peer = (struct dp_peer *)peer_handle; + struct dp_peer *peer = dp_peer_find_hash_find((struct dp_soc *)soc, + peer_mac, 0, + vdev_id); + if (!peer) { + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, + FL("peer is NULL for mac %pM vdev_id %d"), + peer_mac, vdev_id); + return; + } if (wds_tx_ucast || wds_tx_mcast) { peer->wds_enabled = 1; @@ -302,6 +321,8 @@ dp_txrx_peer_wds_tx_policy_update(struct cdp_peer *peer_handle, QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO, "peer->wds_ecm.wds_tx_mcast_4addr %d\n", peer->wds_ecm.wds_tx_mcast_4addr); + + dp_peer_unref_delete(peer); } int dp_wds_rx_policy_check(uint8_t *rx_tlv_hdr, diff --git a/dp/wifi3.0/dp_txrx_wds.h b/dp/wifi3.0/dp_txrx_wds.h index 7e27488490..e974627ade 100644 --- a/dp/wifi3.0/dp_txrx_wds.h +++ b/dp/wifi3.0/dp_txrx_wds.h @@ -54,10 +54,11 @@ static inline bool dp_tx_da_search_override(struct dp_vdev *vdev) #endif #ifdef WDS_VENDOR_EXTENSION void -dp_txrx_peer_wds_tx_policy_update(struct cdp_peer *peer_handle, - int wds_tx_ucast, int wds_tx_mcast); +dp_txrx_peer_wds_tx_policy_update(struct cdp_soc_t *cdp_soc, uint8_t vdev_id, + uint8_t *peer_mac, int wds_tx_ucast, + int wds_tx_mcast) void -dp_txrx_set_wds_rx_policy(struct cdp_vdev *vdev_handle, +dp_txrx_set_wds_rx_policy(struct cdp_soc_t *cdp_soc, uint8_t vdev_id, u_int32_t val); #endif