123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /*****************************************************************************
- * *
- * File: cpl5_cmd.h *
- * $Revision: 1.6 $ *
- * $Date: 2005/06/21 18:29:47 $ *
- * Description: *
- * part of the Chelsio 10Gb Ethernet Driver. *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License, version 2, as *
- * published by the Free Software Foundation. *
- * *
- * You should have received a copy of the GNU General Public License along *
- * with this program; if not, write to the Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- * *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED *
- * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF *
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. *
- * *
- * http://www.chelsio.com *
- * *
- * Copyright (c) 2003 - 2005 Chelsio Communications, Inc. *
- * All rights reserved. *
- * *
- * Maintainers: maintainers@chelsio.com *
- * *
- * Authors: Dimitrios Michailidis <dm@chelsio.com> *
- * Tina Yang <tainay@chelsio.com> *
- * Felix Marti <felix@chelsio.com> *
- * Scott Bardone <sbardone@chelsio.com> *
- * Kurt Ottaway <kottaway@chelsio.com> *
- * Frank DiMambro <frank@chelsio.com> *
- * *
- * History: *
- * *
- ****************************************************************************/
- #ifndef _CXGB_CPL5_CMD_H_
- #define _CXGB_CPL5_CMD_H_
- #include <asm/byteorder.h>
- #if !defined(__LITTLE_ENDIAN_BITFIELD) && !defined(__BIG_ENDIAN_BITFIELD)
- #error "Adjust your <asm/byteorder.h> defines"
- #endif
- enum CPL_opcode {
- CPL_RX_PKT = 0xAD,
- CPL_TX_PKT = 0xB2,
- CPL_TX_PKT_LSO = 0xB6,
- };
- enum { /* TX_PKT_LSO ethernet types */
- CPL_ETH_II,
- CPL_ETH_II_VLAN,
- CPL_ETH_802_3,
- CPL_ETH_802_3_VLAN
- };
- struct cpl_rx_data {
- u32 rsvd0;
- u32 len;
- u32 seq;
- u16 urg;
- u8 rsvd1;
- u8 status;
- };
- /*
- * We want this header's alignment to be no more stringent than 2-byte aligned.
- * All fields are u8 or u16 except for the length. However that field is not
- * used so we break it into 2 16-bit parts to easily meet our alignment needs.
- */
- struct cpl_tx_pkt {
- u8 opcode;
- #if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 iff:4;
- u8 ip_csum_dis:1;
- u8 l4_csum_dis:1;
- u8 vlan_valid:1;
- u8 rsvd:1;
- #else
- u8 rsvd:1;
- u8 vlan_valid:1;
- u8 l4_csum_dis:1;
- u8 ip_csum_dis:1;
- u8 iff:4;
- #endif
- u16 vlan;
- u16 len_hi;
- u16 len_lo;
- };
- struct cpl_tx_pkt_lso {
- u8 opcode;
- #if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 iff:4;
- u8 ip_csum_dis:1;
- u8 l4_csum_dis:1;
- u8 vlan_valid:1;
- u8 rsvd:1;
- #else
- u8 rsvd:1;
- u8 vlan_valid:1;
- u8 l4_csum_dis:1;
- u8 ip_csum_dis:1;
- u8 iff:4;
- #endif
- u16 vlan;
- u32 len;
- u32 rsvd2;
- u8 rsvd3;
- #if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 tcp_hdr_words:4;
- u8 ip_hdr_words:4;
- #else
- u8 ip_hdr_words:4;
- u8 tcp_hdr_words:4;
- #endif
- u16 eth_type_mss;
- };
- struct cpl_rx_pkt {
- u8 opcode;
- #if defined(__LITTLE_ENDIAN_BITFIELD)
- u8 iff:4;
- u8 csum_valid:1;
- u8 bad_pkt:1;
- u8 vlan_valid:1;
- u8 rsvd:1;
- #else
- u8 rsvd:1;
- u8 vlan_valid:1;
- u8 bad_pkt:1;
- u8 csum_valid:1;
- u8 iff:4;
- #endif
- u16 csum;
- u16 vlan;
- u16 len;
- };
- #endif /* _CXGB_CPL5_CMD_H_ */
|