These changes are the raw update to qemu-2.6.
[kvmfornfv.git] / qemu / roms / ipxe / src / drivers / net / phantom / phantom_hw.h
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 */