133 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*****************************************************************************3 * *4 * File: gmac.h *5 * $Revision: 1.6 $ *6 * $Date: 2005/06/21 18:29:47 $ *7 * Description: *8 * Generic MAC functionality. *9 * part of the Chelsio 10Gb Ethernet Driver. *10 * *11 * *12 * http://www.chelsio.com *13 * *14 * Copyright (c) 2003 - 2005 Chelsio Communications, Inc. *15 * All rights reserved. *16 * *17 * Maintainers: maintainers@chelsio.com *18 * *19 * Authors: Dimitrios Michailidis <dm@chelsio.com> *20 * Tina Yang <tainay@chelsio.com> *21 * Felix Marti <felix@chelsio.com> *22 * Scott Bardone <sbardone@chelsio.com> *23 * Kurt Ottaway <kottaway@chelsio.com> *24 * Frank DiMambro <frank@chelsio.com> *25 * *26 * History: *27 * *28 ****************************************************************************/29 30#ifndef _CXGB_GMAC_H_31#define _CXGB_GMAC_H_32 33#include "common.h"34 35enum {36 MAC_STATS_UPDATE_FAST,37 MAC_STATS_UPDATE_FULL38};39 40enum {41 MAC_DIRECTION_RX = 1,42 MAC_DIRECTION_TX = 243};44 45struct cmac_statistics {46 /* Transmit */47 u64 TxOctetsOK;48 u64 TxOctetsBad;49 u64 TxUnicastFramesOK;50 u64 TxMulticastFramesOK;51 u64 TxBroadcastFramesOK;52 u64 TxPauseFrames;53 u64 TxFramesWithDeferredXmissions;54 u64 TxLateCollisions;55 u64 TxTotalCollisions;56 u64 TxFramesAbortedDueToXSCollisions;57 u64 TxUnderrun;58 u64 TxLengthErrors;59 u64 TxInternalMACXmitError;60 u64 TxFramesWithExcessiveDeferral;61 u64 TxFCSErrors;62 u64 TxJumboFramesOK;63 u64 TxJumboOctetsOK;64 65 /* Receive */66 u64 RxOctetsOK;67 u64 RxOctetsBad;68 u64 RxUnicastFramesOK;69 u64 RxMulticastFramesOK;70 u64 RxBroadcastFramesOK;71 u64 RxPauseFrames;72 u64 RxFCSErrors;73 u64 RxAlignErrors;74 u64 RxSymbolErrors;75 u64 RxDataErrors;76 u64 RxSequenceErrors;77 u64 RxRuntErrors;78 u64 RxJabberErrors;79 u64 RxInternalMACRcvError;80 u64 RxInRangeLengthErrors;81 u64 RxOutOfRangeLengthField;82 u64 RxFrameTooLongErrors;83 u64 RxJumboFramesOK;84 u64 RxJumboOctetsOK;85};86 87struct cmac_ops {88 void (*destroy)(struct cmac *);89 int (*reset)(struct cmac *);90 int (*interrupt_enable)(struct cmac *);91 int (*interrupt_disable)(struct cmac *);92 int (*interrupt_clear)(struct cmac *);93 int (*interrupt_handler)(struct cmac *);94 95 int (*enable)(struct cmac *, int);96 int (*disable)(struct cmac *, int);97 98 int (*loopback_enable)(struct cmac *);99 int (*loopback_disable)(struct cmac *);100 101 int (*set_mtu)(struct cmac *, int mtu);102 int (*set_rx_mode)(struct cmac *, struct t1_rx_mode *rm);103 104 int (*set_speed_duplex_fc)(struct cmac *, int speed, int duplex, int fc);105 int (*get_speed_duplex_fc)(struct cmac *, int *speed, int *duplex,106 int *fc);107 108 const struct cmac_statistics *(*statistics_update)(struct cmac *, int);109 110 int (*macaddress_get)(struct cmac *, u8 mac_addr[6]);111 int (*macaddress_set)(struct cmac *, const u8 mac_addr[6]);112};113 114typedef struct _cmac_instance cmac_instance;115 116struct cmac {117 struct cmac_statistics stats;118 adapter_t *adapter;119 const struct cmac_ops *ops;120 cmac_instance *instance;121};122 123struct gmac {124 unsigned int stats_update_period;125 struct cmac *(*create)(adapter_t *adapter, int index);126 int (*reset)(adapter_t *);127};128 129extern const struct gmac t1_pm3393_ops;130extern const struct gmac t1_vsc7326_ops;131 132#endif /* _CXGB_GMAC_H_ */133