[EMAIL PROTECTED] <[EMAIL PROTECTED]> :
> 
> From: Michael Buesch <[EMAIL PROTECTED]>
> 
> This cleans up the bcm43xx sysfs code and makes it compliant with the
> unwritten sysfs rules (at least I hope so).
> 
> Signed-off-by: Michael Buesch <[EMAIL PROTECTED]>
> Cc: Jeff Garzik <[EMAIL PROTECTED]>
> Cc: Greg KH <[EMAIL PROTECTED]>
> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
[...]
> diff -puN drivers/net/wireless/bcm43xx/bcm43xx.h~bcm43xx-sysfs-code-cleanup 
> drivers/net/wireless/bcm43xx/bcm43xx.h
> --- devel/drivers/net/wireless/bcm43xx/bcm43xx.h~bcm43xx-sysfs-code-cleanup   
> 2006-04-12 18:11:12.000000000 -0700
> +++ devel-akpm/drivers/net/wireless/bcm43xx/bcm43xx.h 2006-04-12 
> 18:11:12.000000000 -0700
[...]
> @@ -772,6 +769,20 @@ struct bcm43xx_private * bcm43xx_priv(st
>       return ieee80211softmac_priv(dev);
>  }
>  
> +struct device;
> +
> +static inline
> +struct bcm43xx_private * dev_to_bcm(struct device *dev)
> +{
> +     struct net_device *net_dev;
> +     struct bcm43xx_private *bcm;
> +
> +     net_dev = dev_get_drvdata(dev);
> +     bcm = bcm43xx_priv(net_dev);
> +
> +     return bcm;
> +}
> +

It's used only in bcm43xx_sysfs.c. It could go there and avoid
an extra forward declaration.

[...]
> diff -puN 
> drivers/net/wireless/bcm43xx/bcm43xx_sysfs.c~bcm43xx-sysfs-code-cleanup 
> drivers/net/wireless/bcm43xx/bcm43xx_sysfs.c
> --- 
> devel/drivers/net/wireless/bcm43xx/bcm43xx_sysfs.c~bcm43xx-sysfs-code-cleanup 
>     2006-04-12 18:11:12.000000000 -0700
> +++ devel-akpm/drivers/net/wireless/bcm43xx/bcm43xx_sysfs.c   2006-04-12 
> 18:11:12.000000000 -0700
> @@ -71,14 +71,46 @@ static int get_boolean(const char *buf, 
>       return -EINVAL;
>  }
>  
> +static int sprom2hex(const u16 *sprom, char *buf, size_t buf_len)
> +{
> +     int i, pos = 0;
> +
> +     for (i = 0; i < BCM43xx_SPROM_SIZE; i++) {
> +             pos += snprintf(buf + pos, buf_len - pos - 1,
> +                             "%04X", swab16(sprom[i]) & 0xFFFF);
> +     }
> +     pos += snprintf(buf + pos, buf_len - pos - 1, "\n");
> +
> +     return pos + 1;
> +}
> +
> +static int hex2sprom(u16 *sprom, const char *dump, size_t len)
> +{
> +     char tmp[5] = { 0 };
> +     int cnt = 0;
> +     unsigned long parsed;
> +
> +     if (len < BCM43xx_SPROM_SIZE * sizeof(u16) * 2)
> +             return -EINVAL;
> +
> +     while (cnt < BCM43xx_SPROM_SIZE) {
> +             memcpy(tmp, dump, 4);
> +             dump += 4;
> +             parsed = simple_strtoul(tmp, NULL, 16);
> +             sprom[cnt++] = swab16((u16)parsed);
> +     }
> +
> +     return 0;
> +}

"4" suggests that the code walks dump -> dump + 4*BCM43xx_SPROM_SIZE

>  static ssize_t bcm43xx_attr_sprom_store(struct device *dev,
>                                       const char *buf, size_t count)
[...]
> -     for (i = 0; i < BCM43xx_SPROM_SIZE; i++) {
> -             sprom[i] = buf[i * 2] & 0xFF;
> -             sprom[i] |= ((u16)(buf[i * 2 + 1] & 0xFF)) << 8;
> -     }
> +     err = hex2sprom(sprom, buf, count);

... whereas here it only parses buf -> buf + 2*BCM43xx_SPROM_SIZE

-- 
Ueimor

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to