On Monday 12 February 2007 19:30, Jouni Malinen wrote: > On Sun, Feb 04, 2007 at 01:44:18PM +0100, Michael Buesch wrote: > > > We need the phase1 for bcm43xx. We need to upload it to > > card memory and we need to pass it on every TX on the DMA. > > > So, currently we receive the phase1 key on the first > > encrypted TX. That's too late, as we already receive encrypted > > packets before that. bcm43xx needs the phase1 key (and the iv32) > > on RX. It uses the one uploaded into the card memory. But it > > is not uploaded, yet, as we did not TX any encrypted packet. > > How exactly is this supposed to work for RX? I misunderstood it, so my explaination was not 100% correct. It works the following way: We need the phase1 for TX and for RX. The key for TX is passed along with the TX frame. We can take the key from the tx_control (I'd still like to get rid of the array in the tx_control, though. Working on it...) For RX we have the phase1 uploaded to some device memory. What happens on RX when the iv32 wraps. Well, it simply won't decrypt the frame. What we must do then is upload a new key as fast as possible. The undecrypted frame can be either decrypted in SW (which I think d80211 can do. At least with minor additional changes), or we drop it. I started to implement an API to calculate the phase1 key on demand. It doesn't quite work, yet and I'm stuck in more important work that should be done before the d80211 merge, so it will take some time until I can continue debugging the stuff. -- Greetings Michael. - 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