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