xref: /linux/drivers/net/ethernet/broadcom/bnge/bnge_hwrm_lib.h (revision 55a42f78ffd386e01a5404419f8c5ded7db70a21)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2025 Broadcom */
3 
4 #ifndef _BNGE_HWRM_LIB_H_
5 #define _BNGE_HWRM_LIB_H_
6 
7 #define BNGE_PLC_EN_JUMBO_THRES_VALID		\
8 	VNIC_PLCMODES_CFG_REQ_ENABLES_JUMBO_THRESH_VALID
9 #define BNGE_PLC_EN_HDS_THRES_VALID		\
10 	VNIC_PLCMODES_CFG_REQ_ENABLES_HDS_THRESHOLD_VALID
11 #define BNGE_VNIC_CFG_ROCE_DUAL_MODE		\
12 	VNIC_CFG_REQ_FLAGS_ROCE_DUAL_VNIC_MODE
13 
14 int bnge_hwrm_ver_get(struct bnge_dev *bd);
15 int bnge_hwrm_func_reset(struct bnge_dev *bd);
16 int bnge_hwrm_fw_set_time(struct bnge_dev *bd);
17 int bnge_hwrm_func_drv_rgtr(struct bnge_dev *bd);
18 int bnge_hwrm_func_drv_unrgtr(struct bnge_dev *bd);
19 int bnge_hwrm_vnic_qcaps(struct bnge_dev *bd);
20 int bnge_hwrm_nvm_dev_info(struct bnge_dev *bd,
21 			   struct hwrm_nvm_get_dev_info_output *nvm_dev_info);
22 int bnge_hwrm_func_backing_store(struct bnge_dev *bd,
23 				 struct bnge_ctx_mem_type *ctxm,
24 				 bool last);
25 int bnge_hwrm_func_backing_store_qcaps(struct bnge_dev *bd);
26 int bnge_hwrm_reserve_rings(struct bnge_dev *bd,
27 			    struct bnge_hw_rings *hwr);
28 int bnge_hwrm_func_qcaps(struct bnge_dev *bd);
29 int bnge_hwrm_vnic_qcaps(struct bnge_dev *bd);
30 int bnge_hwrm_func_qcfg(struct bnge_dev *bd);
31 int bnge_hwrm_func_resc_qcaps(struct bnge_dev *bd);
32 int bnge_hwrm_queue_qportcfg(struct bnge_dev *bd);
33 
34 int bnge_hwrm_vnic_set_hds(struct bnge_net *bn, struct bnge_vnic_info *vnic);
35 int bnge_hwrm_vnic_ctx_alloc(struct bnge_dev *bd,
36 			     struct bnge_vnic_info *vnic, u16 ctx_idx);
37 int bnge_hwrm_vnic_set_rss(struct bnge_net *bn,
38 			   struct bnge_vnic_info *vnic, bool set_rss);
39 int bnge_hwrm_vnic_cfg(struct bnge_net *bn, struct bnge_vnic_info *vnic);
40 void bnge_hwrm_update_rss_hash_cfg(struct bnge_net *bn);
41 int bnge_hwrm_vnic_alloc(struct bnge_dev *bd, struct bnge_vnic_info *vnic,
42 			 unsigned int nr_rings);
43 void bnge_hwrm_vnic_free_one(struct bnge_dev *bd, struct bnge_vnic_info *vnic);
44 void bnge_hwrm_vnic_ctx_free_one(struct bnge_dev *bd,
45 				 struct bnge_vnic_info *vnic, u16 ctx_idx);
46 int bnge_hwrm_l2_filter_free(struct bnge_dev *bd, struct bnge_l2_filter *fltr);
47 int bnge_hwrm_l2_filter_alloc(struct bnge_dev *bd, struct bnge_l2_filter *fltr);
48 int bnge_hwrm_cfa_l2_set_rx_mask(struct bnge_dev *bd,
49 				 struct bnge_vnic_info *vnic);
50 void bnge_hwrm_stat_ctx_free(struct bnge_net *bn);
51 int bnge_hwrm_stat_ctx_alloc(struct bnge_net *bn);
52 int hwrm_ring_free_send_msg(struct bnge_net *bn, struct bnge_ring_struct *ring,
53 			    u32 ring_type, int cmpl_ring_id);
54 int hwrm_ring_alloc_send_msg(struct bnge_net *bn,
55 			     struct bnge_ring_struct *ring,
56 			     u32 ring_type, u32 map_index);
57 int bnge_hwrm_set_async_event_cr(struct bnge_dev *bd, int idx);
58 #endif /* _BNGE_HWRM_LIB_H_ */
59