Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*****************************************************************************
0003  *                                                                           *
0004  * File: gmac.h                                                              *
0005  * $Revision: 1.6 $                                                          *
0006  * $Date: 2005/06/21 18:29:47 $                                              *
0007  * Description:                                                              *
0008  *  Generic MAC functionality.                                               *
0009  *  part of the Chelsio 10Gb Ethernet Driver.                                *
0010  *                                                                           *
0011  *                                                                           *
0012  * http://www.chelsio.com                                                    *
0013  *                                                                           *
0014  * Copyright (c) 2003 - 2005 Chelsio Communications, Inc.                    *
0015  * All rights reserved.                                                      *
0016  *                                                                           *
0017  * Maintainers: maintainers@chelsio.com                                      *
0018  *                                                                           *
0019  * Authors: Dimitrios Michailidis   <dm@chelsio.com>                         *
0020  *          Tina Yang               <tainay@chelsio.com>                     *
0021  *          Felix Marti             <felix@chelsio.com>                      *
0022  *          Scott Bardone           <sbardone@chelsio.com>                   *
0023  *          Kurt Ottaway            <kottaway@chelsio.com>                   *
0024  *          Frank DiMambro          <frank@chelsio.com>                      *
0025  *                                                                           *
0026  * History:                                                                  *
0027  *                                                                           *
0028  ****************************************************************************/
0029 
0030 #ifndef _CXGB_GMAC_H_
0031 #define _CXGB_GMAC_H_
0032 
0033 #include "common.h"
0034 
0035 enum {
0036     MAC_STATS_UPDATE_FAST,
0037     MAC_STATS_UPDATE_FULL
0038 };
0039 
0040 enum {
0041     MAC_DIRECTION_RX = 1,
0042     MAC_DIRECTION_TX = 2
0043 };
0044 
0045 struct cmac_statistics {
0046     /* Transmit */
0047     u64 TxOctetsOK;
0048     u64 TxOctetsBad;
0049     u64 TxUnicastFramesOK;
0050     u64 TxMulticastFramesOK;
0051     u64 TxBroadcastFramesOK;
0052     u64 TxPauseFrames;
0053     u64 TxFramesWithDeferredXmissions;
0054     u64 TxLateCollisions;
0055     u64 TxTotalCollisions;
0056     u64 TxFramesAbortedDueToXSCollisions;
0057     u64 TxUnderrun;
0058     u64 TxLengthErrors;
0059     u64 TxInternalMACXmitError;
0060     u64 TxFramesWithExcessiveDeferral;
0061     u64 TxFCSErrors;
0062     u64 TxJumboFramesOK;
0063     u64 TxJumboOctetsOK;
0064 
0065     /* Receive */
0066     u64 RxOctetsOK;
0067     u64 RxOctetsBad;
0068     u64 RxUnicastFramesOK;
0069     u64 RxMulticastFramesOK;
0070     u64 RxBroadcastFramesOK;
0071     u64 RxPauseFrames;
0072     u64 RxFCSErrors;
0073     u64 RxAlignErrors;
0074     u64 RxSymbolErrors;
0075     u64 RxDataErrors;
0076     u64 RxSequenceErrors;
0077     u64 RxRuntErrors;
0078     u64 RxJabberErrors;
0079     u64 RxInternalMACRcvError;
0080     u64 RxInRangeLengthErrors;
0081     u64 RxOutOfRangeLengthField;
0082     u64 RxFrameTooLongErrors;
0083     u64 RxJumboFramesOK;
0084     u64 RxJumboOctetsOK;
0085 };
0086 
0087 struct cmac_ops {
0088     void (*destroy)(struct cmac *);
0089     int (*reset)(struct cmac *);
0090     int (*interrupt_enable)(struct cmac *);
0091     int (*interrupt_disable)(struct cmac *);
0092     int (*interrupt_clear)(struct cmac *);
0093     int (*interrupt_handler)(struct cmac *);
0094 
0095     int (*enable)(struct cmac *, int);
0096     int (*disable)(struct cmac *, int);
0097 
0098     int (*loopback_enable)(struct cmac *);
0099     int (*loopback_disable)(struct cmac *);
0100 
0101     int (*set_mtu)(struct cmac *, int mtu);
0102     int (*set_rx_mode)(struct cmac *, struct t1_rx_mode *rm);
0103 
0104     int (*set_speed_duplex_fc)(struct cmac *, int speed, int duplex, int fc);
0105     int (*get_speed_duplex_fc)(struct cmac *, int *speed, int *duplex,
0106                    int *fc);
0107 
0108     const struct cmac_statistics *(*statistics_update)(struct cmac *, int);
0109 
0110     int (*macaddress_get)(struct cmac *, u8 mac_addr[6]);
0111     int (*macaddress_set)(struct cmac *, const u8 mac_addr[6]);
0112 };
0113 
0114 typedef struct _cmac_instance cmac_instance;
0115 
0116 struct cmac {
0117     struct cmac_statistics stats;
0118     adapter_t *adapter;
0119     const struct cmac_ops *ops;
0120     cmac_instance *instance;
0121 };
0122 
0123 struct gmac {
0124     unsigned int stats_update_period;
0125     struct cmac *(*create)(adapter_t *adapter, int index);
0126     int (*reset)(adapter_t *);
0127 };
0128 
0129 extern const struct gmac t1_pm3393_ops;
0130 extern const struct gmac t1_vsc7326_ops;
0131 
0132 #endif /* _CXGB_GMAC_H_ */