|  | /***************************************************************************** | 
|  | *                                                                           * | 
|  | * File: gmac.h                                                              * | 
|  | * $Revision: 1.6 $                                                          * | 
|  | * $Date: 2005/06/21 18:29:47 $                                              * | 
|  | * Description:                                                              * | 
|  | *  Generic MAC functionality.                                               * | 
|  | *  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, see <http://www.gnu.org/licenses/>.            * | 
|  | *                                                                           * | 
|  | * 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_GMAC_H_ | 
|  | #define _CXGB_GMAC_H_ | 
|  |  | 
|  | #include "common.h" | 
|  |  | 
|  | enum { | 
|  | MAC_STATS_UPDATE_FAST, | 
|  | MAC_STATS_UPDATE_FULL | 
|  | }; | 
|  |  | 
|  | enum { | 
|  | MAC_DIRECTION_RX = 1, | 
|  | MAC_DIRECTION_TX = 2 | 
|  | }; | 
|  |  | 
|  | struct cmac_statistics { | 
|  | /* Transmit */ | 
|  | u64 TxOctetsOK; | 
|  | u64 TxOctetsBad; | 
|  | u64 TxUnicastFramesOK; | 
|  | u64 TxMulticastFramesOK; | 
|  | u64 TxBroadcastFramesOK; | 
|  | u64 TxPauseFrames; | 
|  | u64 TxFramesWithDeferredXmissions; | 
|  | u64 TxLateCollisions; | 
|  | u64 TxTotalCollisions; | 
|  | u64 TxFramesAbortedDueToXSCollisions; | 
|  | u64 TxUnderrun; | 
|  | u64 TxLengthErrors; | 
|  | u64 TxInternalMACXmitError; | 
|  | u64 TxFramesWithExcessiveDeferral; | 
|  | u64 TxFCSErrors; | 
|  | u64 TxJumboFramesOK; | 
|  | u64 TxJumboOctetsOK; | 
|  |  | 
|  | /* Receive */ | 
|  | u64 RxOctetsOK; | 
|  | u64 RxOctetsBad; | 
|  | u64 RxUnicastFramesOK; | 
|  | u64 RxMulticastFramesOK; | 
|  | u64 RxBroadcastFramesOK; | 
|  | u64 RxPauseFrames; | 
|  | u64 RxFCSErrors; | 
|  | u64 RxAlignErrors; | 
|  | u64 RxSymbolErrors; | 
|  | u64 RxDataErrors; | 
|  | u64 RxSequenceErrors; | 
|  | u64 RxRuntErrors; | 
|  | u64 RxJabberErrors; | 
|  | u64 RxInternalMACRcvError; | 
|  | u64 RxInRangeLengthErrors; | 
|  | u64 RxOutOfRangeLengthField; | 
|  | u64 RxFrameTooLongErrors; | 
|  | u64 RxJumboFramesOK; | 
|  | u64 RxJumboOctetsOK; | 
|  | }; | 
|  |  | 
|  | struct cmac_ops { | 
|  | void (*destroy)(struct cmac *); | 
|  | int (*reset)(struct cmac *); | 
|  | int (*interrupt_enable)(struct cmac *); | 
|  | int (*interrupt_disable)(struct cmac *); | 
|  | int (*interrupt_clear)(struct cmac *); | 
|  | int (*interrupt_handler)(struct cmac *); | 
|  |  | 
|  | int (*enable)(struct cmac *, int); | 
|  | int (*disable)(struct cmac *, int); | 
|  |  | 
|  | int (*loopback_enable)(struct cmac *); | 
|  | int (*loopback_disable)(struct cmac *); | 
|  |  | 
|  | int (*set_mtu)(struct cmac *, int mtu); | 
|  | int (*set_rx_mode)(struct cmac *, struct t1_rx_mode *rm); | 
|  |  | 
|  | int (*set_speed_duplex_fc)(struct cmac *, int speed, int duplex, int fc); | 
|  | int (*get_speed_duplex_fc)(struct cmac *, int *speed, int *duplex, | 
|  | int *fc); | 
|  |  | 
|  | const struct cmac_statistics *(*statistics_update)(struct cmac *, int); | 
|  |  | 
|  | int (*macaddress_get)(struct cmac *, u8 mac_addr[6]); | 
|  | int (*macaddress_set)(struct cmac *, u8 mac_addr[6]); | 
|  | }; | 
|  |  | 
|  | typedef struct _cmac_instance cmac_instance; | 
|  |  | 
|  | struct cmac { | 
|  | struct cmac_statistics stats; | 
|  | adapter_t *adapter; | 
|  | const struct cmac_ops *ops; | 
|  | cmac_instance *instance; | 
|  | }; | 
|  |  | 
|  | struct gmac { | 
|  | unsigned int stats_update_period; | 
|  | struct cmac *(*create)(adapter_t *adapter, int index); | 
|  | int (*reset)(adapter_t *); | 
|  | }; | 
|  |  | 
|  | extern const struct gmac t1_pm3393_ops; | 
|  | extern const struct gmac t1_vsc7326_ops; | 
|  |  | 
|  | #endif /* _CXGB_GMAC_H_ */ |