hc
2024-08-16 94ba65e25ce534ec0515708c9e0835242345bc7b
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
99
100
101
102
103
104
105
/** @file
 
  Copyright (c) 2016 - 2017, Socionext Inc. All rights reserved.<BR>
  Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
 
  SPDX-License-Identifier: BSD-2-Clause-Patent
 
**/
 
#ifndef OGMA_DESC_RING_ACCESS_INTERNAL_H
#define OGMA_DESC_RING_ACCESS_INTERNAL_H
 
#include "netsec_for_uefi/netsec_sdk/include/ogma_basic_type.h"
#include "ogma_internal.h"
 
#define OGMA_TX_PKT_DESC_RING_OWN_FIELD        (31)
#define OGMA_TX_PKT_DESC_RING_LD_FIELD         (30)
#define OGMA_TX_PKT_DESC_RING_DRID_FIELD       (24)
#define OGMA_TX_PKT_DESC_RING_PT_FIELD         (21)
#define OGMA_TX_PKT_DESC_RING_TDRID_FIELD      (16)
#define OGMA_TX_PKT_DESC_RING_FS_FIELD         (9)
#define OGMA_TX_PKT_DESC_RING_LS_FIELD         (8)
#define OGMA_TX_PKT_DESC_RING_CO_FIELD         (7)
#define OGMA_TX_PKT_DESC_RING_SO_FIELD         (6)
#define OGMA_TX_PKT_DESC_RING_USRKEY_FIELD     (5)
#define OGMA_TX_PKT_DESC_RING_TRS_FIELD        (4)
 
#define OGMA_RX_PKT_DESC_RING_OWN_FIELD        (31)
#define OGMA_RX_PKT_DESC_RING_LD_FIELD         (30)
#define OGMA_RX_PKT_DESC_RING_SDRID_FIELD      (24)
#define OGMA_RX_PKT_DESC_RING_FR_FIELD         (23)
#define OGMA_RX_PKT_DESC_RING_ER_FIELD         (21)
#define OGMA_RX_PKT_DESC_RING_ERROR_CODE_FIELD (16)
#define OGMA_RX_PKT_DESC_RING_TDRID_FIELD      (12)
#define OGMA_RX_PKT_DESC_RING_FS_FIELD         (9)
#define OGMA_RX_PKT_DESC_RING_LS_FIELD         (8)
#define OGMA_RX_PKT_DESC_RING_CO_FIELD         (6)
 
#define OGMA_RX_PKT_DESC_RING_ERROR_CODE_FIELD_MASK (0x3)
 
#define OGMA_MAX_TX_PKT_LEN       1518U
#define OGMA_MAX_TX_JUMBO_PKT_LEN 9018U
 
typedef struct ogma_tx_desc_entry_s ogma_tx_desc_entry_t;
typedef struct ogma_rx_desc_entry_s ogma_rx_desc_entry_t;
 
struct ogma_tx_desc_entry_s{
 
    ogma_uint32 attr;
 
    ogma_uint32 data_buf_addr_upper;
 
    ogma_uint32 data_buf_addr_lower;
 
    ogma_uint32 buf_len_info;
};
 
struct ogma_rx_desc_entry_s{
 
    ogma_uint32 attr;
 
    ogma_uint32 data_buf_addr_upper;
 
    ogma_uint32 data_buf_addr_lower;
 
    ogma_uint32 buf_len_info;
};
 
static __inline ogma_bool ogma_is_pkt_desc_ring (
    const ogma_desc_ring_t *desc_ring_p
    )
{
    return ( desc_ring_p->rx_desc_ring_flag ||
             desc_ring_p->tx_desc_ring_flag);
}
 
static __inline ogma_uint32 ogma_get_desc_ring_attr (
    const ogma_desc_ring_t *desc_ring_p,
    ogma_uint16 idx
    )
{
    ogma_uint32 *addr =
        (ogma_uint32 *)
        ((pfdep_cpu_addr_t)desc_ring_p->desc_ring_cpu_addr +
         desc_ring_p->desc_entry_len * idx);
 
    return *addr;
}
 
 
 
static __inline void ogma_check_desc_own_sanity (
    ogma_ctrl_t *ctrl_p,
    const ogma_desc_ring_t *desc_ring_p,
    ogma_uint16 idx,
    ogma_uint expected_own)
{
    ogma_uint32 tmp;
    ( void)ctrl_p; /* Suppress compiler warning */
 
    tmp = ogma_get_desc_ring_attr(desc_ring_p, idx);
    pfdep_assert( ( tmp >> 31) == expected_own);
}
 
#endif /* OGMA_DESC_RING_ACCESS_INTERNAL_H */