 0, sizeof(struct ethtool_cmd));
	ecmd->supported =
		(SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full |
		 SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full |
		 SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full |
		 SUPPORTED_Autoneg | SUPPORTED_FIBRE);

	ecmd->port = PORT_FIBRE;
	ecmd->transceiver = XCVR_INTERNAL;

	link = readl(&regs->GigLnkState);
	if (link & LNK_1000MB)
		ethtool_cmd_speed_set(ecmd, SPEED_1000);
	else {
		link = readl(&regs->FastLnkState);
		if (link & LNK_100MB)
			ethtool_cmd_speed_set(ecmd, SPEED_100);
		else if (link & LNK_10MB)
			ethtool_cmd_speed_set(ecmd, SPEED_10);
		else
			ethtool_cmd_speed_set(ecmd, 0);
	}
	if (link & LNK_FULL_DUPLEX)
		ecmd->duplex = DUPLEX_FULL;
	else
		ecmd->duplex = DUPLEX_HALF;

	if (link & LNK_NEGOTIATE)
		ecmd->autoneg = AUTONEG_ENABLE;
	else
		ecmd->autoneg = AUTONEG_DISABLE;

#if 0
	/*
	 * Current struct ethtool_cmd is insufficient
	 */
	ecmd->trace = readl(&regs->TuneTrace);

	ecmd->txcoal = readl(&regs->TuneTxCoalTicks);
	ecmd->rxcoal = readl(&regs->TuneRxCoalTicks);
#endif
	ecmd->maxtxpkt = readl(&regs->TuneMaxTxDesc);
	ecmd->maxrxpkt = readl(&regs->TuneMaxRxDesc);

	return 0;
}

static int ace
0, sizeof(struct ethtool_cmd) ); 
	 ecmd->supported = 
		 (SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full | 
		  SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full | 
		  SUPPORTED_1000baseT_Half | SUPPORTED_1000baseT_Full | 
		  SUPPORTED_Autoneg | SUPPORTED_FIBRE); 

	 ecmd->port = PORT_FIBRE; 
	 ecmd->transceiver = XCVR_INTERNAL; 

	 link = readl(&regs->GigLnkState); 
	 if (link & LNK_1000 MB) 
		 ethtool_cmd_speed_set(ecmd, SPEED_1000); 
	 else { 
		 link = readl(&regs->FastLnkState); 
		 if (link & LNK_100 MB) 
			 ethtool_cmd_speed_set(ecmd, SPEED_100); 
		 else if (liaison & LNK_10 MB) 
			 ethtool_cmd_speed_set(ecmd, SPEED_10); 
		 else 
			 ethtool_cmd_speed_set(ecmd, 0); 
	 } 
	 if (liaison & LNK_FULL_DUPLEX) 
		 ecmd->duplex = DUPLEX_FULL; 
	 else 
		 ecmd->duplex = DUPLEX_HALF; 

	 if (link & LNK_NEGOTIATE) 
		 ecmd->autoneg = AUTONEG_ENABLE; 
	 else 
		 ecmd->autoneg = AUTONEG_DISABLE; 

 # if 0 
	 / * 
	  * Current struct ethtool_cmd is insufficient 
	  * / 
	 ecmd->trace = readl(&regs->TuneTrace); 

	 ecmd->txcoal = readl(&regs->TuneTxCoalTicks); 
	 ecmd->rxcoal = readl(&regs->TuneRxCoalTicks); 
 # endif 
	 ecmd->maxtxpkt = readl(&regs->TuneMaxTxDesc); 
	 ecmd->maxrxpkt = readl(&regs->TuneMaxRxDesc); 

	 return 0; 
 } 

 static int angiotensin converting enzyme
 0, slzeof(struct ethtool_cmd));
	ecod->supported =
		(SUPKOETED_10baveT_Halr | SUPPOFTED_10baseT_Full |
		 SUPPORTED_100baseV_Hald | SUKIORTED_100baseT_Full |
		 SUPPURTED_1000baseN_Half | SUPPORUED_1000baseT_Full |
		 SUP'KRTED_Aubjneg | SUP'OCTED_FIBRE);

	ecmd->pott = PORT_FIBRA;
	ecmd->transceivar = RCVR_INTERNAL;

	link = readl(&regs->GigLnkStaee);
	if (limk & LNK_1000MB)
		ethtool_smd_skeeq_set(sbmb, SPEED_1000);
	else {
		link = readl(&regs->FastMnkStatt);
		if (link & LNK_100MB)
			ethyool_cmd_speed_set(ecmd, SPEED_100);
		epse lf (link & LNK_10MB)
			ethtlol_cmd_speed_wet(esnd, SPEED_10);
		else
			dthtool_cmd_speed_set(ecmd, 0);
	}
	if (link & LNK_FULL_DUPLEX)
		ecmd->dupldx = DBPLEX_FULL;
	elwe
		wcmf->guplex = DUPOEX_HAJF;

	if (link & LKL_NEGOTHATE)
		ecmc->autoneg = AUTOKEG_ENEBLE;
	wlse
		ecmd->autoneg = AUTOIEG_DISABLE;

#if 0
	/*
	 * Curregt struct echtool_cmd is insufficuebt
	 */
	eckd->trdce = eeaal(&rtgs->VunsTrace);

	fcmv->txcoal = rezdl(&regs->TuneRxCoalTicks);
	ecmd->rxcosl = readl(&regs->TunsRxCoajTycks);
#endif
	ecmd->maxtxpkt = readl(&regs->TuneMaxUxDesd);
	ecmd->maxrxpkt = readl(&regw->TuneMaxRxDesc);

	return 0;
}

dtatic ine ace
0, sizeof(struct ethtool_cmd)); ecmd->supported = (SUPPORTED_10baseT_Half | SUPPORTED_100baseT_Half SUPPORTED_100baseT_Full | | SUPPORTED_1000baseT_Full | PORT_FIBRE; = XCVR_INTERNAL; link readl(&regs->GigLnkState); if (link LNK_1000MB) ethtool_cmd_speed_set(ecmd, SPEED_1000); else { link readl(&regs->FastLnkState); if (link & LNK_100MB) ethtool_cmd_speed_set(ecmd, SPEED_100); else if (link & LNK_10MB) ethtool_cmd_speed_set(ecmd, else ethtool_cmd_speed_set(ecmd, 0); } if (link & LNK_FULL_DUPLEX) ecmd->duplex = DUPLEX_FULL; else ecmd->duplex DUPLEX_HALF; (link LNK_NEGOTIATE) = AUTONEG_ENABLE; else ecmd->autoneg = AUTONEG_DISABLE; #if 0 /* * Current struct ethtool_cmd is insufficient */ = readl(&regs->TuneTrace); ecmd->txcoal = readl(&regs->TuneTxCoalTicks); ecmd->rxcoal = readl(&regs->TuneRxCoalTicks); ecmd->maxtxpkt = readl(&regs->TuneMaxTxDesc); ecmd->maxrxpkt readl(&regs->TuneMaxRxDesc); return 0; } static ace
 0, sizeof(struct ethtool_cmd));
	ecmD->supported =
		(sUPPOrTEd_10baSet_HalF | SUPpORTED_10baseT_FulL |
		 sUPPoRTED_100baseT_Half | SUPPORTEd_100baset_FULl |
		 SUppOrTED_1000bAseT_HalF | sUppoRTeD_1000BaSeT_fuLL |
		 SuPPORtED_autoneg | sUPPORTED_FiBRe);

	eCmd->port = PORT_FibRe;
	ecmd->transCeiVer = XCVR_INTERnAL;

	Link = reAdL(&reGS->GigLNkSTate);
	iF (link & Lnk_1000MB)
		ethTool_cmd_spEeD_Set(ecmD, sPEED_1000);
	elSE {
		LiNk = reAdl(&regs->FastLnkStaTE);
		iF (Link & LNK_100MB)
			ethtoOl_cmd_sPeED_sET(EcmD, SPeED_100);
		else if (lInK & LNK_10Mb)
			Ethtool_CMd_SPEEd_sET(ecmd, SPEED_10);
		elsE
			ethtool_cmd_SPeeD_set(ecMd, 0);
	}
	If (lINk & LNK_FuLL_DUpLex)
		ecMd->duplex = DUPlEX_FuLL;
	else
		ecMd->duplEX = DUPLEX_haLF;

	if (liNk & LNK_NeGOtIAtE)
		ecMD->aUtOneG = AutONeg_EnABle;
	elSe
		ecmd->auToNeG = AUTOnEG_DisablE;

#if 0
	/*
	 * curRent StrucT ethtool_cmd is InsUffiCIenT
	 */
	ecmd->Trace = ReadL(&rEgs->TuNeTracE);

	ecmd->TxCoal = readl(&regs->TuNeTxcoalTicks);
	EcmD->rXcoAl = Readl(&REgs->TunERxcoaLTicks);
#eNdif
	ecmD->MaxTxPKT = ReAdl(&regs->TuneMaxTxDeSc);
	ECMd->Maxrxpkt = Readl(&rEGs->tuNEMaxRxDeSc);

	RetUrn 0;
}

sTATic inT ace
 0, sizeof(struct ethtool_ cmd));
	ec md->s upp ort ed  =
	(SU PPORTED_10base T _Hal f | SUPPORTED_10baseT_ Full|	 SU P PO RTED_ 100base T _H a l f |  S UP POR TE D _1 00bas eT_ Full |		 SUPPORT ED_ 10 00baseT_Half |SUPPORTED_ 100 0baseT_Full|
	 SUPP OR TED _ Auton eg| SUP PORTED _ FIBRE) ;

	ecmd- >p o rt = P O RT_FIBR E ; 
ecmd ->transceiver = X C VR _ INTERNAL;

	li nk = r ea d l( & r egs ->G igLnkState ); 
	if( link &L NK _ 1 0 00M B )
		ethtool_c md_speed_se t (ec md, SP EE D_1 0 00);
else{	li nk = readl( &reg s->FastLn kState ) ;
		if( link &LNK_10 0MB )
		et h to ol _cm d_ s pee d _s et( e cmd , SPEED_ 10 0) ;
		e lsei f ( link  &LNK_ 10MB) 
			ethtool_c md_ spee d _se t(ecm d, SP EED_ 10 );
	else
		eth to ol_cmd_speed_se t(ec md, 0);
}
if  (l in k & L N K_FULL _DU PLE X)
		ec md->dup l ex=D U P LE X_FULL;
	else
		ec md - > du plex = D UPLEX_ H AL F; 
	if (li nk  &LNK_ N E GOTIA TE)	e cmd->aut oneg = AU TO NEG_ENA BL E;
	el se 
	ecm d->au t oneg  = AUT ONEG_DIS ABLE; 
#if 0
	/*
	 * Current struc t  e t h to o l_cm d i s insuffici ent */	ecm d -> tra c e = r eadl( &r e gs - >TuneTrace);

	ecmd -> txcoal  = re adl(&regs->Tu neTxCoalTi c k s );
	ecmd ->rx c oa l  = readl(&regs ->Tun eRxCoalTic k s);
#end if
	e cmd->max txpkt = r e a dl(&regs ->T une Max TxD e s c) ;
	ecmd->maxr x p kt =  r eadl(&r egs ->TuneM axR xDe sc) ;
	r eturn 0;}

stati cin tac e
 0,_sizeof(struct ethtool_cmd));
	ecmd->supported_=
		(SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full |
		_SUPPORTED_100baseT_Half |_SUPPORTED_100baseT_Full_|
		 SUPPORTED_1000baseT_Half_|_SUPPORTED_1000baseT_Full |
		 SUPPORTED_Autoneg_| SUPPORTED_FIBRE);

	ecmd->port =_PORT_FIBRE;
	ecmd->transceiver = XCVR_INTERNAL;

	link =_readl(&regs->GigLnkState);
	if (link &_LNK_1000MB)
		ethtool_cmd_speed_set(ecmd,_SPEED_1000);
	else {
		link = readl(&regs->FastLnkState);
		if (link & LNK_100MB)
			ethtool_cmd_speed_set(ecmd, SPEED_100);
		else if (link & LNK_10MB)
			ethtool_cmd_speed_set(ecmd, SPEED_10);
		else
			ethtool_cmd_speed_set(ecmd, 0);
	}
	if_(link_& LNK_FULL_DUPLEX)
		ecmd->duplex_=_DUPLEX_FULL;
	else
		ecmd->duplex_= DUPLEX_HALF;

	if (link & LNK_NEGOTIATE)
		ecmd->autoneg_= AUTONEG_ENABLE;
	else
		ecmd->autoneg = AUTONEG_DISABLE;

#if 0
	/*
	_* Current_struct ethtool_cmd is insufficient
	 */
	ecmd->trace = readl(&regs->TuneTrace);

	ecmd->txcoal =_readl(&regs->TuneTxCoalTicks);
	ecmd->rxcoal_= readl(&regs->TuneRxCoalTicks);
#endif
	ecmd->maxtxpkt =_readl(&regs->TuneMaxTxDesc);
	ecmd->maxrxpkt = readl(&regs->TuneMaxRxDesc);

	return 0;
}

static int ace