| /***************************************************************************** | 
 |  *                                                                           * | 
 |  * 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_ */ |