1 /* 2 * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. 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 */ 18 19 /** 20 * DOC: This target interface shall be used by DP 21 * to communicate with target using WMI. 22 */ 23 24 #ifndef _WLAN_TARGET_IF_DP_H_ 25 #define _WLAN_TARGET_IF_DP_H_ 26 27 #include <qdf_types.h> 28 #include <qdf_status.h> 29 #include <wmi_unified_priv.h> 30 #include <wlan_objmgr_psoc_obj.h> 31 #include <target_if.h> 32 #include <cdp_txrx_ops.h> 33 34 /** 35 * struct reorder_q_setup - reorder queue setup params 36 * @psoc: psoc 37 * @vdev_id: vdev id 38 * @pdev_id: pdev id 39 * @peer_macaddr: peer mac address 40 * @hw_qdesc: hw queue descriptor 41 * @tid: tid number 42 * @queue_no: queue number 43 * @ba_window_size_valid: BA window size validity flag 44 * @ba_window_size: BA window size 45 */ 46 struct reorder_q_setup { 47 struct cdp_ctrl_objmgr_psoc *psoc; 48 uint8_t vdev_id; 49 uint8_t pdev_id; 50 uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; 51 qdf_dma_addr_t hw_qdesc_paddr; 52 uint8_t tid; 53 uint16_t queue_no; 54 uint8_t ba_window_size_valid; 55 uint16_t ba_window_size; 56 }; 57 58 /** 59 * target_if_peer_set_default_routing() - set peer default routing 60 * @psoc: psoc pointer 61 * @pdev_id: pdev id 62 * @peer_macaddr: peer mac address 63 * @vdev_id: vdev id 64 * @hash_based: hash based routing 65 * @ring_num: ring number 66 * 67 * return: void 68 */ 69 void 70 target_if_peer_set_default_routing(struct cdp_ctrl_objmgr_psoc *psoc, 71 uint8_t pdev_id, 72 uint8_t *peer_macaddr, uint8_t vdev_id, 73 bool hash_based, uint8_t ring_num); 74 /** 75 * target_if_peer_rx_reorder_queue_setup() - setup rx reorder queue 76 * @pdev: pdev pointer 77 * @pdev_id: pdev id 78 * @vdev_id: vdev id 79 * @peer_macaddr: peer mac address 80 * @hw_qdesc: hw queue descriptor 81 * @tid: tid number 82 * @queue_no: queue number 83 * @ba_window_size_valid: BA window size validity flag 84 * @ba_window_size: BA window size 85 * 86 * return: QDF_STATUS_SUCCESS for success or error code 87 */ 88 QDF_STATUS 89 target_if_peer_rx_reorder_queue_setup(struct cdp_ctrl_objmgr_psoc *psoc, 90 uint8_t pdev_id, 91 uint8_t vdev_id, uint8_t *peer_macaddr, 92 qdf_dma_addr_t hw_qdesc, int tid, 93 uint16_t queue_no, 94 uint8_t ba_window_size_valid, 95 uint16_t ba_window_size); 96 97 /** 98 * target_if_peer_rx_reorder_queue_remove() - remove rx reorder queue 99 * @psoc: psoc pointer 100 * @pdev_id: pdev id 101 * @vdev_id: vdev id 102 * @peer_macaddr: peer mac address 103 * @peer_tid_bitmap: peer tid bitmap 104 * 105 * return: QDF_STATUS_SUCCESS for success or error code 106 */ 107 QDF_STATUS 108 target_if_peer_rx_reorder_queue_remove(struct cdp_ctrl_objmgr_psoc *psoc, 109 uint8_t pdev_id, 110 uint8_t vdev_id, uint8_t *peer_macaddr, 111 uint32_t peer_tid_bitmap); 112 113 /** 114 * target_if_lro_hash_config() - send LRO hash config to FW 115 * @psoc_handle: psoc handle pointer 116 * @lro_hash_cfg: LRO hash config parameters 117 * 118 * return: QDF_STATUS_SUCCESS for success or error code 119 */ 120 QDF_STATUS 121 target_if_lro_hash_config(struct cdp_ctrl_objmgr_psoc *psoc, uint8_t pdev_id, 122 struct cdp_lro_hash_config *lro_hash_cfg); 123 124 #endif 125