162306a36Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2022, Microsoft Corporation. All rights reserved.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef MANA_ABI_USER_H
762306a36Sopenharmony_ci#define MANA_ABI_USER_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/types.h>
1062306a36Sopenharmony_ci#include <rdma/ib_user_ioctl_verbs.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci/*
1362306a36Sopenharmony_ci * Increment this value if any changes that break userspace ABI
1462306a36Sopenharmony_ci * compatibility are made.
1562306a36Sopenharmony_ci */
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#define MANA_IB_UVERBS_ABI_VERSION 1
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_cistruct mana_ib_create_cq {
2062306a36Sopenharmony_ci	__aligned_u64 buf_addr;
2162306a36Sopenharmony_ci};
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_cistruct mana_ib_create_qp {
2462306a36Sopenharmony_ci	__aligned_u64 sq_buf_addr;
2562306a36Sopenharmony_ci	__u32 sq_buf_size;
2662306a36Sopenharmony_ci	__u32 port;
2762306a36Sopenharmony_ci};
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_cistruct mana_ib_create_qp_resp {
3062306a36Sopenharmony_ci	__u32 sqid;
3162306a36Sopenharmony_ci	__u32 cqid;
3262306a36Sopenharmony_ci	__u32 tx_vp_offset;
3362306a36Sopenharmony_ci	__u32 reserved;
3462306a36Sopenharmony_ci};
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cistruct mana_ib_create_wq {
3762306a36Sopenharmony_ci	__aligned_u64 wq_buf_addr;
3862306a36Sopenharmony_ci	__u32 wq_buf_size;
3962306a36Sopenharmony_ci	__u32 reserved;
4062306a36Sopenharmony_ci};
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci/* RX Hash function flags */
4362306a36Sopenharmony_cienum mana_ib_rx_hash_function_flags {
4462306a36Sopenharmony_ci	MANA_IB_RX_HASH_FUNC_TOEPLITZ = 1 << 0,
4562306a36Sopenharmony_ci};
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cistruct mana_ib_create_qp_rss {
4862306a36Sopenharmony_ci	__aligned_u64 rx_hash_fields_mask;
4962306a36Sopenharmony_ci	__u8 rx_hash_function;
5062306a36Sopenharmony_ci	__u8 reserved[7];
5162306a36Sopenharmony_ci	__u32 rx_hash_key_len;
5262306a36Sopenharmony_ci	__u8 rx_hash_key[40];
5362306a36Sopenharmony_ci	__u32 port;
5462306a36Sopenharmony_ci};
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_cistruct rss_resp_entry {
5762306a36Sopenharmony_ci	__u32 cqid;
5862306a36Sopenharmony_ci	__u32 wqid;
5962306a36Sopenharmony_ci};
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_cistruct mana_ib_create_qp_rss_resp {
6262306a36Sopenharmony_ci	__aligned_u64 num_entries;
6362306a36Sopenharmony_ci	struct rss_resp_entry entries[64];
6462306a36Sopenharmony_ci};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci#endif
67