aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/dev_octeon/hw_defs.h
blob: ab0fc7bd8da1f713ce7d9f748a1de93d75f8c057 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/* SPDX-License-Identifier: Apache-2.0
 * Copyright (c) 2023 Cisco Systems, Inc.
 */

#ifndef _OCT_HW_DEFS_H_
#define _OCT_HW_DEFS_H_

#include <vppinfra/clib.h>
#include <base/roc_api.h>

typedef union
{
  struct
  {
    u64 tail : 20;
    u64 head : 20;
    u64 resv40 : 6;
    u64 cq_err : 1;
    u64 resv47 : 16;
    u64 op_err : 1;
  };
  u64 as_u64;
} oct_nix_lf_cq_op_status_t;

STATIC_ASSERT_SIZEOF (oct_nix_lf_cq_op_status_t, 8);

typedef union
{
  struct
  {
    u64 aura : 20;
    u64 _reseved20 : 12;
    u64 count_eot : 1;
    u64 _reserved33 : 30;
    u64 fabs : 1;
  };
  u64 as_u64;
} oct_npa_lf_aura_batch_free0_t;

STATIC_ASSERT_SIZEOF (oct_npa_lf_aura_batch_free0_t, 8);

typedef struct
{
  oct_npa_lf_aura_batch_free0_t w0;
  u64 data[15];
} oct_npa_lf_aura_batch_free_line_t;

STATIC_ASSERT_SIZEOF (oct_npa_lf_aura_batch_free_line_t, 128);

typedef union
{
  struct npa_batch_alloc_compare_s compare_s;
  u64 as_u64;
} oct_npa_batch_alloc_compare_t;

typedef union
{
  struct
  {
    union nix_send_hdr_w0_u hdr_w0;
    union nix_send_hdr_w1_u hdr_w1;
    union nix_send_sg_s sg[8];
  };
  u128 as_u128[5];
} oct_tx_desc_t;

STATIC_ASSERT_SIZEOF (oct_tx_desc_t, 80);

typedef union
{
  u128 dwords[8];
  u64 words[16];
} lmt_line_t;

STATIC_ASSERT_SIZEOF (lmt_line_t, 1 << ROC_LMT_LINE_SIZE_LOG2);

typedef union
{
  union nix_rx_parse_u f;
  u64 w[7];
} oct_nix_rx_parse_t;

STATIC_ASSERT_SIZEOF (oct_nix_rx_parse_t, 56);

typedef struct
{
  CLIB_ALIGN_MARK (desc, 128);
  struct nix_cqe_hdr_s hdr;
  oct_nix_rx_parse_t parse;
  struct nix_rx_sg_s sg0;
  void *segs0[3];
  struct nix_rx_sg_s sg1;
  void *segs1[3];
} oct_nix_rx_cqe_desc_t;

STATIC_ASSERT_SIZEOF (oct_nix_rx_cqe_desc_t, 128);

#endif /* _OCT_HW_DEFS_H_ */