Search Linux Wireless

Re: [PATCH 2/4] ath9k_hw: merge codepaths that access the cycle counter registers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 04, 2010 at 05:06:43PM +0530, Felix Fietkau wrote:
> On 2010-10-04 8:34 AM, Vasanthakumar Thiagarajan wrote:
> >> +	/* freeze counters */
> >> +	REG_WRITE(ah, AR_MIBC, AR_MIBC_FMC);
> >> +
> >> +	ah->cc.cycles = REG_READ(ah, AR_CCCNT);
> >> +	if (ah->cc.cycles < cc.cycles) {
> >> +		clear = true;
> >> +		goto skip;
> >>  	}
> >>  
> >> -	cycles = cc;
> >> -	rx_frame = rf;
> >> -	rx_clear = rc;
> >> -	tx_frame = tf;
> >> +	ah->cc.rx_clear = REG_READ(ah, AR_RCCNT);
> >> +	ah->cc.rx_frame = REG_READ(ah, AR_RFCNT);
> >> +	ah->cc.tx_frame = REG_READ(ah, AR_TFCNT);
> >> +
> >> +	/* prevent wraparound */
> >> +	if (ah->cc.cycles & BIT(31))
> >> +		clear = true;
> > 
> > This does not look right, previous if should take care of 
> > any wrap around.
> This is not for correcting an existing wraparound. This is for making
> sure that a wraparound never occurs.

ok.
> 
> >> +
> >> +#define CC_DELTA(_field, _reg) ah->cc_delta._field += ah->cc._field - cc._field
> > _reg is not used.
> > 
> >> 
> >> +skip:
> >> +	if (clear) {
> >> +		REG_WRITE(ah, AR_CCCNT, 0);
> >> +		REG_WRITE(ah, AR_RFCNT, 0);
> >> +		REG_WRITE(ah, AR_RCCNT, 0);
> >> +		REG_WRITE(ah, AR_TFCNT, 0);
> > 
> > should be able to do with single write in AR_MIBC.
> No, the clear bit in AR_MIBC does not clear these counters. I tested that.

ok.
> 
> >> +	/* unfreeze counters */
> >> +	REG_WRITE(ah, AR_MIBC, 0);
> > 
> > Please configure the relevant bit to unfreeze the counters.
> What do you mean?

AR_MIBC does more than just freeze/unfreeze the counters, though I
dont see any issues with setting the whole register to zero, it
looks buggy. Please configure only the relevant bit to
freeze/unfreeze the counters.

Vasanth
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux