On Tuesday 31 July 2007 17:06:04 Larry Finger wrote:
> Routine keymac_write in bcm43xx has two TODO statements that generate lots of
> useless log output for early chip versions. This patch replaces them with code
> to store the keys.
> 
> Signed-off-by: Larry Finger <[EMAIL PROTECTED]>
> ---
> 
> Michael,
> 
> Is this correct? The whole business of words versus bytes in shared memory
> is very confusing.

No, it's completely broken. It's broken like all the other
hwcrypto stuff in the softmac driver. :)
Please simply remove all that hwcrypto stuff and always force
swcrypto.

> Larry
> 
> ---------
> 
>  bcm43xx.h      |    1 +
>  bcm43xx_main.c |   21 +++++++++++++++++----
>  2 files changed, 18 insertions(+), 4 deletions(-)
> 
> Index: wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx.h
> ===================================================================
> --- wireless-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx.h
> +++ wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx.h
> @@ -156,6 +156,7 @@
>  /* MacFilter offsets. */
>  #define BCM43xx_MACFILTER_SELF               0x0000
>  #define BCM43xx_MACFILTER_ASSOC              0x0003
> +#define BCM43xx_MACFILTER_MAC                0x0010
>  
>  /* Chipcommon registers. */
>  #define BCM43xx_CHIPCOMMON_CAPABILITIES      0x04
> Index: wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
> ===================================================================
> --- wireless-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
> +++ wireless-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
> @@ -378,6 +378,7 @@ static void bcm43xx_macfilter_clear(stru
>       const u8 zero_addr[ETH_ALEN] = { 0 };
>  
>       bcm43xx_macfilter_set(bcm, offset, zero_addr);
> +     bcm43xx_shm_write32(bcm, BCM43xx_SHM_SHARED, 0x003E, 0);
>  }
>  
>  static void bcm43xx_write_mac_bssid_templates(struct bcm43xx_private *bcm)
> @@ -1108,12 +1109,24 @@ static void keymac_write(struct bcm43xx_
>                                   (index * 2) + 1,
>                                   cpu_to_be16(*((u16 *)(addr + 1))));
>       } else {
> -             if (index < 8) {
> -                     TODO(); /* Put them in the macaddress filter */
> +             if (index < 4) {
> +                     bcm43xx_macfilter_set(bcm, BCM43xx_MACFILTER_MAC +
> +                                           index * 6, (const u8 *)addr);
>               } else {
> -                     TODO();
>                       /* Put them BCM43xx_SHM_SHARED, stating index 0x0120.
> -                        Keep in mind to update the count of keymacs in 
> 0x003E as well! */
> +                        Update the count of keymacs in 0x003E as well */
> +                     bcm43xx_shm_write32(bcm,
> +                                         BCM43xx_SHM_SHARED,
> +                                         (index - 4) * 6 + 0x120,
> +                                         cpu_to_be32(*addr));
> +                     bcm43xx_shm_write16(bcm,
> +                                         BCM43xx_SHM_SHARED,
> +                                         (index - 4) * 6 + 0x124,
> +                                         cpu_to_be16(*((u16 *)(addr + 1))));
> +                     bcm43xx_shm_write32(bcm,        /* update count */
> +                                         BCM43xx_SHM_SHARED, 0x003E,
> +                                         bcm43xx_shm_read32(bcm,
> +                                         BCM43xx_SHM_SHARED, 0x003E) + 1);
>               }
>       }
>  }
> 
> 



-- 
Greetings Michael.
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to