[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