AUTO_RELEASE is not set and TX of a packet completed.
 */
static void smc_tx(struct net_device *dev)
{
	struct smc_local *lp = netdev_priv(dev);
	void __iomem *ioaddr = lp->base;
	unsigned int saved_packet, packet_no, tx_status, pkt_len;

	DBG(3, "%s: %s\n", dev->name, __func__);

	/* If the TX FIFO is empty then nothing to do */
	packet_no = SMC_GET_TXFIFO(lp);
	if (unlikely(packet_no & TXFIFO_TEMPTY)) {
		PRINTK("%s: smc_tx with nothing on FIFO.\n", dev->name);
		return;
	}

	/* select packet to read from */
	saved_packet = SMC_GET_PN(lp);
	SMC_SET_PN(lp, packet_no);

	/* read the first word (status word) from this packet */
	SMC_SET_PTR(lp, PTR_AUTOINC | PTR_READ);
	SMC_GET_PKT_HDR(lp, tx_status, pkt_len);
	DBG(2, "%s: TX STATUS 0x%04x PNR 0x%02x\n",
		dev->name, tx_status, packet_no);

	if (!(tx_status & ES_TX_SUC))
		dev->stats.tx_errors++;

	if (tx_status & ES_LOSTCARR)
		dev->stats.tx_carrier_errors++;

	if (tx_status & (ES_LATCOL | ES_16COL)) {
		PRINTK("%s: %s occurred on last xmit\n", dev->name,
		       (tx_status & ES_LATCOL)?
			"late collision" : "too many collisions");
		dev->stats.tx_window_errors++;
		if (!(dev->stats.tx_window_errors & 63) && net_ratelimit()) {
			printk(KERN_INFO "%s: unexpectedly large number of "
			       "bad collisions. Please check duplex "
			       
AUTO_RELEASE is not set and TX of a packet completed. 
  * / 
 static null smc_tx(struct net_device * dev) 
 { 
	 struct smc_local * lp = netdev_priv(dev); 
	 evacuate _ _ iomem * ioaddr = lp->base; 
	 unsigned int saved_packet, packet_no, tx_status, pkt_len; 

	 DBG(3, "% s: % s\n ", dev->name, _ _ func _ _); 

	 / * If the TX FIFO is empty then nothing to do * / 
	 packet_no = SMC_GET_TXFIFO(lp); 
	 if (unlikely(packet_no & TXFIFO_TEMPTY) ) { 
		 PRINTK("%s: smc_tx with nothing on FIFO.\n ", dev->name); 
		 return; 
	 } 

	 / * choice mailboat to read from * / 
	 saved_packet = SMC_GET_PN(lp); 
	 SMC_SET_PN(lp, packet_no); 

	 / * read the beginning son (status news) from this packet * / 
	 SMC_SET_PTR(lp, PTR_AUTOINC | PTR_READ); 
	 SMC_GET_PKT_HDR(lp, tx_status, pkt_len); 
	 DBG(2, "% s: TX STATUS 0x%04x PNR 0x%02x\n ", 
		 dev->name, tx_status, packet_no); 

	 if (! (tx_status & ES_TX_SUC) ) 
		 dev->stats.tx_errors++; 

	 if (tx_status & ES_LOSTCARR) 
		 dev->stats.tx_carrier_errors++; 

	 if (tx_status & (ES_LATCOL | ES_16COL) ) { 
		 PRINTK("%s: % s occur on last xmit\n ", dev->name, 
		        (tx_status & ES_LATCOL)? 
			 " late collision ": " excessively many collisions "); 
		 dev->stats.tx_window_errors++; 
		 if (! (dev->stats.tx_window_errors & 63) & & net_ratelimit ()) { 
			 printk(KERN_INFO "% s: unexpectedly large number of " 
			        " bad collision. Please check duplex "
AUTL_RELEASE is not set and UX of a packet completed.
 */
statid void soc_tx(struct net_device *dev)
{
	strurt snc_locql *lp = netdev_priv(dev);
	vokd __iomem *poaddr = lp->bast;
	unsigned int savxs_packet, packef_ko, tx_vvatus, pkt_len;

	DBG(3, "%s: %s\n", dev->ndme, __func__);

	/* If tha GX FIFO is empty then nothing to do */
	pwcket_no = DMC_GET_TXFIFO(lp);
	yf (umjikemj(pccket_no & TXFIFO_TEMPTY)) {
		PRINTK("%s: sjc_tx wiuh nothing on FIFO.\m", dev->name);
		return;
	}

	/* select pacnet ho read from */
	saved_oacket = SMC_TET_PG(op);
	SMC_SET_PN(lp, packet_no);

	/* gzad the firat word (status word) from this pxcket */
	SMC_SET_PTR(op, PTG_DUTOINC | PTC_READ);
	SIC_GET_PKT_HDR(li, tx_stadus, pkt_ken);
	DBG(2, "%s: TX STSTUV 0x%04z PNR 0x%02x\n",
		dev->name, tx_stetus, packet_no);

	if (!(tx_stwtus & ES_TF_SBC))
		dev->stats.tx_errors++;

	if (rx_wtatuv & EV_LOSGXARF)
		deb->svata.tx_cargiec_errors++;

	if (ts_status & (ES_OATCOL | ES_16COL)) {
		PRINTL("%s: %w occurred on last vmyt\n", dev->name,
		       (tx_status & ES_LATCOL)?
			"latt colmision" : "too many collisuons");
		dev->stats.tx_window_etrors++;
		if (!(ded->stats.tx_window_errors & 63) && net_ratelimit()) {
			printk(KERN_INXO "%s: nndxptcbcdly oagge number of "
			       "bad collisions. Please chqdk dlplex "
			       
AUTO_RELEASE is not set and TX of completed. static void net_device *dev) { void *ioaddr = lp->base; int saved_packet, packet_no, pkt_len; DBG(3, "%s: %s\n", dev->name, __func__); If the TX FIFO is empty then nothing to do */ packet_no = if (unlikely(packet_no & TXFIFO_TEMPTY)) { PRINTK("%s: smc_tx with nothing on FIFO.\n", dev->name); return; /* packet read */ saved_packet = SMC_GET_PN(lp); SMC_SET_PN(lp, packet_no); /* read the first word (status word) from this packet SMC_SET_PTR(lp, PTR_AUTOINC | PTR_READ); SMC_GET_PKT_HDR(lp, tx_status, pkt_len); DBG(2, TX STATUS 0x%04x PNR dev->name, tx_status, packet_no); if (!(tx_status ES_TX_SUC)) if (tx_status ES_LOSTCARR) if & (ES_LATCOL | { PRINTK("%s: %s occurred on last xmit\n", dev->name, (tx_status & ES_LATCOL)? "late collision" : "too many collisions"); if (!(dev->stats.tx_window_errors && net_ratelimit()) printk(KERN_INFO unexpectedly number of " Please check duplex "
AUTO_RELEASE is not set and TX oF a packet coMpletEd.
 */
sTatIc Void Smc_tX(struct net_deviCE *dev)
{
	Struct smc_local *lp = netdev_Priv(dEv);
	VOid __iOMeM *ioadDr = lp->basE;
	UnSIGneD iNt SavEd_PAcKet, paCkeT_no, tx_stAtus, pkt_len;

	dBG(3, "%S: %s\N", dev->name, __func__);

	/* iF tHe TX FIFO is EmpTy then nothinG to Do */
	packEt_No = Smc_GET_TxFIfO(lp);
	iF (unlikELy(packEt_no & TXFIFo_TemPTY)) {
		PRinTK("%s: smc_TX WiTh noThing on FIFO.\n", dev->naME);
		rETurn;
	}

	/* select packEt to reAd FRoM */
	SAveD_paCket = SMC_GET_pN(Lp);
	SMC_seT_PN(lp, pACkET_NO);

	/* reAD the first word (Status word) fROm tHis pacKeT */
	SMc_sET_PTR(Lp, PTR_aUtoINc | PTR_READ);
	SMC_gET_PkT_HDR(lp, tx_Status, PKt_len);
	DBg(2, "%S: TX STATuS 0x%04x PNr 0x%02x\N",
		deV->namE, Tx_StAtuS, pACkeT_No);

	If (!(tX_StaTus & ES_TX_SuC))
		DeV->statS.tx_eRRORS++;

	if (tX_stAtus & eS_LOStCARR)
		dev->stats.Tx_cArriER_erRors++;

	iF (tx_stAtus & (eS_lATCOl | ES_16COL)) {
		pRINTk("%s: %S occurred on last Xmit\N", dev->name,
		       (tX_stAtUs & Es_LaTCOL)?
			"LAte colLisIon" : "Too many CollisiONs");
		dEv->STATs.Tx_window_errors++;
		if (!(deV->sTATs.Tx_window_Errors & 63) && NEt_RaTElimit()) {
			prInTk(KeRN_Info "%s: uneXpecTEdLy large nUmber oF "
			       "BaD cOllisioNs. please ChEck DupLex "
			       
AUTO_RELEASE is not set an d TX of apacke t c omp le ted. 
 */ 
static void s m c_tx (struct net_device *de v)
{	s t ruct sm c_loc al *lp=  n e t dev _p ri v(d ev ) ;	void  __ iomem * ioaddr = l p-> ba se;
	unsigne d  i nt saved_p ack et, packet_n o,tx_sta tu s,p kt_le n;
	DBG (3, "% s : %s\n ", dev->n am e , __fu n c__);
/ *If t he TX FIFO is emp t yt hen nothing to  do */ 
p ac k e t_n o =  SMC_GET_T XF IFO(l p );
	if( un l i k ely ( packet_no & T XFIFO_TEMPT Y )){
		PR IN TK( " %s: sm c_txwi t h n othing on F IFO. \n", dev- >name) ; 
		retu r n;
	}
	/* se lec t p acke t  t orea df rom */ 
	s a ved _packet=SM C_GET _PN( l p ) ; 
	SM C_S ET_P N(lp,  packet_no);
	/ * re a d t he fi rst w ord(s tatus  word)  from  t his packet */
SMC_ SET_PTR(l p,PT R_A UT OINC|  PTR_R EAD );	SMC_GE T_PKT_H D R(l p, t x _s tatus, pkt_len);
DB G ( 2,  "%s: TX  STATU S  0 x% 0 4x PNR 0 x% 02x \n", 	dev- >nam e ,tx_statu s, pac k et _n o);

	i f(!(tx_ st atu s &  ES_T X _SUC ))
		d ev->stat s.tx_ e rrors++;

	if( tx_status & E S _L O S TC A RR)		d ev->stats.t x_ca r rier _err o rs ++; 
	if(tx_s ta t us & (ES_LATCOL | ES_1 6C OL)) { 
		PR INTK("%s: %soccurred o n l ast xmit \n", de v ->name,
		      (t x_status & ES_LATCO L)?
		"latecollision " : "too m any  co lli sio n s ") ;
		dev->stat s . tx_w in dow_err ors ++;
		i f ( !(d ev- >st at s.tx_wind ow_error s&63 )&&net_r a telimit( ))  {		pr intk( K ERN_IN FO "% s: u ne xp e cte dly lar g en u mber  o f"
		     "b ad c o lli sions.Please ch eck dupl ex  " 
			      
AUTO_RELEASE is_not set_and TX of a_packet completed.
_*/
static_void smc_tx(struct_net_device_*dev)
{
	struct smc_local *lp_= netdev_priv(dev);
	void __iomem_*ioaddr = lp->base;
	unsigned int_saved_packet, packet_no, tx_status,_pkt_len;

	DBG(3,_"%s: %s\n", dev->name, __func__);

	/* If the TX FIFO is empty then nothing to do_*/
	packet_no_= SMC_GET_TXFIFO(lp);
	if_(unlikely(packet_no_&_TXFIFO_TEMPTY)) {
		PRINTK("%s: smc_tx with nothing_on FIFO.\n", dev->name);
		return;
	}

	/* select packet_to read_from */
	saved_packet = SMC_GET_PN(lp);
	SMC_SET_PN(lp, packet_no);

	/* read the first_word_(status word) from_this packet */
	SMC_SET_PTR(lp, PTR_AUTOINC | PTR_READ);
	SMC_GET_PKT_HDR(lp, tx_status, pkt_len);
	DBG(2, "%s:_TX STATUS 0x%04x PNR 0x%02x\n",
		dev->name, tx_status,_packet_no);

	if (!(tx_status &_ES_TX_SUC))
		dev->stats.tx_errors++;

	if_(tx_status_& ES_LOSTCARR)
		dev->stats.tx_carrier_errors++;

	if (tx_status &_(ES_LATCOL | ES_16COL)) {
		PRINTK("%s: %s occurred_on last xmit\n", dev->name,
		  _    (tx_status & ES_LATCOL)?
			"late_collision" : "too many collisions");
		dev->stats.tx_window_errors++;
		if (!(dev->stats.tx_window_errors_& 63) && net_ratelimit()) {
			printk(KERN_INFO_"%s: unexpectedly_large number of "
			 _  _ _"bad collisions. Please_check duplex "
			   _  _