Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | /* SPDX-License-Identifier: GPL-2.0-only */ /***************************************************************************** * * * File: gmac.h * * $Revision: 1.6 $ * * $Date: 2005/06/21 18:29:47 $ * * Description: * * Generic MAC functionality. * * part of the Chelsio 10Gb Ethernet Driver. * * * * * * 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 *, const 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_ */ |