1fe56b9e6SYuval Mintz /* QLogic qed NIC Driver 2e8f1cb50SMintz, Yuval * Copyright (c) 2015-2017 QLogic Corporation 3fe56b9e6SYuval Mintz * 4e8f1cb50SMintz, Yuval * This software is available to you under a choice of one of two 5e8f1cb50SMintz, Yuval * licenses. You may choose to be licensed under the terms of the GNU 6e8f1cb50SMintz, Yuval * General Public License (GPL) Version 2, available from the file 7e8f1cb50SMintz, Yuval * COPYING in the main directory of this source tree, or the 8e8f1cb50SMintz, Yuval * OpenIB.org BSD license below: 9e8f1cb50SMintz, Yuval * 10e8f1cb50SMintz, Yuval * Redistribution and use in source and binary forms, with or 11e8f1cb50SMintz, Yuval * without modification, are permitted provided that the following 12e8f1cb50SMintz, Yuval * conditions are met: 13e8f1cb50SMintz, Yuval * 14e8f1cb50SMintz, Yuval * - Redistributions of source code must retain the above 15e8f1cb50SMintz, Yuval * copyright notice, this list of conditions and the following 16e8f1cb50SMintz, Yuval * disclaimer. 17e8f1cb50SMintz, Yuval * 18e8f1cb50SMintz, Yuval * - Redistributions in binary form must reproduce the above 19e8f1cb50SMintz, Yuval * copyright notice, this list of conditions and the following 20e8f1cb50SMintz, Yuval * disclaimer in the documentation and /or other materials 21e8f1cb50SMintz, Yuval * provided with the distribution. 22e8f1cb50SMintz, Yuval * 23e8f1cb50SMintz, Yuval * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24e8f1cb50SMintz, Yuval * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25e8f1cb50SMintz, Yuval * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26e8f1cb50SMintz, Yuval * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27e8f1cb50SMintz, Yuval * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28e8f1cb50SMintz, Yuval * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29e8f1cb50SMintz, Yuval * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30e8f1cb50SMintz, Yuval * SOFTWARE. 31fe56b9e6SYuval Mintz */ 32fe56b9e6SYuval Mintz 33fe56b9e6SYuval Mintz #ifndef _QED_DEV_API_H 34fe56b9e6SYuval Mintz #define _QED_DEV_API_H 35fe56b9e6SYuval Mintz 36fe56b9e6SYuval Mintz #include <linux/types.h> 37fe56b9e6SYuval Mintz #include <linux/kernel.h> 38fe56b9e6SYuval Mintz #include <linux/slab.h> 39fe56b9e6SYuval Mintz #include <linux/qed/qed_chain.h> 40fe56b9e6SYuval Mintz #include <linux/qed/qed_if.h> 41fe56b9e6SYuval Mintz #include "qed_int.h" 42fe56b9e6SYuval Mintz 43fe56b9e6SYuval Mintz /** 44fe56b9e6SYuval Mintz * @brief qed_init_dp - initialize the debug level 45fe56b9e6SYuval Mintz * 46fe56b9e6SYuval Mintz * @param cdev 47fe56b9e6SYuval Mintz * @param dp_module 48fe56b9e6SYuval Mintz * @param dp_level 49fe56b9e6SYuval Mintz */ 50fe56b9e6SYuval Mintz void qed_init_dp(struct qed_dev *cdev, 51fe56b9e6SYuval Mintz u32 dp_module, 52fe56b9e6SYuval Mintz u8 dp_level); 53fe56b9e6SYuval Mintz 54fe56b9e6SYuval Mintz /** 55fe56b9e6SYuval Mintz * @brief qed_init_struct - initialize the device structure to 56fe56b9e6SYuval Mintz * its defaults 57fe56b9e6SYuval Mintz * 58fe56b9e6SYuval Mintz * @param cdev 59fe56b9e6SYuval Mintz */ 60fe56b9e6SYuval Mintz void qed_init_struct(struct qed_dev *cdev); 61fe56b9e6SYuval Mintz 62fe56b9e6SYuval Mintz /** 63fe56b9e6SYuval Mintz * @brief qed_resc_free - 64fe56b9e6SYuval Mintz * 65fe56b9e6SYuval Mintz * @param cdev 66fe56b9e6SYuval Mintz */ 67fe56b9e6SYuval Mintz void qed_resc_free(struct qed_dev *cdev); 68fe56b9e6SYuval Mintz 69fe56b9e6SYuval Mintz /** 70fe56b9e6SYuval Mintz * @brief qed_resc_alloc - 71fe56b9e6SYuval Mintz * 72fe56b9e6SYuval Mintz * @param cdev 73fe56b9e6SYuval Mintz * 74fe56b9e6SYuval Mintz * @return int 75fe56b9e6SYuval Mintz */ 76fe56b9e6SYuval Mintz int qed_resc_alloc(struct qed_dev *cdev); 77fe56b9e6SYuval Mintz 78fe56b9e6SYuval Mintz /** 79fe56b9e6SYuval Mintz * @brief qed_resc_setup - 80fe56b9e6SYuval Mintz * 81fe56b9e6SYuval Mintz * @param cdev 82fe56b9e6SYuval Mintz */ 83fe56b9e6SYuval Mintz void qed_resc_setup(struct qed_dev *cdev); 84fe56b9e6SYuval Mintz 85fe56b9e6SYuval Mintz /** 86fe56b9e6SYuval Mintz * @brief qed_hw_init - 87fe56b9e6SYuval Mintz * 88fe56b9e6SYuval Mintz * @param cdev 89464f6645SManish Chopra * @param p_tunn 90fe56b9e6SYuval Mintz * @param b_hw_start 91fe56b9e6SYuval Mintz * @param int_mode - interrupt mode [msix, inta, etc.] to use. 92fe56b9e6SYuval Mintz * @param allow_npar_tx_switch - npar tx switching to be used 93fe56b9e6SYuval Mintz * for vports configured for tx-switching. 94fe56b9e6SYuval Mintz * @param bin_fw_data - binary fw data pointer in binary fw file. 95fe56b9e6SYuval Mintz * Pass NULL if not using binary fw file. 96fe56b9e6SYuval Mintz * 97fe56b9e6SYuval Mintz * @return int 98fe56b9e6SYuval Mintz */ 99fe56b9e6SYuval Mintz int qed_hw_init(struct qed_dev *cdev, 100464f6645SManish Chopra struct qed_tunn_start_params *p_tunn, 101fe56b9e6SYuval Mintz bool b_hw_start, 102fe56b9e6SYuval Mintz enum qed_int_mode int_mode, 103fe56b9e6SYuval Mintz bool allow_npar_tx_switch, 104fe56b9e6SYuval Mintz const u8 *bin_fw_data); 105fe56b9e6SYuval Mintz 106fe56b9e6SYuval Mintz /** 1078c925c44SYuval Mintz * @brief qed_hw_timers_stop_all - stop the timers HW block 1088c925c44SYuval Mintz * 1098c925c44SYuval Mintz * @param cdev 1108c925c44SYuval Mintz * 1118c925c44SYuval Mintz * @return void 1128c925c44SYuval Mintz */ 1138c925c44SYuval Mintz void qed_hw_timers_stop_all(struct qed_dev *cdev); 1148c925c44SYuval Mintz 1158c925c44SYuval Mintz /** 116fe56b9e6SYuval Mintz * @brief qed_hw_stop - 117fe56b9e6SYuval Mintz * 118fe56b9e6SYuval Mintz * @param cdev 119fe56b9e6SYuval Mintz * 120fe56b9e6SYuval Mintz * @return int 121fe56b9e6SYuval Mintz */ 122fe56b9e6SYuval Mintz int qed_hw_stop(struct qed_dev *cdev); 123fe56b9e6SYuval Mintz 124fe56b9e6SYuval Mintz /** 125cee4d264SManish Chopra * @brief qed_hw_stop_fastpath -should be called incase 126cee4d264SManish Chopra * slowpath is still required for the device, 127cee4d264SManish Chopra * but fastpath is not. 128cee4d264SManish Chopra * 129cee4d264SManish Chopra * @param cdev 130cee4d264SManish Chopra * 131cee4d264SManish Chopra */ 132cee4d264SManish Chopra void qed_hw_stop_fastpath(struct qed_dev *cdev); 133cee4d264SManish Chopra 134cee4d264SManish Chopra /** 135cee4d264SManish Chopra * @brief qed_hw_start_fastpath -restart fastpath traffic, 136cee4d264SManish Chopra * only if hw_stop_fastpath was called 137cee4d264SManish Chopra * 138cee4d264SManish Chopra * @param cdev 139cee4d264SManish Chopra * 140cee4d264SManish Chopra */ 141cee4d264SManish Chopra void qed_hw_start_fastpath(struct qed_hwfn *p_hwfn); 142cee4d264SManish Chopra 143cee4d264SManish Chopra /** 144fe56b9e6SYuval Mintz * @brief qed_hw_reset - 145fe56b9e6SYuval Mintz * 146fe56b9e6SYuval Mintz * @param cdev 147fe56b9e6SYuval Mintz * 148fe56b9e6SYuval Mintz * @return int 149fe56b9e6SYuval Mintz */ 150fe56b9e6SYuval Mintz int qed_hw_reset(struct qed_dev *cdev); 151fe56b9e6SYuval Mintz 152fe56b9e6SYuval Mintz /** 153fe56b9e6SYuval Mintz * @brief qed_hw_prepare - 154fe56b9e6SYuval Mintz * 155fe56b9e6SYuval Mintz * @param cdev 156fe56b9e6SYuval Mintz * @param personality - personality to initialize 157fe56b9e6SYuval Mintz * 158fe56b9e6SYuval Mintz * @return int 159fe56b9e6SYuval Mintz */ 160fe56b9e6SYuval Mintz int qed_hw_prepare(struct qed_dev *cdev, 161fe56b9e6SYuval Mintz int personality); 162fe56b9e6SYuval Mintz 163fe56b9e6SYuval Mintz /** 164fe56b9e6SYuval Mintz * @brief qed_hw_remove - 165fe56b9e6SYuval Mintz * 166fe56b9e6SYuval Mintz * @param cdev 167fe56b9e6SYuval Mintz */ 168fe56b9e6SYuval Mintz void qed_hw_remove(struct qed_dev *cdev); 169fe56b9e6SYuval Mintz 170fe56b9e6SYuval Mintz /** 171fe56b9e6SYuval Mintz * @brief qed_ptt_acquire - Allocate a PTT window 172fe56b9e6SYuval Mintz * 173fe56b9e6SYuval Mintz * Should be called at the entry point to the driver (at the beginning of an 174fe56b9e6SYuval Mintz * exported function) 175fe56b9e6SYuval Mintz * 176fe56b9e6SYuval Mintz * @param p_hwfn 177fe56b9e6SYuval Mintz * 178fe56b9e6SYuval Mintz * @return struct qed_ptt 179fe56b9e6SYuval Mintz */ 180fe56b9e6SYuval Mintz struct qed_ptt *qed_ptt_acquire(struct qed_hwfn *p_hwfn); 181fe56b9e6SYuval Mintz 182fe56b9e6SYuval Mintz /** 183fe56b9e6SYuval Mintz * @brief qed_ptt_release - Release PTT Window 184fe56b9e6SYuval Mintz * 185fe56b9e6SYuval Mintz * Should be called at the end of a flow - at the end of the function that 186fe56b9e6SYuval Mintz * acquired the PTT. 187fe56b9e6SYuval Mintz * 188fe56b9e6SYuval Mintz * 189fe56b9e6SYuval Mintz * @param p_hwfn 190fe56b9e6SYuval Mintz * @param p_ptt 191fe56b9e6SYuval Mintz */ 192fe56b9e6SYuval Mintz void qed_ptt_release(struct qed_hwfn *p_hwfn, 193fe56b9e6SYuval Mintz struct qed_ptt *p_ptt); 1949df2ed04SManish Chopra void qed_reset_vport_stats(struct qed_dev *cdev); 195fe56b9e6SYuval Mintz 196fe56b9e6SYuval Mintz enum qed_dmae_address_type_t { 197fe56b9e6SYuval Mintz QED_DMAE_ADDRESS_HOST_VIRT, 198fe56b9e6SYuval Mintz QED_DMAE_ADDRESS_HOST_PHYS, 199fe56b9e6SYuval Mintz QED_DMAE_ADDRESS_GRC 200fe56b9e6SYuval Mintz }; 201fe56b9e6SYuval Mintz 202fe56b9e6SYuval Mintz /* value of flags If QED_DMAE_FLAG_RW_REPL_SRC flag is set and the 203fe56b9e6SYuval Mintz * source is a block of length DMAE_MAX_RW_SIZE and the 204fe56b9e6SYuval Mintz * destination is larger, the source block will be duplicated as 205fe56b9e6SYuval Mintz * many times as required to fill the destination block. This is 206fe56b9e6SYuval Mintz * used mostly to write a zeroed buffer to destination address 207fe56b9e6SYuval Mintz * using DMA 208fe56b9e6SYuval Mintz */ 209fe56b9e6SYuval Mintz #define QED_DMAE_FLAG_RW_REPL_SRC 0x00000001 21037bff2b9SYuval Mintz #define QED_DMAE_FLAG_VF_SRC 0x00000002 21137bff2b9SYuval Mintz #define QED_DMAE_FLAG_VF_DST 0x00000004 212fe56b9e6SYuval Mintz #define QED_DMAE_FLAG_COMPLETION_DST 0x00000008 213fe56b9e6SYuval Mintz 214fe56b9e6SYuval Mintz struct qed_dmae_params { 215fe56b9e6SYuval Mintz u32 flags; /* consists of QED_DMAE_FLAG_* values */ 21637bff2b9SYuval Mintz u8 src_vfid; 21737bff2b9SYuval Mintz u8 dst_vfid; 218fe56b9e6SYuval Mintz }; 219fe56b9e6SYuval Mintz 220fe56b9e6SYuval Mintz /** 221fe56b9e6SYuval Mintz * @brief qed_dmae_host2grc - copy data from source addr to 222fe56b9e6SYuval Mintz * dmae registers using the given ptt 223fe56b9e6SYuval Mintz * 224fe56b9e6SYuval Mintz * @param p_hwfn 225fe56b9e6SYuval Mintz * @param p_ptt 226fe56b9e6SYuval Mintz * @param source_addr 227fe56b9e6SYuval Mintz * @param grc_addr (dmae_data_offset) 228fe56b9e6SYuval Mintz * @param size_in_dwords 229fe56b9e6SYuval Mintz * @param flags (one of the flags defined above) 230fe56b9e6SYuval Mintz */ 231fe56b9e6SYuval Mintz int 232fe56b9e6SYuval Mintz qed_dmae_host2grc(struct qed_hwfn *p_hwfn, 233fe56b9e6SYuval Mintz struct qed_ptt *p_ptt, 234fe56b9e6SYuval Mintz u64 source_addr, 235fe56b9e6SYuval Mintz u32 grc_addr, 236fe56b9e6SYuval Mintz u32 size_in_dwords, 237fe56b9e6SYuval Mintz u32 flags); 238fe56b9e6SYuval Mintz 239fe56b9e6SYuval Mintz /** 240722003acSSudarsana Reddy Kalluru * @brief qed_dmae_grc2host - Read data from dmae data offset 241722003acSSudarsana Reddy Kalluru * to source address using the given ptt 242722003acSSudarsana Reddy Kalluru * 243722003acSSudarsana Reddy Kalluru * @param p_ptt 244722003acSSudarsana Reddy Kalluru * @param grc_addr (dmae_data_offset) 245722003acSSudarsana Reddy Kalluru * @param dest_addr 246722003acSSudarsana Reddy Kalluru * @param size_in_dwords 247722003acSSudarsana Reddy Kalluru * @param flags - one of the flags defined above 248722003acSSudarsana Reddy Kalluru */ 249722003acSSudarsana Reddy Kalluru int qed_dmae_grc2host(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, 250722003acSSudarsana Reddy Kalluru u32 grc_addr, dma_addr_t dest_addr, u32 size_in_dwords, 251722003acSSudarsana Reddy Kalluru u32 flags); 252722003acSSudarsana Reddy Kalluru 253722003acSSudarsana Reddy Kalluru /** 25437bff2b9SYuval Mintz * @brief qed_dmae_host2host - copy data from to source address 25537bff2b9SYuval Mintz * to a destination adress (for SRIOV) using the given ptt 25637bff2b9SYuval Mintz * 25737bff2b9SYuval Mintz * @param p_hwfn 25837bff2b9SYuval Mintz * @param p_ptt 25937bff2b9SYuval Mintz * @param source_addr 26037bff2b9SYuval Mintz * @param dest_addr 26137bff2b9SYuval Mintz * @param size_in_dwords 26237bff2b9SYuval Mintz * @param params 26337bff2b9SYuval Mintz */ 26437bff2b9SYuval Mintz int qed_dmae_host2host(struct qed_hwfn *p_hwfn, 26537bff2b9SYuval Mintz struct qed_ptt *p_ptt, 26637bff2b9SYuval Mintz dma_addr_t source_addr, 26737bff2b9SYuval Mintz dma_addr_t dest_addr, 26837bff2b9SYuval Mintz u32 size_in_dwords, struct qed_dmae_params *p_params); 26937bff2b9SYuval Mintz 27037bff2b9SYuval Mintz /** 271fe56b9e6SYuval Mintz * @brief qed_chain_alloc - Allocate and initialize a chain 272fe56b9e6SYuval Mintz * 273fe56b9e6SYuval Mintz * @param p_hwfn 274fe56b9e6SYuval Mintz * @param intended_use 275fe56b9e6SYuval Mintz * @param mode 276fe56b9e6SYuval Mintz * @param num_elems 277fe56b9e6SYuval Mintz * @param elem_size 278fe56b9e6SYuval Mintz * @param p_chain 279fe56b9e6SYuval Mintz * 280fe56b9e6SYuval Mintz * @return int 281fe56b9e6SYuval Mintz */ 282fe56b9e6SYuval Mintz int 283fe56b9e6SYuval Mintz qed_chain_alloc(struct qed_dev *cdev, 284fe56b9e6SYuval Mintz enum qed_chain_use_mode intended_use, 285fe56b9e6SYuval Mintz enum qed_chain_mode mode, 286a91eb52aSYuval Mintz enum qed_chain_cnt_type cnt_type, 287a91eb52aSYuval Mintz u32 num_elems, size_t elem_size, struct qed_chain *p_chain); 288fe56b9e6SYuval Mintz 289fe56b9e6SYuval Mintz /** 290fe56b9e6SYuval Mintz * @brief qed_chain_free - Free chain DMA memory 291fe56b9e6SYuval Mintz * 292fe56b9e6SYuval Mintz * @param p_hwfn 293fe56b9e6SYuval Mintz * @param p_chain 294fe56b9e6SYuval Mintz */ 295a91eb52aSYuval Mintz void qed_chain_free(struct qed_dev *cdev, struct qed_chain *p_chain); 296fe56b9e6SYuval Mintz 297fe56b9e6SYuval Mintz /** 298cee4d264SManish Chopra * @@brief qed_fw_l2_queue - Get absolute L2 queue ID 299cee4d264SManish Chopra * 300cee4d264SManish Chopra * @param p_hwfn 301cee4d264SManish Chopra * @param src_id - relative to p_hwfn 302cee4d264SManish Chopra * @param dst_id - absolute per engine 303cee4d264SManish Chopra * 304cee4d264SManish Chopra * @return int 305cee4d264SManish Chopra */ 306cee4d264SManish Chopra int qed_fw_l2_queue(struct qed_hwfn *p_hwfn, 307cee4d264SManish Chopra u16 src_id, 308cee4d264SManish Chopra u16 *dst_id); 309cee4d264SManish Chopra 310cee4d264SManish Chopra /** 311cee4d264SManish Chopra * @@brief qed_fw_vport - Get absolute vport ID 312cee4d264SManish Chopra * 313cee4d264SManish Chopra * @param p_hwfn 314cee4d264SManish Chopra * @param src_id - relative to p_hwfn 315cee4d264SManish Chopra * @param dst_id - absolute per engine 316cee4d264SManish Chopra * 317cee4d264SManish Chopra * @return int 318cee4d264SManish Chopra */ 319cee4d264SManish Chopra int qed_fw_vport(struct qed_hwfn *p_hwfn, 320cee4d264SManish Chopra u8 src_id, 321cee4d264SManish Chopra u8 *dst_id); 322cee4d264SManish Chopra 323cee4d264SManish Chopra /** 324cee4d264SManish Chopra * @@brief qed_fw_rss_eng - Get absolute RSS engine ID 325cee4d264SManish Chopra * 326cee4d264SManish Chopra * @param p_hwfn 327cee4d264SManish Chopra * @param src_id - relative to p_hwfn 328cee4d264SManish Chopra * @param dst_id - absolute per engine 329cee4d264SManish Chopra * 330cee4d264SManish Chopra * @return int 331cee4d264SManish Chopra */ 332cee4d264SManish Chopra int qed_fw_rss_eng(struct qed_hwfn *p_hwfn, 333cee4d264SManish Chopra u8 src_id, 334cee4d264SManish Chopra u8 *dst_id); 335cee4d264SManish Chopra 336cee4d264SManish Chopra /** 3370a7fb11cSYuval Mintz * @brief qed_llh_add_mac_filter - configures a MAC filter in llh 3380a7fb11cSYuval Mintz * 3390a7fb11cSYuval Mintz * @param p_hwfn 3400a7fb11cSYuval Mintz * @param p_ptt 3410a7fb11cSYuval Mintz * @param p_filter - MAC to add 3420a7fb11cSYuval Mintz */ 3430a7fb11cSYuval Mintz int qed_llh_add_mac_filter(struct qed_hwfn *p_hwfn, 3440a7fb11cSYuval Mintz struct qed_ptt *p_ptt, u8 *p_filter); 3450a7fb11cSYuval Mintz 3460a7fb11cSYuval Mintz /** 3470a7fb11cSYuval Mintz * @brief qed_llh_remove_mac_filter - removes a MAC filter from llh 3480a7fb11cSYuval Mintz * 3490a7fb11cSYuval Mintz * @param p_hwfn 3500a7fb11cSYuval Mintz * @param p_ptt 3510a7fb11cSYuval Mintz * @param p_filter - MAC to remove 3520a7fb11cSYuval Mintz */ 3530a7fb11cSYuval Mintz void qed_llh_remove_mac_filter(struct qed_hwfn *p_hwfn, 3540a7fb11cSYuval Mintz struct qed_ptt *p_ptt, u8 *p_filter); 3550a7fb11cSYuval Mintz 3561e128c81SArun Easi enum qed_llh_port_filter_type_t { 3571e128c81SArun Easi QED_LLH_FILTER_ETHERTYPE, 3581e128c81SArun Easi QED_LLH_FILTER_TCP_SRC_PORT, 3591e128c81SArun Easi QED_LLH_FILTER_TCP_DEST_PORT, 3601e128c81SArun Easi QED_LLH_FILTER_TCP_SRC_AND_DEST_PORT, 3611e128c81SArun Easi QED_LLH_FILTER_UDP_SRC_PORT, 3621e128c81SArun Easi QED_LLH_FILTER_UDP_DEST_PORT, 3631e128c81SArun Easi QED_LLH_FILTER_UDP_SRC_AND_DEST_PORT 3641e128c81SArun Easi }; 3651e128c81SArun Easi 3661e128c81SArun Easi /** 3671e128c81SArun Easi * @brief qed_llh_add_protocol_filter - configures a protocol filter in llh 3681e128c81SArun Easi * 3691e128c81SArun Easi * @param p_hwfn 3701e128c81SArun Easi * @param p_ptt 3711e128c81SArun Easi * @param source_port_or_eth_type - source port or ethertype to add 3721e128c81SArun Easi * @param dest_port - destination port to add 3731e128c81SArun Easi * @param type - type of filters and comparing 3741e128c81SArun Easi */ 3751e128c81SArun Easi int 3761e128c81SArun Easi qed_llh_add_protocol_filter(struct qed_hwfn *p_hwfn, 3771e128c81SArun Easi struct qed_ptt *p_ptt, 3781e128c81SArun Easi u16 source_port_or_eth_type, 3791e128c81SArun Easi u16 dest_port, 3801e128c81SArun Easi enum qed_llh_port_filter_type_t type); 3811e128c81SArun Easi 3821e128c81SArun Easi /** 3831e128c81SArun Easi * @brief qed_llh_remove_protocol_filter - remove a protocol filter in llh 3841e128c81SArun Easi * 3851e128c81SArun Easi * @param p_hwfn 3861e128c81SArun Easi * @param p_ptt 3871e128c81SArun Easi * @param source_port_or_eth_type - source port or ethertype to add 3881e128c81SArun Easi * @param dest_port - destination port to add 3891e128c81SArun Easi * @param type - type of filters and comparing 3901e128c81SArun Easi */ 3911e128c81SArun Easi void 3921e128c81SArun Easi qed_llh_remove_protocol_filter(struct qed_hwfn *p_hwfn, 3931e128c81SArun Easi struct qed_ptt *p_ptt, 3941e128c81SArun Easi u16 source_port_or_eth_type, 3951e128c81SArun Easi u16 dest_port, 3961e128c81SArun Easi enum qed_llh_port_filter_type_t type); 3971e128c81SArun Easi 3980a7fb11cSYuval Mintz /** 399fe56b9e6SYuval Mintz * *@brief Cleanup of previous driver remains prior to load 400fe56b9e6SYuval Mintz * 401fe56b9e6SYuval Mintz * @param p_hwfn 402fe56b9e6SYuval Mintz * @param p_ptt 403fe56b9e6SYuval Mintz * @param id - For PF, engine-relative. For VF, PF-relative. 4040b55e27dSYuval Mintz * @param is_vf - true iff cleanup is made for a VF. 405fe56b9e6SYuval Mintz * 406fe56b9e6SYuval Mintz * @return int 407fe56b9e6SYuval Mintz */ 408fe56b9e6SYuval Mintz int qed_final_cleanup(struct qed_hwfn *p_hwfn, 4090b55e27dSYuval Mintz struct qed_ptt *p_ptt, u16 id, bool is_vf); 410fe56b9e6SYuval Mintz 411722003acSSudarsana Reddy Kalluru /** 412722003acSSudarsana Reddy Kalluru * @brief qed_set_rxq_coalesce - Configure coalesce parameters for an Rx queue 413722003acSSudarsana Reddy Kalluru * The fact that we can configure coalescing to up to 511, but on varying 414722003acSSudarsana Reddy Kalluru * accuracy [the bigger the value the less accurate] up to a mistake of 3usec 415722003acSSudarsana Reddy Kalluru * for the highest values. 416722003acSSudarsana Reddy Kalluru * 417722003acSSudarsana Reddy Kalluru * @param p_hwfn 418722003acSSudarsana Reddy Kalluru * @param p_ptt 419722003acSSudarsana Reddy Kalluru * @param coalesce - Coalesce value in micro seconds. 420722003acSSudarsana Reddy Kalluru * @param qid - Queue index. 421722003acSSudarsana Reddy Kalluru * @param qid - SB Id 422722003acSSudarsana Reddy Kalluru * 423722003acSSudarsana Reddy Kalluru * @return int 424722003acSSudarsana Reddy Kalluru */ 425722003acSSudarsana Reddy Kalluru int qed_set_rxq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, 426722003acSSudarsana Reddy Kalluru u16 coalesce, u8 qid, u16 sb_id); 427722003acSSudarsana Reddy Kalluru 428722003acSSudarsana Reddy Kalluru /** 429722003acSSudarsana Reddy Kalluru * @brief qed_set_txq_coalesce - Configure coalesce parameters for a Tx queue 430722003acSSudarsana Reddy Kalluru * While the API allows setting coalescing per-qid, all tx queues sharing a 431722003acSSudarsana Reddy Kalluru * SB should be in same range [i.e., either 0-0x7f, 0x80-0xff or 0x100-0x1ff] 432722003acSSudarsana Reddy Kalluru * otherwise configuration would break. 433722003acSSudarsana Reddy Kalluru * 434722003acSSudarsana Reddy Kalluru * @param p_hwfn 435722003acSSudarsana Reddy Kalluru * @param p_ptt 436722003acSSudarsana Reddy Kalluru * @param coalesce - Coalesce value in micro seconds. 437722003acSSudarsana Reddy Kalluru * @param qid - Queue index. 438722003acSSudarsana Reddy Kalluru * @param qid - SB Id 439722003acSSudarsana Reddy Kalluru * 440722003acSSudarsana Reddy Kalluru * @return int 441722003acSSudarsana Reddy Kalluru */ 442722003acSSudarsana Reddy Kalluru int qed_set_txq_coalesce(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, 443722003acSSudarsana Reddy Kalluru u16 coalesce, u8 qid, u16 sb_id); 444fe56b9e6SYuval Mintz #endif 445