101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman/* 229046f9b1e36f6e3332ce2d8e366005fd177b37aVasanthy Kolluri * Copyright 2008-2010 Cisco Systems, Inc. All rights reserved. 301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * Copyright 2007 Nuova Systems, Inc. All rights reserved. 401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * 501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * This program is free software; you may redistribute it and/or modify 601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * it under the terms of the GNU General Public License as published by 701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * the Free Software Foundation; version 2 of the License. 801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * 901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 1201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 1301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 1401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 1501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 1601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * SOFTWARE. 1701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman * 1801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman */ 1901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 2001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#ifndef _CQ_ENET_DESC_H_ 2101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define _CQ_ENET_DESC_H_ 2201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 2301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#include "cq_desc.h" 2401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 2501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman/* Ethernet completion queue descriptor: 16B */ 2601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldmanstruct cq_enet_wq_desc { 2701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman __le16 completed_index; 2801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman __le16 q_number; 2901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 reserved[11]; 3001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 type_color; 3101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman}; 3201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 3301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldmanstatic inline void cq_enet_wq_desc_dec(struct cq_enet_wq_desc *desc, 3401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 *type, u8 *color, u16 *q_number, u16 *completed_index) 3501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman{ 3601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman cq_desc_dec((struct cq_desc *)desc, type, 3701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman color, q_number, completed_index); 3801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman} 3901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 4001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman/* Completion queue descriptor: Ethernet receive queue, 16B */ 4101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldmanstruct cq_enet_rq_desc { 4201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman __le16 completed_index_flags; 4301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman __le16 q_number_rss_type_flags; 4401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman __le32 rss_hash; 4501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman __le16 bytes_written_flags; 4601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman __le16 vlan; 4701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman __le16 checksum_fcoe; 4801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 flags; 4901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 type_color; 5001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman}; 5101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 5201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_INGRESS_PORT (0x1 << 12) 5301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_FCOE (0x1 << 13) 5401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_EOP (0x1 << 14) 5501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_SOP (0x1 << 15) 5601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 5701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_RSS_TYPE_BITS 4 5801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_RSS_TYPE_MASK \ 5901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman ((1 << CQ_ENET_RQ_DESC_RSS_TYPE_BITS) - 1) 6001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_RSS_TYPE_NONE 0 6101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_RSS_TYPE_IPv4 1 6201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_RSS_TYPE_TCP_IPv4 2 6301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_RSS_TYPE_IPv6 3 6401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_RSS_TYPE_TCP_IPv6 4 6501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_RSS_TYPE_IPv6_EX 5 6601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_RSS_TYPE_TCP_IPv6_EX 6 6701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 6801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_CSUM_NOT_CALC (0x1 << 14) 6901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 7001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_BYTES_WRITTEN_BITS 14 7101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_BYTES_WRITTEN_MASK \ 7201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman ((1 << CQ_ENET_RQ_DESC_BYTES_WRITTEN_BITS) - 1) 7301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_TRUNCATED (0x1 << 14) 7401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_VLAN_STRIPPED (0x1 << 15) 7501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 76f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri#define CQ_ENET_RQ_DESC_VLAN_TCI_VLAN_BITS 12 77f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri#define CQ_ENET_RQ_DESC_VLAN_TCI_VLAN_MASK \ 78f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri ((1 << CQ_ENET_RQ_DESC_VLAN_TCI_VLAN_BITS) - 1) 79f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri#define CQ_ENET_RQ_DESC_VLAN_TCI_CFI_MASK (0x1 << 12) 80f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri#define CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_BITS 3 81f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri#define CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_MASK \ 82f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri ((1 << CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_BITS) - 1) 83f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri#define CQ_ENET_RQ_DESC_VLAN_TCI_USER_PRIO_SHIFT 13 84f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri 8529046f9b1e36f6e3332ce2d8e366005fd177b37aVasanthy Kolluri#define CQ_ENET_RQ_DESC_FCOE_SOF_BITS 8 8601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FCOE_SOF_MASK \ 8701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman ((1 << CQ_ENET_RQ_DESC_FCOE_SOF_BITS) - 1) 8801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FCOE_EOF_BITS 8 8901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FCOE_EOF_MASK \ 9001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman ((1 << CQ_ENET_RQ_DESC_FCOE_EOF_BITS) - 1) 9101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FCOE_EOF_SHIFT 8 9201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 9301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_TCP_UDP_CSUM_OK (0x1 << 0) 9401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FCOE_FC_CRC_OK (0x1 << 0) 9501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_UDP (0x1 << 1) 9601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FCOE_ENC_ERROR (0x1 << 1) 9701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_TCP (0x1 << 2) 9801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_IPV4_CSUM_OK (0x1 << 3) 9901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_IPV6 (0x1 << 4) 10001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_IPV4 (0x1 << 5) 10101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_IPV4_FRAGMENT (0x1 << 6) 10201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#define CQ_ENET_RQ_DESC_FLAGS_FCS_OK (0x1 << 7) 10301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 10401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldmanstatic inline void cq_enet_rq_desc_dec(struct cq_enet_rq_desc *desc, 10501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 *type, u8 *color, u16 *q_number, u16 *completed_index, 10601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 *ingress_port, u8 *fcoe, u8 *eop, u8 *sop, u8 *rss_type, 10701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 *csum_not_calc, u32 *rss_hash, u16 *bytes_written, u8 *packet_error, 108f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri u8 *vlan_stripped, u16 *vlan_tci, u16 *checksum, u8 *fcoe_sof, 10901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 *fcoe_fc_crc_ok, u8 *fcoe_enc_error, u8 *fcoe_eof, 11001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 *tcp_udp_csum_ok, u8 *udp, u8 *tcp, u8 *ipv4_csum_ok, 11101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman u8 *ipv6, u8 *ipv4, u8 *ipv4_fragment, u8 *fcs_ok) 11201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman{ 113a55a603dae47a1ea4fbfad3a3a428ea7a0900ab6Vasanthy Kolluri u16 completed_index_flags; 114a55a603dae47a1ea4fbfad3a3a428ea7a0900ab6Vasanthy Kolluri u16 q_number_rss_type_flags; 115a55a603dae47a1ea4fbfad3a3a428ea7a0900ab6Vasanthy Kolluri u16 bytes_written_flags; 11601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 11701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman cq_desc_dec((struct cq_desc *)desc, type, 11801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman color, q_number, completed_index); 11901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 120a55a603dae47a1ea4fbfad3a3a428ea7a0900ab6Vasanthy Kolluri completed_index_flags = le16_to_cpu(desc->completed_index_flags); 121a55a603dae47a1ea4fbfad3a3a428ea7a0900ab6Vasanthy Kolluri q_number_rss_type_flags = 122a55a603dae47a1ea4fbfad3a3a428ea7a0900ab6Vasanthy Kolluri le16_to_cpu(desc->q_number_rss_type_flags); 123a55a603dae47a1ea4fbfad3a3a428ea7a0900ab6Vasanthy Kolluri bytes_written_flags = le16_to_cpu(desc->bytes_written_flags); 124a55a603dae47a1ea4fbfad3a3a428ea7a0900ab6Vasanthy Kolluri 12501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *ingress_port = (completed_index_flags & 12601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_FLAGS_INGRESS_PORT) ? 1 : 0; 12701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *fcoe = (completed_index_flags & CQ_ENET_RQ_DESC_FLAGS_FCOE) ? 12801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 1 : 0; 12901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *eop = (completed_index_flags & CQ_ENET_RQ_DESC_FLAGS_EOP) ? 13001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 1 : 0; 13101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *sop = (completed_index_flags & CQ_ENET_RQ_DESC_FLAGS_SOP) ? 13201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 1 : 0; 13301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 13401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *rss_type = (u8)((q_number_rss_type_flags >> CQ_DESC_Q_NUM_BITS) & 13501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_RSS_TYPE_MASK); 13601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *csum_not_calc = (q_number_rss_type_flags & 13701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_FLAGS_CSUM_NOT_CALC) ? 1 : 0; 13801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 13901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *rss_hash = le32_to_cpu(desc->rss_hash); 14001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 14101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *bytes_written = bytes_written_flags & 14201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_BYTES_WRITTEN_MASK; 14301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *packet_error = (bytes_written_flags & 14401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_FLAGS_TRUNCATED) ? 1 : 0; 14501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *vlan_stripped = (bytes_written_flags & 14601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_FLAGS_VLAN_STRIPPED) ? 1 : 0; 14701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 148f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri /* 149f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri * Tag Control Information(16) = user_priority(3) + cfi(1) + vlan(12) 150f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri */ 151f8cac14acff870203ea7f61f1a92c5486d1774faVasanthy Kolluri *vlan_tci = le16_to_cpu(desc->vlan); 15201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 15301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman if (*fcoe) { 15401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *fcoe_sof = (u8)(le16_to_cpu(desc->checksum_fcoe) & 15501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_FCOE_SOF_MASK); 15601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *fcoe_fc_crc_ok = (desc->flags & 15701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_FCOE_FC_CRC_OK) ? 1 : 0; 15801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *fcoe_enc_error = (desc->flags & 15901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_FCOE_ENC_ERROR) ? 1 : 0; 16021ca54e99b085b9ff4c91ca41afe42a439966109Santosh Nayak *fcoe_eof = (u8)((le16_to_cpu(desc->checksum_fcoe) >> 16101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_FCOE_EOF_SHIFT) & 16201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman CQ_ENET_RQ_DESC_FCOE_EOF_MASK); 16301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *checksum = 0; 16401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman } else { 16501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *fcoe_sof = 0; 16601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *fcoe_fc_crc_ok = 0; 16701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *fcoe_enc_error = 0; 16801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *fcoe_eof = 0; 16901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *checksum = le16_to_cpu(desc->checksum_fcoe); 17001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman } 17101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 17201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *tcp_udp_csum_ok = 17301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman (desc->flags & CQ_ENET_RQ_DESC_FLAGS_TCP_UDP_CSUM_OK) ? 1 : 0; 17401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *udp = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_UDP) ? 1 : 0; 17501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *tcp = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_TCP) ? 1 : 0; 17601f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *ipv4_csum_ok = 17701f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman (desc->flags & CQ_ENET_RQ_DESC_FLAGS_IPV4_CSUM_OK) ? 1 : 0; 17801f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *ipv6 = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_IPV6) ? 1 : 0; 17901f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *ipv4 = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_IPV4) ? 1 : 0; 18001f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *ipv4_fragment = 18101f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman (desc->flags & CQ_ENET_RQ_DESC_FLAGS_IPV4_FRAGMENT) ? 1 : 0; 18201f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman *fcs_ok = (desc->flags & CQ_ENET_RQ_DESC_FLAGS_FCS_OK) ? 1 : 0; 18301f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman} 18401f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman 18501f2e4ead2c51226ed1283ef6a8388ca6f4cff8fScott Feldman#endif /* _CQ_ENET_DESC_H_ */ 186