Debashis Dutt | c4c52dc | 2016-10-04 17:12:23 -0700 | [diff] [blame] | 1 | /* |
Jeff Johnson | 2cb8fc7 | 2016-12-17 10:45:08 -0800 | [diff] [blame] | 2 | * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. |
Debashis Dutt | c4c52dc | 2016-10-04 17:12:23 -0700 | [diff] [blame] | 3 | * |
| 4 | * Permission to use, copy, modify, and/or distribute this software for |
| 5 | * any purpose with or without fee is hereby granted, provided that the |
| 6 | * above copyright notice and this permission notice appear in all |
| 7 | * copies. |
| 8 | * |
| 9 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
| 10 | * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
| 11 | * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
| 12 | * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
| 13 | * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
| 14 | * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
| 15 | * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| 16 | * PERFORMANCE OF THIS SOFTWARE. |
| 17 | */ |
Jeff Johnson | 2cb8fc7 | 2016-12-17 10:45:08 -0800 | [diff] [blame] | 18 | #ifndef _DP_PEER_H_ |
| 19 | #define _DP_PEER_H_ |
Debashis Dutt | c4c52dc | 2016-10-04 17:12:23 -0700 | [diff] [blame] | 20 | |
| 21 | #include <qdf_types.h> |
| 22 | #include <qdf_lock.h> |
| 23 | #include "dp_types.h" |
| 24 | |
| 25 | #define DP_INVALID_PEER_ID 0xffff |
| 26 | |
| 27 | /** |
| 28 | * dp_peer_find_by_id() - Returns peer object given the peer id |
| 29 | * |
| 30 | * @soc : core DP soc context |
| 31 | * @peer_id : peer id from peer object can be retrieved |
| 32 | * |
| 33 | * Return: struct dp_peer*: Pointer to DP peer object |
| 34 | */ |
| 35 | static inline struct dp_peer * |
| 36 | dp_peer_find_by_id(struct dp_soc *soc, |
| 37 | uint16_t peer_id) |
| 38 | { |
| 39 | struct dp_peer *peer; |
| 40 | |
| 41 | /* TODO: Hold lock */ |
| 42 | peer = (peer_id >= soc->max_peers) ? NULL : |
| 43 | soc->peer_id_to_obj_map[peer_id]; |
| 44 | |
| 45 | return peer; |
| 46 | } |
Jeff Johnson | 2cb8fc7 | 2016-12-17 10:45:08 -0800 | [diff] [blame] | 47 | |
| 48 | void dp_rx_peer_map_handler(void *soc_handle, uint16_t peer_id, |
| 49 | uint8_t vdev_id, uint8_t *peer_mac_addr); |
| 50 | void dp_rx_peer_unmap_handler(void *soc_handle, uint16_t peer_id); |
| 51 | void dp_rx_sec_ind_handler(void *soc_handle, uint16_t peer_id, |
| 52 | enum htt_sec_type sec_type, int is_unicast, |
| 53 | u_int32_t *michael_key, u_int32_t *rx_pn); |
Ishank Jain | 1e7401c | 2017-02-17 15:38:39 +0530 | [diff] [blame] | 54 | uint8_t dp_get_peer_mac_addr_frm_id(struct cdp_soc_t *soc_handle, |
| 55 | uint16_t peer_id, uint8_t *peer_mac); |
Jeff Johnson | 2cb8fc7 | 2016-12-17 10:45:08 -0800 | [diff] [blame] | 56 | |
Pramod Simha | b17d067 | 2017-03-06 17:20:13 -0800 | [diff] [blame^] | 57 | #ifdef DP_LFR |
| 58 | /* |
| 59 | * dp_get_vdev_from_soc_vdev_id_wifi3() - |
| 60 | * Returns vdev object given the vdev id |
| 61 | * vdev id is unique across pdev's |
| 62 | * |
| 63 | * @soc : core DP soc context |
| 64 | * @vdev_id : vdev id from vdev object can be retrieved |
| 65 | * |
| 66 | * Return: struct dp_vdev*: Pointer to DP vdev object |
| 67 | */ |
| 68 | static inline struct dp_vdev * |
| 69 | dp_get_vdev_from_soc_vdev_id_wifi3(struct dp_soc *soc, |
| 70 | uint8_t vdev_id) |
| 71 | { |
| 72 | struct dp_pdev *pdev = NULL; |
| 73 | struct dp_vdev *vdev = NULL; |
| 74 | int i; |
| 75 | |
| 76 | for (i = 0; i < MAX_PDEV_CNT && soc->pdev_list[i]; i++) { |
| 77 | pdev = soc->pdev_list[i]; |
| 78 | TAILQ_FOREACH(vdev, &pdev->vdev_list, vdev_list_elem) { |
| 79 | if (vdev->vdev_id == vdev_id) { |
| 80 | QDF_TRACE(QDF_MODULE_ID_DP, |
| 81 | QDF_TRACE_LEVEL_INFO, |
| 82 | FL("Found vdev 0x%p on pdev %d\n"), |
| 83 | vdev, i); |
| 84 | return vdev; |
| 85 | } |
| 86 | } |
| 87 | } |
| 88 | return NULL; |
| 89 | |
| 90 | } |
| 91 | #endif |
Jeff Johnson | 2cb8fc7 | 2016-12-17 10:45:08 -0800 | [diff] [blame] | 92 | #endif /* _DP_PEER_H_ */ |