Please note: This project is no longer active. The website is kept online for historic purposes only.
If you´re looking for a Linux driver for your Atheros WLAN device, you should continue here .

Ticket #1014 (new defect)

Opened 15 years ago

Last modified 15 years ago

madwifi 0.9.2 dev -state bug report

Reported by: ojejun.dcn.ssu.ac.kr Assigned to:
Priority: major Milestone:
Component: madwifi: driver Version: v0.9.2
Keywords: Cc:
Patch is attached: 0 Pending:

Description (Last modified by mrenzmann)

Hi!

we are member of the Data Communication Laboratory in Soongsil UNIV and we using the madwifi driver-0.9.2 for wireless lancard driver.

a reason why we sent you a mail is as follows.. we have founded that the madwifi new version(supporting VAP) has a bug

the bug is like that... hardware device state(the value is 'struct dev->state' ) is always idle nevertheless tx_buff is empty. because the 'netif_wake_queue' function in 'ath_tx_tasklet' is always called.

so packets in a queue which is located QoS scheduling in linux kernel are not cumulated. and this packets may be dropped. during the experiment of our packet aggregation software, we have founded this problem.

so we fixed source code as follows it never be wake up the device untill the txbuf is not empty. so, we can make an experiment our packet aggregation software successfully.

How about your think? any other specific reason for the 'device wake up' always?

we waitng for your answer, and thank you.

ath_tx_tasklet(TQUEUE_ARG data)
{
	struct net_device *dev = (struct net_device *)data;
	struct ath_softc *sc = dev->priv;
	int i;

	/*
	 * Process each active queue.
	 */
	for (i = 0; i < HAL_NUM_TX_QUEUES; i++)
		if (ATH_TXQ_SETUP(sc, i) && txqactive(sc->sc_ah, i))
			ath_tx_processq(sc, &sc->sc_txq[i]);
#ifdef ATH_SUPERG_XR
	if (sc->sc_xrtxq && txqactive(sc->sc_ah, sc->sc_xrtxq->axq_qnum))
		ath_tx_processq(sc, sc->sc_xrtxq);
#endif

	//********** bug reporting :  modified by softgear@dcn.ssu.ac.kr, 
	//***********don't wake up device state unless the txbuf is remain 
	
	if(!STAILQ_EMPTY(&sc->sc_txbuf))
	{
		netif_wake_queue(dev);
	}
	
	//***************************************************************************
	
	if (sc->sc_softled)
		ath_led_event(sc, ATH_LED_TX);
}

Change History

11/16/06 07:42:35 changed by anonymous

Hi! we are member of the Data Communication Laboratory in Soongsil UNIV and we using the madwifi driver-0.9.2 for wireless lancard driver.

a reason why we sent you a mail is as follows.. we have founded that the madwifi new version(supporting VAP) has a bug

the bug is like that...

hardware device state(the value is 'struct dev->state' ) is always idle nevertheless tx_buff is empty.

because the 'netif_wake_queue' function in 'ath_tx_tasklet' is always called.

so packets in a queue which is located QoS scheduling in linux kernel are not cumulated.

and this packets may be dropped. during the experiment of our packet aggregation software, we have founded this problem.

so we fixed source code as follows it never be wake up the device untill the txbuf is not empty. so, we can make an experiment our packet aggregation software successfully.

How about your think? any other specific reason for the 'device wake up' always?

we waitng for your answer, and thank you.

==================================================================

ath_tx_tasklet(TQUEUE_ARG data) {

struct net_device *dev = (struct net_device *)data; struct ath_softc *sc = dev->priv; int i;

/*

  • Process each active queue. */

for (i = 0; i < HAL_NUM_TX_QUEUES; i++)

if (ATH_TXQ_SETUP(sc, i) && txqactive(sc->sc_ah, i))

ath_tx_processq(sc, &sc->sc_txq[i]);

#ifdef ATH_SUPERG_XR

if (sc->sc_xrtxq && txqactive(sc->sc_ah, sc->sc_xrtxq->axq_qnum))

ath_tx_processq(sc, sc->sc_xrtxq);

#endif

//********** bug reporting : modified by softgear@dcn.ssu.ac.kr, //***********don't wake up device state unless the txbuf is remain

if(!STAILQ_EMPTY(&sc->sc_txbuf)) {

netif_wake_queue(dev);

}

//********************************************************************

if (sc->sc_softled)

ath_led_event(sc, ATH_LED_TX);

}

==============================================================================

11/16/06 14:21:19 changed by mrenzmann

  • description changed.

It would be nice if you could provide the changes as unified diff, since that is easier to review and commit. In addition, please sign your patch off.

11/16/06 14:23:40 changed by mrenzmann

  • description changed.