12e99ea80SHyong Youb Kim /* SPDX-License-Identifier: BSD-3-Clause
22e99ea80SHyong Youb Kim * Copyright 2008-2017 Cisco Systems, Inc. All rights reserved.
372f3de30SBruce Richardson * Copyright 2007 Nuova Systems, Inc. All rights reserved.
472f3de30SBruce Richardson */
572f3de30SBruce Richardson
672f3de30SBruce Richardson #ifndef _CQ_ENET_DESC_H_
772f3de30SBruce Richardson #define _CQ_ENET_DESC_H_
872f3de30SBruce Richardson
9846ac76cSJohn Daley #include <rte_byteorder.h>
1072f3de30SBruce Richardson #include "cq_desc.h"
1172f3de30SBruce Richardson
1272f3de30SBruce Richardson /* Ethernet completion queue descriptor: 16B */
1372f3de30SBruce Richardson struct cq_enet_wq_desc {
1404e8ec74SJohn Daley uint16_t completed_index;
1504e8ec74SJohn Daley uint16_t q_number;
1604e8ec74SJohn Daley uint8_t reserved[11];
1704e8ec74SJohn Daley uint8_t type_color;
1872f3de30SBruce Richardson };
1972f3de30SBruce Richardson
cq_enet_wq_desc_enc(struct cq_enet_wq_desc * desc,uint8_t type,uint8_t color,uint16_t q_number,uint16_t completed_index)2072f3de30SBruce Richardson static inline void cq_enet_wq_desc_enc(struct cq_enet_wq_desc *desc,
2104e8ec74SJohn Daley uint8_t type, uint8_t color, uint16_t q_number,
2204e8ec74SJohn Daley uint16_t completed_index)
2372f3de30SBruce Richardson {
2472f3de30SBruce Richardson cq_desc_enc((struct cq_desc *)desc, type,
2572f3de30SBruce Richardson color, q_number, completed_index);
2672f3de30SBruce Richardson }
2772f3de30SBruce Richardson
cq_enet_wq_desc_dec(struct cq_enet_wq_desc * desc,uint8_t * type,uint8_t * color,uint16_t * q_number,uint16_t * completed_index)2872f3de30SBruce Richardson static inline void cq_enet_wq_desc_dec(struct cq_enet_wq_desc *desc,
2904e8ec74SJohn Daley uint8_t *type, uint8_t *color, uint16_t *q_number,
3004e8ec74SJohn Daley uint16_t *completed_index)
3172f3de30SBruce Richardson {
3272f3de30SBruce Richardson cq_desc_dec((struct cq_desc *)desc, type,
3372f3de30SBruce Richardson color, q_number, completed_index);
3472f3de30SBruce Richardson }
3572f3de30SBruce Richardson
3672f3de30SBruce Richardson /* Completion queue descriptor: Ethernet receive queue, 16B */
3772f3de30SBruce Richardson struct cq_enet_rq_desc {
3804e8ec74SJohn Daley uint16_t completed_index_flags;
3904e8ec74SJohn Daley uint16_t q_number_rss_type_flags;
4004e8ec74SJohn Daley uint32_t rss_hash;
4104e8ec74SJohn Daley uint16_t bytes_written_flags;
4204e8ec74SJohn Daley uint16_t vlan;
4304e8ec74SJohn Daley uint16_t checksum_fcoe;
4404e8ec74SJohn Daley uint8_t flags;
4504e8ec74SJohn Daley uint8_t type_color;
4672f3de30SBruce Richardson };
4772f3de30SBruce Richardson
48322b355fSJohn Daley /* Completion queue descriptor: Ethernet receive queue, 16B */
49322b355fSJohn Daley struct cq_enet_rq_clsf_desc {
5004e8ec74SJohn Daley uint16_t completed_index_flags;
5104e8ec74SJohn Daley uint16_t q_number_rss_type_flags;
5204e8ec74SJohn Daley uint16_t filter_id;
5304e8ec74SJohn Daley uint16_t lif;
5404e8ec74SJohn Daley uint16_t bytes_written_flags;
5504e8ec74SJohn Daley uint16_t vlan;
5604e8ec74SJohn Daley uint16_t checksum_fcoe;
5704e8ec74SJohn Daley uint8_t flags;
5804e8ec74SJohn Daley uint8_t type_color;
59322b355fSJohn Daley };
60322b355fSJohn Daley
618b428cb5SHyong Youb Kim /* Completion queue descriptor: Ethernet receive queue, 64B */
628b428cb5SHyong Youb Kim struct cq_enet_rq_desc_64 {
638b428cb5SHyong Youb Kim uint16_t completed_index_flags;
648b428cb5SHyong Youb Kim uint16_t q_number_rss_type_flags;
658b428cb5SHyong Youb Kim uint32_t rss_hash;
668b428cb5SHyong Youb Kim uint16_t bytes_written_flags;
678b428cb5SHyong Youb Kim uint16_t vlan;
688b428cb5SHyong Youb Kim uint16_t checksum_fcoe;
698b428cb5SHyong Youb Kim uint8_t flags;
70*22572e84SJohn Daley uint8_t fetch_idx_flags;
71*22572e84SJohn Daley uint8_t unused[47];
728b428cb5SHyong Youb Kim uint8_t type_color;
738b428cb5SHyong Youb Kim };
748b428cb5SHyong Youb Kim
7572f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_INGRESS_PORT (0x1 << 12)
7672f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_FCOE (0x1 << 13)
7772f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_EOP (0x1 << 14)
7872f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_SOP (0x1 << 15)
7972f3de30SBruce Richardson
8072f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_RSS_TYPE_BITS 4
8172f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_RSS_TYPE_MASK \
8272f3de30SBruce Richardson ((1 << CQ_ENET_RQ_DESC_RSS_TYPE_BITS) - 1)
8372f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_RSS_TYPE_NONE 0
8472f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_RSS_TYPE_IPv4 1
8572f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_RSS_TYPE_TCP_IPv4 2
8672f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_RSS_TYPE_IPv6 3
8772f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_RSS_TYPE_TCP_IPv6 4
8872f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_RSS_TYPE_IPv6_EX 5
8972f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_RSS_TYPE_TCP_IPv6_EX 6
9072f3de30SBruce Richardson
9172f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_CSUM_NOT_CALC (0x1 << 14)
9272f3de30SBruce Richardson
9372f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_BYTES_WRITTEN_BITS 14
9472f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_BYTES_WRITTEN_MASK \
9572f3de30SBruce Richardson ((1 << CQ_ENET_RQ_DESC_BYTES_WRITTEN_BITS) - 1)
96*22572e84SJohn Daley #define CQ_ENET_RQ_DESC_FETCH_IDX_BITS 2
97*22572e84SJohn Daley #define CQ_ENET_RQ_DESC_FETCH_IDX_MASK \
98*22572e84SJohn Daley ((1 << CQ_ENET_RQ_DESC_FETCH_IDX_BITS) - 1)
9972f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_TRUNCATED (0x1 << 14)
10072f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_VLAN_STRIPPED (0x1 << 15)
10172f3de30SBruce Richardson
10272f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_VLAN_TCI_VLAN_BITS 12
10372f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_VLAN_TCI_VLAN_MASK \
10472f3de30SBruce Richardson ((1 << CQ_ENET_RQ_DESC_VLAN_TCI_VLAN_BITS) - 1)
10572f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_VLAN_TCI_CFI_MASK (0x1 << 12)
10672f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_BITS 3
10772f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_MASK \
10872f3de30SBruce Richardson ((1 << CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_BITS) - 1)
10972f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_SHIFT 13
11072f3de30SBruce Richardson
11172f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FCOE_SOF_BITS 8
11272f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FCOE_SOF_MASK \
11372f3de30SBruce Richardson ((1 << CQ_ENET_RQ_DESC_FCOE_SOF_BITS) - 1)
11472f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FCOE_EOF_BITS 8
11572f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FCOE_EOF_MASK \
11672f3de30SBruce Richardson ((1 << CQ_ENET_RQ_DESC_FCOE_EOF_BITS) - 1)
11772f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FCOE_EOF_SHIFT 8
11872f3de30SBruce Richardson
11972f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_TCP_UDP_CSUM_OK (0x1 << 0)
12072f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FCOE_FC_CRC_OK (0x1 << 0)
12172f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_UDP (0x1 << 1)
12272f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FCOE_ENC_ERROR (0x1 << 1)
12372f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_TCP (0x1 << 2)
12472f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_IPV4_CSUM_OK (0x1 << 3)
12572f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_IPV6 (0x1 << 4)
12672f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_IPV4 (0x1 << 5)
12772f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_IPV4_FRAGMENT (0x1 << 6)
12872f3de30SBruce Richardson #define CQ_ENET_RQ_DESC_FLAGS_FCS_OK (0x1 << 7)
12972f3de30SBruce Richardson
cq_enet_rq_desc_enc(struct cq_enet_rq_desc * desc,uint8_t type,uint8_t color,uint16_t q_number,uint16_t completed_index,uint8_t ingress_port,uint8_t fcoe,uint8_t eop,uint8_t sop,uint8_t rss_type,uint8_t csum_not_calc,uint32_t rss_hash,uint16_t bytes_written,uint8_t packet_error,uint8_t vlan_stripped,uint16_t vlan,uint16_t checksum,uint8_t fcoe_sof,uint8_t fcoe_fc_crc_ok,uint8_t fcoe_enc_error,uint8_t fcoe_eof,uint8_t tcp_udp_csum_ok,uint8_t udp,uint8_t tcp,uint8_t ipv4_csum_ok,uint8_t ipv6,uint8_t ipv4,uint8_t ipv4_fragment,uint8_t fcs_ok)13072f3de30SBruce Richardson static inline void cq_enet_rq_desc_enc(struct cq_enet_rq_desc *desc,
13104e8ec74SJohn Daley uint8_t type, uint8_t color, uint16_t q_number,
13204e8ec74SJohn Daley uint16_t completed_index, uint8_t ingress_port, uint8_t fcoe,
13304e8ec74SJohn Daley uint8_t eop, uint8_t sop, uint8_t rss_type, uint8_t csum_not_calc,
13404e8ec74SJohn Daley uint32_t rss_hash, uint16_t bytes_written, uint8_t packet_error,
13504e8ec74SJohn Daley uint8_t vlan_stripped, uint16_t vlan, uint16_t checksum,
13604e8ec74SJohn Daley uint8_t fcoe_sof, uint8_t fcoe_fc_crc_ok, uint8_t fcoe_enc_error,
13704e8ec74SJohn Daley uint8_t fcoe_eof, uint8_t tcp_udp_csum_ok, uint8_t udp, uint8_t tcp,
13804e8ec74SJohn Daley uint8_t ipv4_csum_ok, uint8_t ipv6, uint8_t ipv4, uint8_t ipv4_fragment,
13904e8ec74SJohn Daley uint8_t fcs_ok)
14072f3de30SBruce Richardson {
14172f3de30SBruce Richardson cq_desc_enc((struct cq_desc *)desc, type,
14272f3de30SBruce Richardson color, q_number, completed_index);
14372f3de30SBruce Richardson
144846ac76cSJohn Daley desc->completed_index_flags |= rte_cpu_to_le_16
145846ac76cSJohn Daley ((ingress_port ? CQ_ENET_RQ_DESC_FLAGS_INGRESS_PORT : 0) |
14672f3de30SBruce Richardson (fcoe ? CQ_ENET_RQ_DESC_FLAGS_FCOE : 0) |
14772f3de30SBruce Richardson (eop ? CQ_ENET_RQ_DESC_FLAGS_EOP : 0) |
14872f3de30SBruce Richardson (sop ? CQ_ENET_RQ_DESC_FLAGS_SOP : 0));
14972f3de30SBruce Richardson
150846ac76cSJohn Daley desc->q_number_rss_type_flags |= rte_cpu_to_le_16
151846ac76cSJohn Daley (((rss_type & CQ_ENET_RQ_DESC_RSS_TYPE_MASK) <<
15272f3de30SBruce Richardson CQ_DESC_Q_NUM_BITS) |
15372f3de30SBruce Richardson (csum_not_calc ? CQ_ENET_RQ_DESC_FLAGS_CSUM_NOT_CALC : 0));
15472f3de30SBruce Richardson
155846ac76cSJohn Daley desc->rss_hash = rte_cpu_to_le_32(rss_hash);
15672f3de30SBruce Richardson
157846ac76cSJohn Daley desc->bytes_written_flags = rte_cpu_to_le_16
158846ac76cSJohn Daley ((bytes_written & CQ_ENET_RQ_DESC_BYTES_WRITTEN_MASK) |
15972f3de30SBruce Richardson (packet_error ? CQ_ENET_RQ_DESC_FLAGS_TRUNCATED : 0) |
16072f3de30SBruce Richardson (vlan_stripped ? CQ_ENET_RQ_DESC_FLAGS_VLAN_STRIPPED : 0));
16172f3de30SBruce Richardson
162846ac76cSJohn Daley desc->vlan = rte_cpu_to_le_16(vlan);
16372f3de30SBruce Richardson
16472f3de30SBruce Richardson if (fcoe) {
165846ac76cSJohn Daley desc->checksum_fcoe = rte_cpu_to_le_16
166846ac76cSJohn Daley ((fcoe_sof & CQ_ENET_RQ_DESC_FCOE_SOF_MASK) |
16772f3de30SBruce Richardson ((fcoe_eof & CQ_ENET_RQ_DESC_FCOE_EOF_MASK) <<
16872f3de30SBruce Richardson CQ_ENET_RQ_DESC_FCOE_EOF_SHIFT));
16972f3de30SBruce Richardson } else {
170846ac76cSJohn Daley desc->checksum_fcoe = rte_cpu_to_le_16(checksum);
17172f3de30SBruce Richardson }
17272f3de30SBruce Richardson
17372f3de30SBruce Richardson desc->flags =
17472f3de30SBruce Richardson (tcp_udp_csum_ok ? CQ_ENET_RQ_DESC_FLAGS_TCP_UDP_CSUM_OK : 0) |
17572f3de30SBruce Richardson (udp ? CQ_ENET_RQ_DESC_FLAGS_UDP : 0) |
17672f3de30SBruce Richardson (tcp ? CQ_ENET_RQ_DESC_FLAGS_TCP : 0) |
17772f3de30SBruce Richardson (ipv4_csum_ok ? CQ_ENET_RQ_DESC_FLAGS_IPV4_CSUM_OK : 0) |
17872f3de30SBruce Richardson (ipv6 ? CQ_ENET_RQ_DESC_FLAGS_IPV6 : 0) |
17972f3de30SBruce Richardson (ipv4 ? CQ_ENET_RQ_DESC_FLAGS_IPV4 : 0) |
18072f3de30SBruce Richardson (ipv4_fragment ? CQ_ENET_RQ_DESC_FLAGS_IPV4_FRAGMENT : 0) |
18172f3de30SBruce Richardson (fcs_ok ? CQ_ENET_RQ_DESC_FLAGS_FCS_OK : 0) |
18272f3de30SBruce Richardson (fcoe_fc_crc_ok ? CQ_ENET_RQ_DESC_FCOE_FC_CRC_OK : 0) |
18372f3de30SBruce Richardson (fcoe_enc_error ? CQ_ENET_RQ_DESC_FCOE_ENC_ERROR : 0);
18472f3de30SBruce Richardson }
18572f3de30SBruce Richardson
cq_enet_rq_desc_dec(struct cq_enet_rq_desc * desc,uint8_t * type,uint8_t * color,uint16_t * q_number,uint16_t * completed_index,uint8_t * ingress_port,uint8_t * fcoe,uint8_t * eop,uint8_t * sop,uint8_t * rss_type,uint8_t * csum_not_calc,uint32_t * rss_hash,uint16_t * bytes_written,uint8_t * packet_error,uint8_t * vlan_stripped,uint16_t * vlan_tci,uint16_t * checksum,uint8_t * fcoe_sof,uint8_t * fcoe_fc_crc_ok,uint8_t * fcoe_enc_error,uint8_t * fcoe_eof,uint8_t * tcp_udp_csum_ok,uint8_t * udp,uint8_t * tcp,uint8_t * ipv4_csum_ok,uint8_t * ipv6,uint8_t * ipv4,uint8_t * ipv4_fragment,uint8_t * fcs_ok)18672f3de30SBruce Richardson static inline void cq_enet_rq_desc_dec(struct cq_enet_rq_desc *desc,
18704e8ec74SJohn Daley uint8_t *type, uint8_t *color, uint16_t *q_number,
18804e8ec74SJohn Daley uint16_t *completed_index, uint8_t *ingress_port, uint8_t *fcoe,
18904e8ec74SJohn Daley uint8_t *eop, uint8_t *sop, uint8_t *rss_type, uint8_t *csum_not_calc,
19004e8ec74SJohn Daley uint32_t *rss_hash, uint16_t *bytes_written, uint8_t *packet_error,
19104e8ec74SJohn Daley uint8_t *vlan_stripped, uint16_t *vlan_tci, uint16_t *checksum,
19204e8ec74SJohn Daley uint8_t *fcoe_sof, uint8_t *fcoe_fc_crc_ok, uint8_t *fcoe_enc_error,
19304e8ec74SJohn Daley uint8_t *fcoe_eof, uint8_t *tcp_udp_csum_ok, uint8_t *udp, uint8_t *tcp,
19404e8ec74SJohn Daley uint8_t *ipv4_csum_ok, uint8_t *ipv6, uint8_t *ipv4,
19504e8ec74SJohn Daley uint8_t *ipv4_fragment, uint8_t *fcs_ok)
19672f3de30SBruce Richardson {
19704e8ec74SJohn Daley uint16_t completed_index_flags;
19804e8ec74SJohn Daley uint16_t q_number_rss_type_flags;
19904e8ec74SJohn Daley uint16_t bytes_written_flags;
20072f3de30SBruce Richardson
20172f3de30SBruce Richardson cq_desc_dec((struct cq_desc *)desc, type,
20272f3de30SBruce Richardson color, q_number, completed_index);
20372f3de30SBruce Richardson
204846ac76cSJohn Daley completed_index_flags = rte_le_to_cpu_16(desc->completed_index_flags);
20572f3de30SBruce Richardson q_number_rss_type_flags =
206846ac76cSJohn Daley rte_le_to_cpu_16(desc->q_number_rss_type_flags);
207846ac76cSJohn Daley bytes_written_flags = rte_le_to_cpu_16(desc->bytes_written_flags);
20872f3de30SBruce Richardson
20972f3de30SBruce Richardson *ingress_port = (completed_index_flags &
21072f3de30SBruce Richardson CQ_ENET_RQ_DESC_FLAGS_INGRESS_PORT) ? 1 : 0;
21172f3de30SBruce Richardson *fcoe = (completed_index_flags & CQ_ENET_RQ_DESC_FLAGS_FCOE) ?
21272f3de30SBruce Richardson 1 : 0;
21372f3de30SBruce Richardson *eop = (completed_index_flags & CQ_ENET_RQ_DESC_FLAGS_EOP) ?
21472f3de30SBruce Richardson 1 : 0;
21572f3de30SBruce Richardson *sop = (completed_index_flags & CQ_ENET_RQ_DESC_FLAGS_SOP) ?
21672f3de30SBruce Richardson 1 : 0;
21772f3de30SBruce Richardson
21804e8ec74SJohn Daley *rss_type = (uint8_t)((q_number_rss_type_flags >> CQ_DESC_Q_NUM_BITS) &
21972f3de30SBruce Richardson CQ_ENET_RQ_DESC_RSS_TYPE_MASK);
22072f3de30SBruce Richardson *csum_not_calc = (q_number_rss_type_flags &
22172f3de30SBruce Richardson CQ_ENET_RQ_DESC_FLAGS_CSUM_NOT_CALC) ? 1 : 0;
22272f3de30SBruce Richardson
223846ac76cSJohn Daley *rss_hash = rte_le_to_cpu_32(desc->rss_hash);
22472f3de30SBruce Richardson
22572f3de30SBruce Richardson *bytes_written = bytes_written_flags &
22672f3de30SBruce Richardson CQ_ENET_RQ_DESC_BYTES_WRITTEN_MASK;
22772f3de30SBruce Richardson *packet_error = (bytes_written_flags &
22872f3de30SBruce Richardson CQ_ENET_RQ_DESC_FLAGS_TRUNCATED) ? 1 : 0;
22972f3de30SBruce Richardson *vlan_stripped = (bytes_written_flags &
23072f3de30SBruce Richardson CQ_ENET_RQ_DESC_FLAGS_VLAN_STRIPPED) ? 1 : 0;
23172f3de30SBruce Richardson
23272f3de30SBruce Richardson /*
23372f3de30SBruce Richardson * Tag Control Information(16) = user_priority(3) + cfi(1) + vlan(12)
23472f3de30SBruce Richardson */
235846ac76cSJohn Daley *vlan_tci = rte_le_to_cpu_16(desc->vlan);
23672f3de30SBruce Richardson
23772f3de30SBruce Richardson if (*fcoe) {
23804e8ec74SJohn Daley *fcoe_sof = (uint8_t)(rte_le_to_cpu_16(desc->checksum_fcoe) &
23972f3de30SBruce Richardson CQ_ENET_RQ_DESC_FCOE_SOF_MASK);
24072f3de30SBruce Richardson *fcoe_fc_crc_ok = (desc->flags &
24172f3de30SBruce Richardson CQ_ENET_RQ_DESC_FCOE_FC_CRC_OK) ? 1 : 0;
24272f3de30SBruce Richardson *fcoe_enc_error = (desc->flags &
24372f3de30SBruce Richardson CQ_ENET_RQ_DESC_FCOE_ENC_ERROR) ? 1 : 0;
24404e8ec74SJohn Daley *fcoe_eof = (uint8_t)((rte_le_to_cpu_16(desc->checksum_fcoe) >>
24572f3de30SBruce Richardson CQ_ENET_RQ_DESC_FCOE_EOF_SHIFT) &
24672f3de30SBruce Richardson CQ_ENET_RQ_DESC_FCOE_EOF_MASK);
24772f3de30SBruce Richardson *checksum = 0;
24872f3de30SBruce Richardson } else {
24972f3de30SBruce Richardson *fcoe_sof = 0;
25072f3de30SBruce Richardson *fcoe_fc_crc_ok = 0;
25172f3de30SBruce Richardson *fcoe_enc_error = 0;
25272f3de30SBruce Richardson *fcoe_eof = 0;
253846ac76cSJohn Daley *checksum = rte_le_to_cpu_16(desc->checksum_fcoe);
25472f3de30SBruce Richardson }
25572f3de30SBruce Richardson
25672f3de30SBruce Richardson *tcp_udp_csum_ok =
25772f3de30SBruce Richardson (desc->flags & CQ_ENET_RQ_DESC_FLAGS_TCP_UDP_CSUM_OK) ? 1 : 0;
25872f3de30SBruce Richardson *udp = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_UDP) ? 1 : 0;
25972f3de30SBruce Richardson *tcp = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_TCP) ? 1 : 0;
26072f3de30SBruce Richardson *ipv4_csum_ok =
26172f3de30SBruce Richardson (desc->flags & CQ_ENET_RQ_DESC_FLAGS_IPV4_CSUM_OK) ? 1 : 0;
26272f3de30SBruce Richardson *ipv6 = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_IPV6) ? 1 : 0;
26372f3de30SBruce Richardson *ipv4 = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_IPV4) ? 1 : 0;
26472f3de30SBruce Richardson *ipv4_fragment =
26572f3de30SBruce Richardson (desc->flags & CQ_ENET_RQ_DESC_FLAGS_IPV4_FRAGMENT) ? 1 : 0;
26672f3de30SBruce Richardson *fcs_ok = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_FCS_OK) ? 1 : 0;
26772f3de30SBruce Richardson }
26872f3de30SBruce Richardson
26972f3de30SBruce Richardson #endif /* _CQ_ENET_DESC_H_ */
270