144 lines
4.3 KiB
C
144 lines
4.3 KiB
C
/*
|
|
* Copyright (C) 2015 Mellanox Technologies Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
* 02110-1301, USA.
|
|
*/
|
|
|
|
FILE_LICENCE ( GPL2_OR_LATER );
|
|
|
|
#ifndef SRC_DRIVERS_INFINIBAND_MLX_NODNIC_INCLUDE_PRM_NODNIC_SHOMRON_PRM_H_
|
|
#define SRC_DRIVERS_INFINIBAND_MLX_NODNIC_INCLUDE_PRM_NODNIC_SHOMRON_PRM_H_
|
|
|
|
|
|
|
|
#include "nodnic_prm.h"
|
|
|
|
|
|
#define SHOMRON_MAX_GATHER 1
|
|
|
|
/* Send wqe segment ctrl */
|
|
|
|
struct shomronprm_wqe_segment_ctrl_send_st { /* Little Endian */
|
|
pseudo_bit_t opcode[0x00008];
|
|
pseudo_bit_t wqe_index[0x00010];
|
|
pseudo_bit_t reserved1[0x00008];
|
|
/* -------------- */
|
|
pseudo_bit_t ds[0x00006]; /* descriptor (wqe) size in 16bytes chunk */
|
|
pseudo_bit_t reserved2[0x00002];
|
|
pseudo_bit_t qpn[0x00018];
|
|
/* -------------- */
|
|
pseudo_bit_t reserved3[0x00002];
|
|
pseudo_bit_t ce[0x00002];
|
|
pseudo_bit_t reserved4[0x0001c];
|
|
/* -------------- */
|
|
pseudo_bit_t reserved5[0x00040];
|
|
/* -------------- */
|
|
pseudo_bit_t mss[0x0000e];
|
|
pseudo_bit_t reserved6[0x0000e];
|
|
pseudo_bit_t cs13_inner[0x00001];
|
|
pseudo_bit_t cs14_inner[0x00001];
|
|
pseudo_bit_t cs13[0x00001];
|
|
pseudo_bit_t cs14[0x00001];
|
|
/* -------------- */
|
|
pseudo_bit_t reserved7[0x00020];
|
|
/* -------------- */
|
|
pseudo_bit_t inline_headers1[0x00010];
|
|
pseudo_bit_t inline_headers_size[0x0000a]; //sum size of inline_hdr1+inline_hdrs (0x10)
|
|
pseudo_bit_t reserved8[0x00006];
|
|
/* -------------- */
|
|
pseudo_bit_t inline_headers2[0x00020];
|
|
/* -------------- */
|
|
pseudo_bit_t inline_headers3[0x00020];
|
|
/* -------------- */
|
|
pseudo_bit_t inline_headers4[0x00020];
|
|
/* -------------- */
|
|
pseudo_bit_t inline_headers5[0x00020];
|
|
};
|
|
|
|
|
|
|
|
/* Completion Queue Entry Format #### michal - fixed by gdror */
|
|
|
|
struct shomronprm_completion_queue_entry_st { /* Little Endian */
|
|
|
|
pseudo_bit_t reserved1[0x00080];
|
|
/* -------------- */
|
|
pseudo_bit_t reserved2[0x00010];
|
|
pseudo_bit_t ml_path[0x00007];
|
|
pseudo_bit_t reserved3[0x00009];
|
|
/* -------------- */
|
|
pseudo_bit_t slid[0x00010];
|
|
pseudo_bit_t reserved4[0x00010];
|
|
/* -------------- */
|
|
pseudo_bit_t rqpn[0x00018];
|
|
pseudo_bit_t sl[0x00004];
|
|
pseudo_bit_t l3_hdr[0x00002];
|
|
pseudo_bit_t reserved5[0x00002];
|
|
/* -------------- */
|
|
pseudo_bit_t reserved10[0x00020];
|
|
/* -------------- */
|
|
pseudo_bit_t srqn[0x00018];
|
|
pseudo_bit_t reserved11[0x0008];
|
|
/* -------------- */
|
|
pseudo_bit_t pkey_index[0x00020];
|
|
/* -------------- */
|
|
pseudo_bit_t reserved6[0x00020];
|
|
/* -------------- */
|
|
pseudo_bit_t byte_cnt[0x00020];
|
|
/* -------------- */
|
|
pseudo_bit_t reserved7[0x00040];
|
|
/* -------------- */
|
|
pseudo_bit_t qpn[0x00018];
|
|
pseudo_bit_t rx_drop_counter[0x00008];
|
|
/* -------------- */
|
|
pseudo_bit_t owner[0x00001];
|
|
pseudo_bit_t reserved8[0x00003];
|
|
pseudo_bit_t opcode[0x00004];
|
|
pseudo_bit_t reserved9[0x00008];
|
|
pseudo_bit_t wqe_counter[0x00010];
|
|
};
|
|
|
|
|
|
/* Completion with Error CQE #### michal - gdror fixed */
|
|
|
|
struct shomronprm_completion_with_error_st { /* Little Endian */
|
|
pseudo_bit_t reserved1[0x001a0];
|
|
/* -------------- */
|
|
pseudo_bit_t syndrome[0x00008];
|
|
pseudo_bit_t vendor_error_syndrome[0x00008];
|
|
pseudo_bit_t reserved2[0x00010];
|
|
/* -------------- */
|
|
pseudo_bit_t reserved3[0x00040];
|
|
};
|
|
|
|
|
|
struct MLX_DECLARE_STRUCT ( shomronprm_wqe_segment_ctrl_send );
|
|
struct MLX_DECLARE_STRUCT ( shomronprm_completion_queue_entry );
|
|
struct MLX_DECLARE_STRUCT ( shomronprm_completion_with_error );
|
|
|
|
struct shomron_nodnic_eth_send_wqe {
|
|
struct shomronprm_wqe_segment_ctrl_send ctrl;
|
|
struct nodnic_wqe_segment_data_ptr data[SHOMRON_MAX_GATHER];
|
|
} __attribute__ (( packed ));
|
|
|
|
union shomronprm_completion_entry {
|
|
struct shomronprm_completion_queue_entry normal;
|
|
struct shomronprm_completion_with_error error;
|
|
} __attribute__ (( packed ));
|
|
|
|
|
|
#endif /* SRC_DRIVERS_INFINIBAND_MLX_NODNIC_INCLUDE_PRM_NODNIC_SHOMRON_PRM_H_ */
|