Search Linux Wireless

Re: [PATCH] b43 add harware tkip

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

 



Hi,

thanks for your review

On Mon, Jun 8, 2009 at 5:20 PM, Michael Buesch<mb@xxxxxxxxx> wrote:
> Well, first thing is that I do think there is a reason Broadcom removed hw TKIP
> support from their drivers. ;)
>
> But well, let's look at the patch.
>
>> +     /* FIXME this is the wrong offset : it goes in tkip rx phase1 shm */
>> +#if 0
>>       b43_write_probe_resp_plcp(dev, 0x31A, size, &b43_b_ratetable[0]);
>>       b43_write_probe_resp_plcp(dev, 0x32C, size, &b43_b_ratetable[1]);
>>       b43_write_probe_resp_plcp(dev, 0x33E, size, &b43_b_ratetable[2]);
>>       b43_write_probe_resp_plcp(dev, 0x350, size, &b43_b_ratetable[3]);
>> +#endif
>
> This looks interesting. Care to find out the correct offsets and submit
> this fix as a separate patch?
>
May be if I have time. But a comment suggest it is not used ?
>> +     if (algorithm == B43_SEC_ALGO_TKIP) {
>> +             /*
>> +              * We should provide an initial iv32, phase1key pair.
>> +              * We could start with iv32=0 and compute the corresponding
>> +              * phase1key, but this mean calling ieee80211_get_tkip_key
>> +              * with a fake skb (or export other tkip function).
>> +              * Because we are lazy we hope iv32 won't start with
>> +              * 0xffff and let's b43_mac_update_tkip_key provide a
>> +              * correct pair.
>> +              */
>> +             rx_tkip_phase1_write(dev, index, 0xffff, (u16*)buf);
>> +     } else /* clear it */
>> +             rx_tkip_phase1_write(dev, index, 0, (u16*)buf);
>
> Why do you write phase1, if TKIP is not used?
I clear the value in shared memory. This help debugging. But I could
remove it if you want.
>
>> +     /* FIXME : for b43_new_kidx_api, there can be 54 key
>> +      * instead of 50 in RCMTA and TKIPTSCTTAK.
>> +      */
>
> I don't understand this comment.
if  b43_new_kidx_api is true :
- we set max_nr_keys to 58
- we program B43_MMIO_RCMTA_COUNT to 50
- in b43_key_write we can allocate key up to index 58 (4 for default,
54 for sta)

But there is only 50 entries for TKIPTSCTTAK, and a comment on bcm-v4
suggest there is 50 entries for RCMTA. So if there more than 50
station we will overflow RCMTA and TKIPTSCTTAK.

So the fix will be do to something like
dev->max_nr_keys = (dev->dev->id.revision >= 5) ? 58 : 20;
if (b43_new_kidx_api())
dev->max_nr_keys -= 4;

>
>> -             if (algorithm == B43_SEC_ALGO_TKIP) {
>> -                     /* FIXME: No TKIP hardware encryption for now. */
>> +             if (algorithm == B43_SEC_ALGO_TKIP &&
>> +                             (!(key->flags & IEEE80211_KEY_FLAG_PAIRWISE) ||
>> +                                key->flags & IEEE80211_KEY_FLAG_WMM_STA )) {
>> +                     /* We support only one rx queue (no QOS) and pairwise key */
>
> This comment doesn't really make sense to me, too.
> What does QoS have to do with the RX queue?
each QOS queue got it's own tkip counters (iv16, iv32) (check tkip.c
software implementation for more info).

> Next time please inline the patch ;)
I will try, but I don't know if my mailer handle it.

Gregor
--
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