On Monday 06 March 2006 00:43, you wrote: > > + txb->fragments[i] = NULL; /* Take skb from ieee80211_txb_free */ > > + dma_tx_fragment(ring, skb, i); > > //TODO: handle failure of dma_tx_fragment > > } > > > > + ieee80211_txb_free(txb); > > This seems even more wrong to me than the current code.
Oh, I'm sorry. I did not see you were NULLing the fragment here before calling ieee80211_txb_free(). So, ok. This might work. But: This shows us that the struct ieee80211_txb is useless and should be eliminated. Look at how d80211 handles fragments. It sends every single fragment in an skb to the driver. I think this is _much_ more painless and sane, in the first place. I am pretty sure Jiri Benc will second my opinion. ;) But in the meantime, I can apply and test your patch. In the long term, we should get rid of struct ieee80211_txb (and also introduce something like the TX control structure, which d80211 also has). -- Greetings Michael.
pgpdCYykQqXOH.pgp
Description: PGP signature