1*dd90451fSMustafa Ismail /* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */ 2*dd90451fSMustafa Ismail /* Copyright (c) 2016 - 2021 Intel Corporation */ 3*dd90451fSMustafa Ismail #ifndef IRDMA_UDA_H 4*dd90451fSMustafa Ismail #define IRDMA_UDA_H 5*dd90451fSMustafa Ismail 6*dd90451fSMustafa Ismail #define IRDMA_UDA_MAX_FSI_MGS 4096 7*dd90451fSMustafa Ismail #define IRDMA_UDA_MAX_PFS 16 8*dd90451fSMustafa Ismail #define IRDMA_UDA_MAX_VFS 128 9*dd90451fSMustafa Ismail 10*dd90451fSMustafa Ismail struct irdma_sc_cqp; 11*dd90451fSMustafa Ismail 12*dd90451fSMustafa Ismail struct irdma_ah_info { 13*dd90451fSMustafa Ismail struct irdma_sc_vsi *vsi; 14*dd90451fSMustafa Ismail u32 pd_idx; 15*dd90451fSMustafa Ismail u32 dst_arpindex; 16*dd90451fSMustafa Ismail u32 dest_ip_addr[4]; 17*dd90451fSMustafa Ismail u32 src_ip_addr[4]; 18*dd90451fSMustafa Ismail u32 flow_label; 19*dd90451fSMustafa Ismail u32 ah_idx; 20*dd90451fSMustafa Ismail u16 vlan_tag; 21*dd90451fSMustafa Ismail u8 insert_vlan_tag; 22*dd90451fSMustafa Ismail u8 tc_tos; 23*dd90451fSMustafa Ismail u8 hop_ttl; 24*dd90451fSMustafa Ismail u8 mac_addr[ETH_ALEN]; 25*dd90451fSMustafa Ismail bool ah_valid:1; 26*dd90451fSMustafa Ismail bool ipv4_valid:1; 27*dd90451fSMustafa Ismail bool do_lpbk:1; 28*dd90451fSMustafa Ismail }; 29*dd90451fSMustafa Ismail 30*dd90451fSMustafa Ismail struct irdma_sc_ah { 31*dd90451fSMustafa Ismail struct irdma_sc_dev *dev; 32*dd90451fSMustafa Ismail struct irdma_ah_info ah_info; 33*dd90451fSMustafa Ismail }; 34*dd90451fSMustafa Ismail 35*dd90451fSMustafa Ismail enum irdma_status_code irdma_sc_add_mcast_grp(struct irdma_mcast_grp_info *ctx, 36*dd90451fSMustafa Ismail struct irdma_mcast_grp_ctx_entry_info *mg); 37*dd90451fSMustafa Ismail enum irdma_status_code irdma_sc_del_mcast_grp(struct irdma_mcast_grp_info *ctx, 38*dd90451fSMustafa Ismail struct irdma_mcast_grp_ctx_entry_info *mg); 39*dd90451fSMustafa Ismail enum irdma_status_code irdma_sc_access_ah(struct irdma_sc_cqp *cqp, struct irdma_ah_info *info, 40*dd90451fSMustafa Ismail u32 op, u64 scratch); 41*dd90451fSMustafa Ismail enum irdma_status_code irdma_access_mcast_grp(struct irdma_sc_cqp *cqp, 42*dd90451fSMustafa Ismail struct irdma_mcast_grp_info *info, 43*dd90451fSMustafa Ismail u32 op, u64 scratch); 44*dd90451fSMustafa Ismail 45*dd90451fSMustafa Ismail static inline void irdma_sc_init_ah(struct irdma_sc_dev *dev, struct irdma_sc_ah *ah) 46*dd90451fSMustafa Ismail { 47*dd90451fSMustafa Ismail ah->dev = dev; 48*dd90451fSMustafa Ismail } 49*dd90451fSMustafa Ismail 50*dd90451fSMustafa Ismail static inline enum irdma_status_code irdma_sc_create_ah(struct irdma_sc_cqp *cqp, 51*dd90451fSMustafa Ismail struct irdma_ah_info *info, 52*dd90451fSMustafa Ismail u64 scratch) 53*dd90451fSMustafa Ismail { 54*dd90451fSMustafa Ismail return irdma_sc_access_ah(cqp, info, IRDMA_CQP_OP_CREATE_ADDR_HANDLE, 55*dd90451fSMustafa Ismail scratch); 56*dd90451fSMustafa Ismail } 57*dd90451fSMustafa Ismail 58*dd90451fSMustafa Ismail static inline enum irdma_status_code irdma_sc_destroy_ah(struct irdma_sc_cqp *cqp, 59*dd90451fSMustafa Ismail struct irdma_ah_info *info, 60*dd90451fSMustafa Ismail u64 scratch) 61*dd90451fSMustafa Ismail { 62*dd90451fSMustafa Ismail return irdma_sc_access_ah(cqp, info, IRDMA_CQP_OP_DESTROY_ADDR_HANDLE, 63*dd90451fSMustafa Ismail scratch); 64*dd90451fSMustafa Ismail } 65*dd90451fSMustafa Ismail 66*dd90451fSMustafa Ismail static inline enum irdma_status_code irdma_sc_create_mcast_grp(struct irdma_sc_cqp *cqp, 67*dd90451fSMustafa Ismail struct irdma_mcast_grp_info *info, 68*dd90451fSMustafa Ismail u64 scratch) 69*dd90451fSMustafa Ismail { 70*dd90451fSMustafa Ismail return irdma_access_mcast_grp(cqp, info, IRDMA_CQP_OP_CREATE_MCAST_GRP, 71*dd90451fSMustafa Ismail scratch); 72*dd90451fSMustafa Ismail } 73*dd90451fSMustafa Ismail 74*dd90451fSMustafa Ismail static inline enum irdma_status_code irdma_sc_modify_mcast_grp(struct irdma_sc_cqp *cqp, 75*dd90451fSMustafa Ismail struct irdma_mcast_grp_info *info, 76*dd90451fSMustafa Ismail u64 scratch) 77*dd90451fSMustafa Ismail { 78*dd90451fSMustafa Ismail return irdma_access_mcast_grp(cqp, info, IRDMA_CQP_OP_MODIFY_MCAST_GRP, 79*dd90451fSMustafa Ismail scratch); 80*dd90451fSMustafa Ismail } 81*dd90451fSMustafa Ismail 82*dd90451fSMustafa Ismail static inline enum irdma_status_code irdma_sc_destroy_mcast_grp(struct irdma_sc_cqp *cqp, 83*dd90451fSMustafa Ismail struct irdma_mcast_grp_info *info, 84*dd90451fSMustafa Ismail u64 scratch) 85*dd90451fSMustafa Ismail { 86*dd90451fSMustafa Ismail return irdma_access_mcast_grp(cqp, info, IRDMA_CQP_OP_DESTROY_MCAST_GRP, 87*dd90451fSMustafa Ismail scratch); 88*dd90451fSMustafa Ismail } 89*dd90451fSMustafa Ismail #endif /* IRDMA_UDA_H */ 90