Loading dp/inc/cdp_txrx_cmn.h +28 −0 Original line number Diff line number Diff line /* * Copyright (c) 2011-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -694,6 +695,33 @@ cdp_peer_delete(ol_txrx_soc_handle soc, uint8_t vdev_id, soc->ops->cmn_drv_ops->txrx_peer_delete(soc, vdev_id, peer_mac, bitmap); } #ifdef DP_RX_UDP_OVER_PEER_ROAM static inline void cdp_update_roaming_peer_in_vdev(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac, uint32_t auth_status) { if (!soc || !soc->ops) { QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, "%s: Invalid Instance:", __func__); QDF_BUG(0); return; } if (!soc->ops->cmn_drv_ops || !soc->ops->cmn_drv_ops->txrx_update_roaming_peer) return; soc->ops->cmn_drv_ops->txrx_update_roaming_peer(soc, vdev_id, peer_mac, auth_status); } #else static inline void cdp_update_roaming_peer_in_vdev(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac, uint32_t auth_status) { } #endif /** * cdp_peer_detach_sync() - peer detach sync callback * @soc: datapath soc handle Loading dp/inc/cdp_txrx_ops.h +7 −0 Original line number Diff line number Diff line Loading @@ -558,6 +558,13 @@ struct cdp_cmn_ops { QDF_STATUS (*set_vdev_pcp_tid_map)(struct cdp_soc_t *soc, uint8_t vdev_id, uint8_t pcp, uint8_t tid); #ifdef DP_RX_UDP_OVER_PEER_ROAM QDF_STATUS (*txrx_update_roaming_peer)(struct cdp_soc_t *soc, uint8_t vdev_id, uint8_t *peer_mac, uint32_t auth_status); #endif #ifdef QCA_MULTIPASS_SUPPORT QDF_STATUS (*set_vlan_groupkey)(struct cdp_soc_t *soc, uint8_t vdev_id, uint16_t vlan_id, uint16_t group_key); Loading dp/wifi3.0/dp_htt.c +6 −0 Original line number Diff line number Diff line Loading @@ -4709,6 +4709,12 @@ static void dp_htt_t2h_msg_handler(void *context, HTC_PACKET *pkt) peer->mac_addr.raw, peer->vdev->vdev_id, 0, tid, 0, win_sz + 1, 0xffff); dp_addba_resp_tx_completion_wifi3( (struct cdp_soc_t *)soc->dp_soc, peer->mac_addr.raw, peer->vdev->vdev_id, tid, status); /* * If PEER_LOCK_REF_PROTECT enbled dec ref * which is inc by dp_peer_get_ref_by_id Loading dp/wifi3.0/dp_main.c +23 −0 Original line number Diff line number Diff line Loading @@ -7267,6 +7267,26 @@ static QDF_STATUS dp_peer_delete_wifi3(struct cdp_soc_t *soc_hdl, return QDF_STATUS_SUCCESS; } #ifdef DP_RX_UDP_OVER_PEER_ROAM static QDF_STATUS dp_update_roaming_peer_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id, uint8_t *peer_mac, uint32_t auth_status) { struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl); struct dp_vdev *vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_CDP); if (!vdev) return QDF_STATUS_E_FAILURE; vdev->roaming_peer_status = auth_status; qdf_mem_copy(vdev->roaming_peer_mac.raw, peer_mac, QDF_MAC_ADDR_SIZE); dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP); return QDF_STATUS_SUCCESS; } #endif /* * dp_get_vdev_mac_addr_wifi3() – Detach txrx peer * @soc_hdl: Datapath soc handle Loading Loading @@ -11332,6 +11352,9 @@ static struct cdp_cmn_ops dp_ops_cmn = { .txrx_peer_ast_delete_by_pdev = dp_peer_ast_entry_del_by_pdev, .txrx_peer_delete = dp_peer_delete_wifi3, #ifdef DP_RX_UDP_OVER_PEER_ROAM .txrx_update_roaming_peer = dp_update_roaming_peer_wifi3, #endif .txrx_vdev_register = dp_vdev_register_wifi3, .txrx_soc_detach = dp_soc_detach_wifi3, .txrx_soc_deinit = dp_soc_deinit_wifi3, Loading dp/wifi3.0/dp_peer.c +22 −0 Original line number Diff line number Diff line Loading @@ -2095,6 +2095,26 @@ static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc, return NULL; } #ifdef DP_RX_UDP_OVER_PEER_ROAM void dp_rx_reset_roaming_peer(struct dp_soc *soc, uint8_t vdev_id, uint8_t *peer_mac_addr) { struct dp_vdev *vdev = NULL; vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_HTT); if (vdev) { if (qdf_mem_cmp(vdev->roaming_peer_mac.raw, peer_mac_addr, QDF_MAC_ADDR_SIZE) == 0) { vdev->roaming_peer_status = WLAN_ROAM_PEER_AUTH_STATUS_NONE; qdf_mem_zero(vdev->roaming_peer_mac.raw, QDF_MAC_ADDR_SIZE); } dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_HTT); } } #endif /** * dp_rx_peer_map_handler() - handle peer map event from firmware * @soc_handle - genereic soc handle Loading Loading @@ -2188,6 +2208,8 @@ dp_rx_peer_map_handler(struct dp_soc *soc, uint16_t peer_id, vdev_id, ast_hash, is_wds); } dp_rx_reset_roaming_peer(soc, vdev_id, peer_mac_addr); return err; } Loading Loading
dp/inc/cdp_txrx_cmn.h +28 −0 Original line number Diff line number Diff line /* * Copyright (c) 2011-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the Loading Loading @@ -694,6 +695,33 @@ cdp_peer_delete(ol_txrx_soc_handle soc, uint8_t vdev_id, soc->ops->cmn_drv_ops->txrx_peer_delete(soc, vdev_id, peer_mac, bitmap); } #ifdef DP_RX_UDP_OVER_PEER_ROAM static inline void cdp_update_roaming_peer_in_vdev(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac, uint32_t auth_status) { if (!soc || !soc->ops) { QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG, "%s: Invalid Instance:", __func__); QDF_BUG(0); return; } if (!soc->ops->cmn_drv_ops || !soc->ops->cmn_drv_ops->txrx_update_roaming_peer) return; soc->ops->cmn_drv_ops->txrx_update_roaming_peer(soc, vdev_id, peer_mac, auth_status); } #else static inline void cdp_update_roaming_peer_in_vdev(ol_txrx_soc_handle soc, uint8_t vdev_id, uint8_t *peer_mac, uint32_t auth_status) { } #endif /** * cdp_peer_detach_sync() - peer detach sync callback * @soc: datapath soc handle Loading
dp/inc/cdp_txrx_ops.h +7 −0 Original line number Diff line number Diff line Loading @@ -558,6 +558,13 @@ struct cdp_cmn_ops { QDF_STATUS (*set_vdev_pcp_tid_map)(struct cdp_soc_t *soc, uint8_t vdev_id, uint8_t pcp, uint8_t tid); #ifdef DP_RX_UDP_OVER_PEER_ROAM QDF_STATUS (*txrx_update_roaming_peer)(struct cdp_soc_t *soc, uint8_t vdev_id, uint8_t *peer_mac, uint32_t auth_status); #endif #ifdef QCA_MULTIPASS_SUPPORT QDF_STATUS (*set_vlan_groupkey)(struct cdp_soc_t *soc, uint8_t vdev_id, uint16_t vlan_id, uint16_t group_key); Loading
dp/wifi3.0/dp_htt.c +6 −0 Original line number Diff line number Diff line Loading @@ -4709,6 +4709,12 @@ static void dp_htt_t2h_msg_handler(void *context, HTC_PACKET *pkt) peer->mac_addr.raw, peer->vdev->vdev_id, 0, tid, 0, win_sz + 1, 0xffff); dp_addba_resp_tx_completion_wifi3( (struct cdp_soc_t *)soc->dp_soc, peer->mac_addr.raw, peer->vdev->vdev_id, tid, status); /* * If PEER_LOCK_REF_PROTECT enbled dec ref * which is inc by dp_peer_get_ref_by_id Loading
dp/wifi3.0/dp_main.c +23 −0 Original line number Diff line number Diff line Loading @@ -7267,6 +7267,26 @@ static QDF_STATUS dp_peer_delete_wifi3(struct cdp_soc_t *soc_hdl, return QDF_STATUS_SUCCESS; } #ifdef DP_RX_UDP_OVER_PEER_ROAM static QDF_STATUS dp_update_roaming_peer_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id, uint8_t *peer_mac, uint32_t auth_status) { struct dp_soc *soc = cdp_soc_t_to_dp_soc(soc_hdl); struct dp_vdev *vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_CDP); if (!vdev) return QDF_STATUS_E_FAILURE; vdev->roaming_peer_status = auth_status; qdf_mem_copy(vdev->roaming_peer_mac.raw, peer_mac, QDF_MAC_ADDR_SIZE); dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_CDP); return QDF_STATUS_SUCCESS; } #endif /* * dp_get_vdev_mac_addr_wifi3() – Detach txrx peer * @soc_hdl: Datapath soc handle Loading Loading @@ -11332,6 +11352,9 @@ static struct cdp_cmn_ops dp_ops_cmn = { .txrx_peer_ast_delete_by_pdev = dp_peer_ast_entry_del_by_pdev, .txrx_peer_delete = dp_peer_delete_wifi3, #ifdef DP_RX_UDP_OVER_PEER_ROAM .txrx_update_roaming_peer = dp_update_roaming_peer_wifi3, #endif .txrx_vdev_register = dp_vdev_register_wifi3, .txrx_soc_detach = dp_soc_detach_wifi3, .txrx_soc_deinit = dp_soc_deinit_wifi3, Loading
dp/wifi3.0/dp_peer.c +22 −0 Original line number Diff line number Diff line Loading @@ -2095,6 +2095,26 @@ static inline struct dp_peer *dp_peer_find_add_id(struct dp_soc *soc, return NULL; } #ifdef DP_RX_UDP_OVER_PEER_ROAM void dp_rx_reset_roaming_peer(struct dp_soc *soc, uint8_t vdev_id, uint8_t *peer_mac_addr) { struct dp_vdev *vdev = NULL; vdev = dp_vdev_get_ref_by_id(soc, vdev_id, DP_MOD_ID_HTT); if (vdev) { if (qdf_mem_cmp(vdev->roaming_peer_mac.raw, peer_mac_addr, QDF_MAC_ADDR_SIZE) == 0) { vdev->roaming_peer_status = WLAN_ROAM_PEER_AUTH_STATUS_NONE; qdf_mem_zero(vdev->roaming_peer_mac.raw, QDF_MAC_ADDR_SIZE); } dp_vdev_unref_delete(soc, vdev, DP_MOD_ID_HTT); } } #endif /** * dp_rx_peer_map_handler() - handle peer map event from firmware * @soc_handle - genereic soc handle Loading Loading @@ -2188,6 +2208,8 @@ dp_rx_peer_map_handler(struct dp_soc *soc, uint16_t peer_id, vdev_id, ast_hash, is_wds); } dp_rx_reset_roaming_peer(soc, vdev_id, peer_mac_addr); return err; } Loading