162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or Linux-OpenIB */ 262306a36Sopenharmony_ci/* Copyright (c) 2016 - 2021 Intel Corporation */ 362306a36Sopenharmony_ci#ifndef IRDMA_UDA_H 462306a36Sopenharmony_ci#define IRDMA_UDA_H 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#define IRDMA_UDA_MAX_FSI_MGS 4096 762306a36Sopenharmony_ci#define IRDMA_UDA_MAX_PFS 16 862306a36Sopenharmony_ci#define IRDMA_UDA_MAX_VFS 128 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cistruct irdma_sc_cqp; 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cistruct irdma_ah_info { 1362306a36Sopenharmony_ci struct irdma_sc_vsi *vsi; 1462306a36Sopenharmony_ci u32 pd_idx; 1562306a36Sopenharmony_ci u32 dst_arpindex; 1662306a36Sopenharmony_ci u32 dest_ip_addr[4]; 1762306a36Sopenharmony_ci u32 src_ip_addr[4]; 1862306a36Sopenharmony_ci u32 flow_label; 1962306a36Sopenharmony_ci u32 ah_idx; 2062306a36Sopenharmony_ci u16 vlan_tag; 2162306a36Sopenharmony_ci u8 insert_vlan_tag; 2262306a36Sopenharmony_ci u8 tc_tos; 2362306a36Sopenharmony_ci u8 hop_ttl; 2462306a36Sopenharmony_ci u8 mac_addr[ETH_ALEN]; 2562306a36Sopenharmony_ci bool ah_valid:1; 2662306a36Sopenharmony_ci bool ipv4_valid:1; 2762306a36Sopenharmony_ci bool do_lpbk:1; 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cistruct irdma_sc_ah { 3162306a36Sopenharmony_ci struct irdma_sc_dev *dev; 3262306a36Sopenharmony_ci struct irdma_ah_info ah_info; 3362306a36Sopenharmony_ci}; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciint irdma_sc_add_mcast_grp(struct irdma_mcast_grp_info *ctx, 3662306a36Sopenharmony_ci struct irdma_mcast_grp_ctx_entry_info *mg); 3762306a36Sopenharmony_ciint irdma_sc_del_mcast_grp(struct irdma_mcast_grp_info *ctx, 3862306a36Sopenharmony_ci struct irdma_mcast_grp_ctx_entry_info *mg); 3962306a36Sopenharmony_ciint irdma_sc_access_ah(struct irdma_sc_cqp *cqp, struct irdma_ah_info *info, 4062306a36Sopenharmony_ci u32 op, u64 scratch); 4162306a36Sopenharmony_ciint irdma_access_mcast_grp(struct irdma_sc_cqp *cqp, 4262306a36Sopenharmony_ci struct irdma_mcast_grp_info *info, u32 op, 4362306a36Sopenharmony_ci u64 scratch); 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_cistatic inline void irdma_sc_init_ah(struct irdma_sc_dev *dev, struct irdma_sc_ah *ah) 4662306a36Sopenharmony_ci{ 4762306a36Sopenharmony_ci ah->dev = dev; 4862306a36Sopenharmony_ci} 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_cistatic inline int irdma_sc_create_ah(struct irdma_sc_cqp *cqp, 5162306a36Sopenharmony_ci struct irdma_ah_info *info, u64 scratch) 5262306a36Sopenharmony_ci{ 5362306a36Sopenharmony_ci return irdma_sc_access_ah(cqp, info, IRDMA_CQP_OP_CREATE_ADDR_HANDLE, 5462306a36Sopenharmony_ci scratch); 5562306a36Sopenharmony_ci} 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cistatic inline int irdma_sc_destroy_ah(struct irdma_sc_cqp *cqp, 5862306a36Sopenharmony_ci struct irdma_ah_info *info, u64 scratch) 5962306a36Sopenharmony_ci{ 6062306a36Sopenharmony_ci return irdma_sc_access_ah(cqp, info, IRDMA_CQP_OP_DESTROY_ADDR_HANDLE, 6162306a36Sopenharmony_ci scratch); 6262306a36Sopenharmony_ci} 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_cistatic inline int irdma_sc_create_mcast_grp(struct irdma_sc_cqp *cqp, 6562306a36Sopenharmony_ci struct irdma_mcast_grp_info *info, 6662306a36Sopenharmony_ci u64 scratch) 6762306a36Sopenharmony_ci{ 6862306a36Sopenharmony_ci return irdma_access_mcast_grp(cqp, info, IRDMA_CQP_OP_CREATE_MCAST_GRP, 6962306a36Sopenharmony_ci scratch); 7062306a36Sopenharmony_ci} 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_cistatic inline int irdma_sc_modify_mcast_grp(struct irdma_sc_cqp *cqp, 7362306a36Sopenharmony_ci struct irdma_mcast_grp_info *info, 7462306a36Sopenharmony_ci u64 scratch) 7562306a36Sopenharmony_ci{ 7662306a36Sopenharmony_ci return irdma_access_mcast_grp(cqp, info, IRDMA_CQP_OP_MODIFY_MCAST_GRP, 7762306a36Sopenharmony_ci scratch); 7862306a36Sopenharmony_ci} 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_cistatic inline int irdma_sc_destroy_mcast_grp(struct irdma_sc_cqp *cqp, 8162306a36Sopenharmony_ci struct irdma_mcast_grp_info *info, 8262306a36Sopenharmony_ci u64 scratch) 8362306a36Sopenharmony_ci{ 8462306a36Sopenharmony_ci return irdma_access_mcast_grp(cqp, info, IRDMA_CQP_OP_DESTROY_MCAST_GRP, 8562306a36Sopenharmony_ci scratch); 8662306a36Sopenharmony_ci} 8762306a36Sopenharmony_ci#endif /* IRDMA_UDA_H */ 88