~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/ipxe/src/drivers/net/phantom/phantom_hw.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _PHANTOM_HW_H
 
2
#define _PHANTOM_HW_H
 
3
 
 
4
/*
 
5
 * Copyright (C) 2008 Michael Brown <mbrown@fensystems.co.uk>.
 
6
 * Copyright (C) 2008 NetXen, Inc.
 
7
 *
 
8
 * This program is free software; you can redistribute it and/or
 
9
 * modify it under the terms of the GNU General Public License as
 
10
 * published by the Free Software Foundation; either version 2 of the
 
11
 * License, or any later version.
 
12
 *
 
13
 * This program is distributed in the hope that it will be useful, but
 
14
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
16
 * General Public License for more details.
 
17
 *
 
18
 * You should have received a copy of the GNU General Public License
 
19
 * along with this program; if not, write to the Free Software
 
20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 
21
 * 02110-1301, USA.
 
22
 *
 
23
 * You can also choose to distribute this program under the terms of
 
24
 * the Unmodified Binary Distribution Licence (as given in the file
 
25
 * COPYING.UBDL), provided that you have satisfied its requirements.
 
26
 */
 
27
 
 
28
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 
29
 
 
30
/**
 
31
 * @file
 
32
 *
 
33
 * Phantom hardware definitions
 
34
 *
 
35
 */
 
36
 
 
37
/** A Phantom RX descriptor */
 
38
struct phantom_rds_pb {
 
39
        pseudo_bit_t handle[16];                /**< Reference handle */
 
40
        pseudo_bit_t flags[16];                 /**< Flags */
 
41
        pseudo_bit_t length[32];                /**< Buffer length */
 
42
 
 
43
        /* --------------------------------------------------------------- */
 
44
 
 
45
        pseudo_bit_t dma_addr[64];              /**< Buffer DMA address */
 
46
 
 
47
};
 
48
 
 
49
/** A Phantom RX status descriptor */
 
50
struct phantom_sds_pb {
 
51
        pseudo_bit_t port[4];                   /**< Port number */
 
52
        pseudo_bit_t status[4];                 /**< Checksum status */
 
53
        pseudo_bit_t type[4];                   /**< Type */
 
54
        pseudo_bit_t total_length[16];          /**< Total packet length */
 
55
        pseudo_bit_t handle[16];                /**< Reference handle */
 
56
        pseudo_bit_t protocol[4];               /**< Protocol */
 
57
        pseudo_bit_t pkt_offset[5];             /**< Offset to packet start */
 
58
        pseudo_bit_t desc_cnt[3];               /**< Descriptor count */
 
59
        pseudo_bit_t owner[2];                  /**< Owner */
 
60
        pseudo_bit_t opcode[6];                 /**< Opcode */
 
61
 
 
62
        /* --------------------------------------------------------------- */
 
63
 
 
64
        pseudo_bit_t hash_value[32];            /**< RSS hash value */
 
65
        pseudo_bit_t hash_type[8];              /**< RSS hash type */
 
66
        pseudo_bit_t lro[8];                    /**< LRO data */
 
67
};
 
68
 
 
69
/** Phantom RX status opcodes */
 
70
enum phantom_sds_opcode {
 
71
        UNM_SYN_OFFLOAD = 0x03,
 
72
        UNM_RXPKT_DESC = 0x04,
 
73
};
 
74
 
 
75
/** A Phantom TX descriptor */
 
76
struct phantom_tx_cds_pb {
 
77
        pseudo_bit_t tcp_hdr_offset[8];         /**< TCP header offset (LSO) */
 
78
        pseudo_bit_t ip_hdr_offset[8];          /**< IP header offset (LSO) */
 
79
        pseudo_bit_t flags[7];                  /**< Flags */
 
80
        pseudo_bit_t opcode[6];                 /**< Opcode */
 
81
        pseudo_bit_t hw_rsvd_0[3];              /**< (Reserved) */
 
82
        pseudo_bit_t num_buffers[8];            /**< Total number of buffers */
 
83
        pseudo_bit_t length[24];                /**< Total length */
 
84
 
 
85
        /* --------------------------------------------------------------- */
 
86
 
 
87
        pseudo_bit_t buffer2_dma_addr[64];      /**< Buffer 2 DMA address */
 
88
 
 
89
        /* --------------------------------------------------------------- */
 
90
 
 
91
        pseudo_bit_t handle[16];                /**< Reference handle (n/a) */
 
92
        pseudo_bit_t port_mss[16];              /**< TCP MSS (LSO) */
 
93
        pseudo_bit_t port[4];                   /**< Port */
 
94
        pseudo_bit_t context_id[4];             /**< Context ID */
 
95
        pseudo_bit_t total_hdr_length[8];       /**< MAC+IP+TCP header (LSO) */
 
96
        pseudo_bit_t conn_id[16];               /**< IPSec connection ID */
 
97
 
 
98
        /* --------------------------------------------------------------- */
 
99
 
 
100
        pseudo_bit_t buffer3_dma_addr[64];      /**< Buffer 3 DMA address */
 
101
 
 
102
        /* --------------------------------------------------------------- */
 
103
 
 
104
        pseudo_bit_t buffer1_dma_addr[64];      /**< Buffer 1 DMA address */
 
105
 
 
106
        /* --------------------------------------------------------------- */
 
107
 
 
108
        pseudo_bit_t buffer1_length[16];        /**< Buffer 1 length */
 
109
        pseudo_bit_t buffer2_length[16];        /**< Buffer 2 length */
 
110
        pseudo_bit_t buffer3_length[16];        /**< Buffer 3 length */
 
111
        pseudo_bit_t buffer4_length[16];        /**< Buffer 4 length */
 
112
 
 
113
        /* --------------------------------------------------------------- */
 
114
 
 
115
        pseudo_bit_t buffer4_dma_addr[64];      /**< Buffer 4 DMA address */
 
116
 
 
117
        /* --------------------------------------------------------------- */
 
118
 
 
119
        pseudo_bit_t hw_rsvd_1[64];             /**< (Reserved) */
 
120
};
 
121
 
 
122
/** A Phantom MAC address request body */
 
123
struct phantom_nic_request_body_mac_request_pb {
 
124
        pseudo_bit_t opcode[8];                 /**< Opcode */
 
125
        pseudo_bit_t tag[8];                    /**< Tag */
 
126
        pseudo_bit_t mac_addr_0[8];             /**< MAC address byte 0 */
 
127
        pseudo_bit_t mac_addr_1[8];             /**< MAC address byte 1 */
 
128
        pseudo_bit_t mac_addr_2[8];             /**< MAC address byte 2 */
 
129
        pseudo_bit_t mac_addr_3[8];             /**< MAC address byte 3 */
 
130
        pseudo_bit_t mac_addr_4[8];             /**< MAC address byte 4 */
 
131
        pseudo_bit_t mac_addr_5[8];             /**< MAC address byte 5 */
 
132
};
 
133
 
 
134
/** Phantom MAC request opcodes */
 
135
enum phantom_mac_request_opcode {
 
136
        UNM_MAC_ADD = 0x01,                     /**< Add MAC address */
 
137
        UNM_MAC_DEL = 0x02,                     /**< Delete MAC address */
 
138
};
 
139
 
 
140
/** A Phantom NIC request command descriptor */
 
141
struct phantom_nic_request_cds_pb {
 
142
        struct {
 
143
                pseudo_bit_t dst_minor[18];
 
144
                pseudo_bit_t dst_subq[1];
 
145
                pseudo_bit_t dst_major[4];
 
146
                pseudo_bit_t opcode[6];
 
147
                pseudo_bit_t hw_rsvd_0[3];
 
148
                pseudo_bit_t msginfo[24];
 
149
                pseudo_bit_t hw_rsvd_1[2];
 
150
                pseudo_bit_t qmsg_type[6];
 
151
        } common;
 
152
 
 
153
        /* --------------------------------------------------------------- */
 
154
 
 
155
        struct {
 
156
                pseudo_bit_t opcode[8];
 
157
                pseudo_bit_t comp_id [8];
 
158
                pseudo_bit_t context_id[16];
 
159
                pseudo_bit_t need_completion[1];
 
160
                pseudo_bit_t hw_rsvd_0[23];
 
161
                pseudo_bit_t sub_opcode[8];
 
162
        } header;
 
163
 
 
164
        /* --------------------------------------------------------------- */
 
165
 
 
166
        union {
 
167
                struct phantom_nic_request_body_mac_request_pb mac_request;
 
168
                pseudo_bit_t padding[384];
 
169
        } body;
 
170
};
 
171
 
 
172
/** Phantom NIC request opcodes */
 
173
enum phantom_nic_request_opcode {
 
174
        UNM_MAC_EVENT = 0x01,                   /**< Add/delete MAC address */
 
175
};
 
176
 
 
177
/** A Phantom command descriptor */
 
178
union phantom_cds_pb {
 
179
        struct phantom_tx_cds_pb tx;
 
180
        struct phantom_nic_request_cds_pb nic_request;
 
181
};
 
182
 
 
183
/** Phantom command descriptor opcodes */
 
184
enum phantom_cds_opcode {
 
185
        UNM_TX_ETHER_PKT = 0x01,                /**< Transmit raw Ethernet */
 
186
        UNM_NIC_REQUEST = 0x14,                 /**< NIC request */
 
187
};
 
188
 
 
189
#endif /* _PHANTOM_HW_H */