* [patch 0/6] New patch series for merge
@ 2007-08-18 23:48 Michael Buesch
2007-08-18 23:48 ` [patch 1/6] b43: Fix kconfig, SSB autoselect must depend on b43 Michael Buesch
` (5 more replies)
0 siblings, 6 replies; 13+ messages in thread
From: Michael Buesch @ 2007-08-18 23:48 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, bcm43xx-dev
Hi John,
This patch series catches wireless-dev up to my
current wireless-development patchset.
Please merge this into wireless-dev.
IMPORTANT: Latest fwcutter from SVN and re-extracting the firmware is needed after applying this.
--
^ permalink raw reply [flat|nested] 13+ messages in thread
* [patch 1/6] b43: Fix kconfig, SSB autoselect must depend on b43
2007-08-18 23:48 [patch 0/6] New patch series for merge Michael Buesch
@ 2007-08-18 23:48 ` Michael Buesch
2007-08-18 23:48 ` [patch 2/6] ssb: Fix uevent MODALIAS string Michael Buesch
` (4 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Michael Buesch @ 2007-08-18 23:48 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, bcm43xx-dev
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Index: wireless-dev-new/drivers/net/wireless/b43/Kconfig
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/Kconfig 2007-08-15 15:08:39.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/Kconfig 2007-08-15 15:13:14.000000000 +0200
@@ -11,14 +11,14 @@ config B43
# Auto-select SSB PCI-HOST support, if possible
config B43_PCI_AUTOSELECT
bool
- depends on SSB_PCIHOST_POSSIBLE
+ depends on B43 && SSB_PCIHOST_POSSIBLE
select SSB_PCIHOST
default y
# Auto-select SSB PCICORE driver, if possible
config B43_PCICORE_AUTOSELECT
bool
- depends on SSB_DRIVER_PCICORE_POSSIBLE
+ depends on B43 && SSB_DRIVER_PCICORE_POSSIBLE
select SSB_DRIVER_PCICORE
default y
--
^ permalink raw reply [flat|nested] 13+ messages in thread
* [patch 2/6] ssb: Fix uevent MODALIAS string.
2007-08-18 23:48 [patch 0/6] New patch series for merge Michael Buesch
2007-08-18 23:48 ` [patch 1/6] b43: Fix kconfig, SSB autoselect must depend on b43 Michael Buesch
@ 2007-08-18 23:48 ` Michael Buesch
2007-08-18 23:48 ` [patch 3/6] b43: Rename print functions to b43foobar Michael Buesch
` (3 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Michael Buesch @ 2007-08-18 23:48 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, bcm43xx-dev
Use the same %-convention as file2alias does.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Index: ssb-merge-new/drivers/ssb/main.c
===================================================================
--- ssb-merge-new.orig/drivers/ssb/main.c 2007-08-15 18:33:50.000000000 +0200
+++ ssb-merge-new/drivers/ssb/main.c 2007-08-15 18:35:11.000000000 +0200
@@ -331,10 +331,11 @@ static int ssb_device_uevent(struct devi
ret = add_uevent_var(envp, num_envp, &i,
buffer, buffer_size, &length,
- "MODALIAS=ssb:v%.4xid%.4xrev%.2x",
+ "MODALIAS=ssb:v%04Xid%04Xrev%02X",
ssb_dev->id.vendor, ssb_dev->id.coreid,
ssb_dev->id.revision);
envp[i] = NULL;
+
return ret;
}
--
^ permalink raw reply [flat|nested] 13+ messages in thread
* [patch 3/6] b43: Rename print functions to b43foobar
2007-08-18 23:48 [patch 0/6] New patch series for merge Michael Buesch
2007-08-18 23:48 ` [patch 1/6] b43: Fix kconfig, SSB autoselect must depend on b43 Michael Buesch
2007-08-18 23:48 ` [patch 2/6] ssb: Fix uevent MODALIAS string Michael Buesch
@ 2007-08-18 23:48 ` Michael Buesch
2007-08-18 23:48 ` [patch 4/6] b43: Update Kconfig help text Michael Buesch
` (2 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Michael Buesch @ 2007-08-18 23:48 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, bcm43xx-dev
Avoid namespace pollution.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Index: wireless-dev-new/drivers/net/wireless/b43/b43.h
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/b43.h 2007-08-14 17:01:07.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/b43.h 2007-08-15 19:15:03.000000000 +0200
@@ -773,17 +773,17 @@ static inline void b43_write32(struct b4
}
/* Message printing */
-void bcminfo(struct b43_wl *wl, const char *fmt, ...)
+void b43info(struct b43_wl *wl, const char *fmt, ...)
__attribute__ ((format(printf, 2, 3)));
-void bcmerr(struct b43_wl *wl, const char *fmt, ...)
+void b43err(struct b43_wl *wl, const char *fmt, ...)
__attribute__ ((format(printf, 2, 3)));
-void bcmwarn(struct b43_wl *wl, const char *fmt, ...)
+void b43warn(struct b43_wl *wl, const char *fmt, ...)
__attribute__ ((format(printf, 2, 3)));
#if B43_DEBUG
-void bcmdbg(struct b43_wl *wl, const char *fmt, ...)
+void b43dbg(struct b43_wl *wl, const char *fmt, ...)
__attribute__ ((format(printf, 2, 3)));
#else /* DEBUG */
-# define bcmdbg(wl, fmt...) do { /* nothing */ } while (0)
+# define b43dbg(wl, fmt...) do { /* nothing */ } while (0)
#endif /* DEBUG */
/* A WARN_ON variant that vanishes when b43 debugging is disabled.
Index: wireless-dev-new/drivers/net/wireless/b43/debugfs.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/debugfs.c 2007-08-15 15:08:39.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/debugfs.c 2007-08-15 19:15:03.000000000 +0200
@@ -126,12 +126,12 @@ static ssize_t tsf_write_file(struct fil
mutex_lock(&dev->wl->mutex);
spin_lock_irqsave(&dev->wl->irq_lock, flags);
if (b43_status(dev) < B43_STAT_STARTED) {
- bcmerr(dev->wl, "debugfs: Board not initialized.\n");
+ b43err(dev->wl, "debugfs: Board not initialized.\n");
res = -EFAULT;
goto out_unlock;
}
if (sscanf(buf, "%llu", (unsigned long long *)(&tsf)) != 1) {
- bcmerr(dev->wl, "debugfs: invalid values for \"tsf\"\n");
+ b43err(dev->wl, "debugfs: invalid values for \"tsf\"\n");
res = -EINVAL;
goto out_unlock;
}
@@ -234,7 +234,7 @@ static ssize_t restart_write_file(struct
mutex_lock(&dev->wl->mutex);
spin_lock_irqsave(&dev->wl->irq_lock, flags);
if (b43_status(dev) < B43_STAT_INITIALIZED) {
- bcmerr(dev->wl, "debugfs: Board not initialized.\n");
+ b43err(dev->wl, "debugfs: Board not initialized.\n");
res = -EFAULT;
goto out_unlock;
}
@@ -323,12 +323,12 @@ static ssize_t txpower_g_write_file(stru
mutex_lock(&dev->wl->mutex);
spin_lock_irqsave(&dev->wl->irq_lock, flags);
if (b43_status(dev) < B43_STAT_STARTED) {
- bcmerr(dev->wl, "debugfs: Board not initialized.\n");
+ b43err(dev->wl, "debugfs: Board not initialized.\n");
res = -ENODEV;
goto out_unlock;
}
if (dev->phy.type != B43_PHYTYPE_G) {
- bcmerr(dev->wl, "debugfs: Device is not a G-PHY\n");
+ b43err(dev->wl, "debugfs: Device is not a G-PHY\n");
res = -ENODEV;
goto out_unlock;
}
@@ -341,7 +341,7 @@ static ssize_t txpower_g_write_file(stru
/* Manual control */
if (sscanf(buf, "%d %d %d %d %d", &bbatt, &rfatt,
&txmix, &pa2db, &pa3db) != 5) {
- bcmerr(dev->wl,
+ b43err(dev->wl,
"debugfs: invalid value for \"tx_power_g\"\n");
res = -EINVAL;
goto out_unlock;
@@ -450,7 +450,7 @@ void b43_debugfs_add_device(struct b43_w
B43_WARN_ON(!dev);
e = kzalloc(sizeof(*e), GFP_KERNEL);
if (!e) {
- bcmerr(dev->wl, "debugfs: add device OOM\n");
+ b43err(dev->wl, "debugfs: add device OOM\n");
return;
}
e->dev = dev;
@@ -458,7 +458,7 @@ void b43_debugfs_add_device(struct b43_w
log->log = kcalloc(B43_NR_LOGGED_TXSTATUS,
sizeof(struct b43_txstatus), GFP_KERNEL);
if (!log->log) {
- bcmerr(dev->wl, "debugfs: add device txstatus OOM\n");
+ b43err(dev->wl, "debugfs: add device txstatus OOM\n");
kfree(e);
return;
}
@@ -471,10 +471,10 @@ void b43_debugfs_add_device(struct b43_w
e->subdir = debugfs_create_dir(devdir, fs.root);
if (!e->subdir || IS_ERR(e->subdir)) {
if (e->subdir == ERR_PTR(-ENODEV)) {
- bcmdbg(dev->wl, "DebugFS (CONFIG_DEBUG_FS) not "
+ b43dbg(dev->wl, "DebugFS (CONFIG_DEBUG_FS) not "
"enabled in kernel config\n");
} else {
- bcmerr(dev->wl, "debugfs: cannot create %s directory\n",
+ b43err(dev->wl, "debugfs: cannot create %s directory\n",
devdir);
}
dev->dfsentry = NULL;
Index: wireless-dev-new/drivers/net/wireless/b43/debugfs.h
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/debugfs.h 2007-08-14 17:01:07.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/debugfs.h 2007-08-15 19:15:03.000000000 +0200
@@ -92,7 +92,7 @@ static inline
#endif
#define TODO() \
do { \
- bcminfo(NULL, "TODO: Incomplete code in %s() at %s:%d\n", \
+ b43info(NULL, "TODO: Incomplete code in %s() at %s:%d\n", \
__FUNCTION__, __FILE__, __LINE__); \
} while (0)
@@ -101,7 +101,7 @@ static inline
#endif
#define FIXME() \
do { \
- bcminfo(NULL, "FIXME: Possibly broken code in %s() at %s:%d\n", \
+ b43info(NULL, "FIXME: Possibly broken code in %s() at %s:%d\n", \
__FUNCTION__, __FILE__, __LINE__); \
} while (0)
Index: wireless-dev-new/drivers/net/wireless/b43/dma.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/dma.c 2007-08-15 15:08:39.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/dma.c 2007-08-15 19:15:03.000000000 +0200
@@ -258,7 +258,7 @@ static void update_max_used_slots(struct
return;
ring->max_used_slots = current_used_slots;
if (b43_debug(ring->dev, B43_DBG_DMAVERBOSE)) {
- bcmdbg(ring->dev->wl,
+ b43dbg(ring->dev->wl,
"max_used_slots increased to %d on %s ring %d\n",
ring->max_used_slots,
ring->tx ? "TX" : "RX", ring->index);
@@ -430,7 +430,7 @@ static int alloc_ringmemory(struct b43_d
ring->descbase = dma_alloc_coherent(dev, B43_DMA_RINGMEMSIZE,
&(ring->dmabase), GFP_KERNEL);
if (!ring->descbase) {
- bcmerr(ring->dev->wl, "DMA ringmemory allocation failed\n");
+ b43err(ring->dev->wl, "DMA ringmemory allocation failed\n");
return -ENOMEM;
}
memset(ring->descbase, 0, B43_DMA_RINGMEMSIZE);
@@ -476,7 +476,7 @@ int b43_dmacontroller_rx_reset(struct b4
msleep(1);
}
if (i != -1) {
- bcmerr(dev->wl, "DMA RX reset timed out\n");
+ b43err(dev->wl, "DMA RX reset timed out\n");
return -ENODEV;
}
@@ -531,7 +531,7 @@ int b43_dmacontroller_tx_reset(struct b4
msleep(1);
}
if (i != -1) {
- bcmerr(dev->wl, "DMA TX reset timed out\n");
+ b43err(dev->wl, "DMA TX reset timed out\n");
return -ENODEV;
}
/* ensure the reset is completed. */
@@ -600,7 +600,7 @@ static int alloc_initial_descbuffers(str
err = setup_rx_descbuffer(ring, desc, meta, GFP_KERNEL);
if (err) {
- bcmerr(ring->dev->wl,
+ b43err(ring->dev->wl,
"Failed to allocate initial descbuffers\n");
goto err_unwind;
}
@@ -883,7 +883,7 @@ static void b43_destroy_dmaring(struct b
if (!ring)
return;
- bcmdbg(ring->dev->wl, "DMA-%s 0x%04X (%s) max used slots: %d/%d\n",
+ b43dbg(ring->dev->wl, "DMA-%s 0x%04X (%s) max used slots: %d/%d\n",
(ring->dma64) ? "64" : "32",
ring->mmio_base,
(ring->tx) ? "TX" : "RX", ring->max_used_slots, ring->nr_slots);
@@ -941,12 +941,12 @@ int b43_dma_init(struct b43_wldev *dev)
err = ssb_dma_set_mask(dev->dev, dmamask);
if (err) {
#ifdef B43_PIO
- bcmwarn(dev->wl, "DMA for this device not supported. "
+ b43warn(dev->wl, "DMA for this device not supported. "
"Falling back to PIO\n");
dev->__using_pio = 1;
return -EAGAIN;
#else
- bcmerr(dev->wl, "DMA for this device not supported and "
+ b43err(dev->wl, "DMA for this device not supported and "
"no PIO support compiled in\n");
return -EOPNOTSUPP;
#endif
@@ -997,7 +997,7 @@ int b43_dma_init(struct b43_wldev *dev)
dma->rx_ring3 = ring;
}
- bcmdbg(dev->wl, "%d-bit DMA initialized\n",
+ b43dbg(dev->wl, "%d-bit DMA initialized\n",
(dmamask == DMA_64BIT_MASK) ? 64 :
(dmamask == DMA_32BIT_MASK) ? 32 : 30);
err = 0;
@@ -1188,7 +1188,7 @@ static inline int should_inject_overflow
next_overflow = ring->last_injected_overflow + HZ;
if (time_after(jiffies, next_overflow)) {
ring->last_injected_overflow = jiffies;
- bcmdbg(ring->dev->wl,
+ b43dbg(ring->dev->wl,
"Injecting TX ring overflow on "
"DMA controller %d\n", ring->index);
return 1;
@@ -1209,7 +1209,7 @@ int b43_dma_tx(struct b43_wldev *dev,
spin_lock_irqsave(&ring->lock, flags);
B43_WARN_ON(!ring->tx);
if (unlikely(free_slots(ring) < SLOTS_PER_PACKET)) {
- bcmwarn(dev->wl, "DMA queue overflow\n");
+ b43warn(dev->wl, "DMA queue overflow\n");
err = -ENOSPC;
goto out_unlock;
}
@@ -1220,7 +1220,7 @@ int b43_dma_tx(struct b43_wldev *dev,
err = dma_tx_fragment(ring, skb, ctl);
if (unlikely(err)) {
- bcmerr(dev->wl, "DMA tx mapping failure\n");
+ b43err(dev->wl, "DMA tx mapping failure\n");
goto out_unlock;
}
ring->nr_tx_packets++;
@@ -1230,7 +1230,7 @@ int b43_dma_tx(struct b43_wldev *dev,
ieee80211_stop_queue(dev->wl->hw, txring_to_priority(ring));
ring->stopped = 1;
if (b43_debug(dev, B43_DBG_DMAVERBOSE)) {
- bcmdbg(dev->wl, "Stopped TX ring %d\n", ring->index);
+ b43dbg(dev->wl, "Stopped TX ring %d\n", ring->index);
}
}
out_unlock:
@@ -1309,7 +1309,7 @@ void b43_dma_handle_txstatus(struct b43_
ieee80211_wake_queue(dev->wl->hw, txring_to_priority(ring));
ring->stopped = 0;
if (b43_debug(dev, B43_DBG_DMAVERBOSE)) {
- bcmdbg(dev->wl, "Woke up TX ring %d\n", ring->index);
+ b43dbg(dev->wl, "Woke up TX ring %d\n", ring->index);
}
}
@@ -1409,7 +1409,7 @@ static void dma_rx(struct b43_dmaring *r
if (tmp <= 0)
break;
}
- bcmerr(ring->dev->wl, "DMA RX buffer too small "
+ b43err(ring->dev->wl, "DMA RX buffer too small "
"(len: %u, buffer: %u, nr-dropped: %d)\n",
len, ring->rx_buffersize, cnt);
goto drop;
@@ -1418,7 +1418,7 @@ static void dma_rx(struct b43_dmaring *r
dmaaddr = meta->dmaaddr;
err = setup_rx_descbuffer(ring, desc, meta, GFP_ATOMIC);
if (unlikely(err)) {
- bcmdbg(ring->dev->wl, "DMA RX: setup_rx_descbuffer() failed\n");
+ b43dbg(ring->dev->wl, "DMA RX: setup_rx_descbuffer() failed\n");
sync_descbuffer_for_device(ring, dmaaddr, ring->rx_buffersize);
goto drop;
}
Index: wireless-dev-new/drivers/net/wireless/b43/lo.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/lo.c 2007-08-15 15:08:39.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/lo.c 2007-08-15 19:15:03.000000000 +0200
@@ -44,7 +44,7 @@ static void b43_lo_write(struct b43_wlde
if (B43_DEBUG) {
if (unlikely(abs(control->i) > 16 || abs(control->q) > 16)) {
- bcmdbg(dev->wl, "Invalid LO control pair "
+ b43dbg(dev->wl, "Invalid LO control pair "
"(I: %d, Q: %d)\n", control->i, control->q);
dump_stack();
return;
@@ -66,11 +66,11 @@ static int assert_rfatt_and_bbatt(const
/* Check the attenuation values against the LO control array sizes. */
if (unlikely(rfatt->att >= B43_NR_RF)) {
- bcmerr(dev->wl, "rfatt(%u) >= size of LO array\n", rfatt->att);
+ b43err(dev->wl, "rfatt(%u) >= size of LO array\n", rfatt->att);
err = -EINVAL;
}
if (unlikely(bbatt->att >= B43_NR_BB)) {
- bcmerr(dev->wl, "bbatt(%u) >= size of LO array\n", bbatt->att);
+ b43err(dev->wl, "bbatt(%u) >= size of LO array\n", bbatt->att);
err = -EINVAL;
}
@@ -1038,7 +1038,7 @@ static void do_validate_loctl(struct b43
return;
error:
- bcmerr(dev->wl, "LO control pair validation failed "
+ b43err(dev->wl, "LO control pair validation failed "
"(I: %d, Q: %d, used %u, calib: %u, initing: %d)\n",
i, q, control->used,
b43_loctl_is_calibrated(control),
@@ -1103,7 +1103,7 @@ static void validate_loctl_calibration(s
* calibrated the LO. I guess that's OK. */
return;
}
- bcmerr(dev->wl, "Adjusting Local Oscillator to an uncalibrated "
+ b43err(dev->wl, "Adjusting Local Oscillator to an uncalibrated "
"control pair: rfatt=%u,%spadmix bbatt=%u\n",
rfatt->att,
(rfatt->with_padmix) ? "" : "no-",
Index: wireless-dev-new/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/main.c 2007-08-15 15:09:33.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/main.c 2007-08-15 19:15:03.000000000 +0200
@@ -210,7 +210,7 @@ static int b43_ratelimit(struct b43_wl *
return net_ratelimit();
}
-void bcminfo(struct b43_wl *wl, const char *fmt, ...)
+void b43info(struct b43_wl *wl, const char *fmt, ...)
{
va_list args;
@@ -223,7 +223,7 @@ void bcminfo(struct b43_wl *wl, const ch
va_end(args);
}
-void bcmerr(struct b43_wl *wl, const char *fmt, ...)
+void b43err(struct b43_wl *wl, const char *fmt, ...)
{
va_list args;
@@ -236,7 +236,7 @@ void bcmerr(struct b43_wl *wl, const cha
va_end(args);
}
-void bcmwarn(struct b43_wl *wl, const char *fmt, ...)
+void b43warn(struct b43_wl *wl, const char *fmt, ...)
{
va_list args;
@@ -250,7 +250,7 @@ void bcmwarn(struct b43_wl *wl, const ch
}
#if B43_DEBUG
-void bcmdbg(struct b43_wl *wl, const char *fmt, ...)
+void b43dbg(struct b43_wl *wl, const char *fmt, ...)
{
va_list args;
@@ -823,7 +823,7 @@ static int b43_key_write(struct b43_wlde
}
}
if (index < 0) {
- bcmerr(dev->wl, "Out of hardware key memory\n");
+ b43err(dev->wl, "Out of hardware key memory\n");
return -ENOBUFS;
}
} else
@@ -1219,7 +1219,7 @@ static u8 *b43_generate_probe_resp(struc
src_data = (const u8 *)dev->cached_beacon->data;
if (unlikely(src_size < 0x24)) {
- bcmdbg(dev->wl, "b43_generate_probe_resp: " "invalid beacon\n");
+ b43dbg(dev->wl, "b43_generate_probe_resp: " "invalid beacon\n");
return NULL;
}
@@ -1403,15 +1403,15 @@ static void b43_interrupt_tasklet(struct
}
if (unlikely(reason & B43_IRQ_MAC_TXERR))
- bcmerr(dev->wl, "MAC transmission error\n");
+ b43err(dev->wl, "MAC transmission error\n");
if (unlikely(reason & B43_IRQ_PHY_TXERR))
- bcmerr(dev->wl, "PHY transmission error\n");
+ b43err(dev->wl, "PHY transmission error\n");
if (unlikely(merged_dma_reason & (B43_DMAIRQ_FATALMASK |
B43_DMAIRQ_NONFATALMASK))) {
if (merged_dma_reason & B43_DMAIRQ_FATALMASK) {
- bcmerr(dev->wl, "Fatal DMA error: "
+ b43err(dev->wl, "Fatal DMA error: "
"0x%08X, 0x%08X, 0x%08X, "
"0x%08X, 0x%08X, 0x%08X\n",
dma_reason[0], dma_reason[1],
@@ -1423,7 +1423,7 @@ static void b43_interrupt_tasklet(struct
return;
}
if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
- bcmerr(dev->wl, "DMA error: "
+ b43err(dev->wl, "DMA error: "
"0x%08X, 0x%08X, 0x%08X, "
"0x%08X, 0x%08X, 0x%08X\n",
dma_reason[0], dma_reason[1],
@@ -1584,7 +1584,7 @@ static int b43_request_firmware(struct b
(rev >= 5 ? 5 : rev), modparam_fwpostfix);
err = request_firmware(&dev->fw.ucode, buf, dev->dev->dev);
if (err) {
- bcmerr(dev->wl, "Microcode \"%s\" not "
+ b43err(dev->wl, "Microcode \"%s\" not "
"available or load failed.\n", buf);
goto error;
}
@@ -1596,7 +1596,7 @@ static int b43_request_firmware(struct b
(rev < 5 ? 4 : 5), modparam_fwpostfix);
err = request_firmware(&dev->fw.pcm, buf, dev->dev->dev);
if (err) {
- bcmerr(dev->wl, "PCM \"%s\" not available "
+ b43err(dev->wl, "PCM \"%s\" not available "
"or load failed.\n", buf);
goto error;
}
@@ -1635,12 +1635,12 @@ static int b43_request_firmware(struct b
err = request_firmware(&dev->fw.initvals0, buf, dev->dev->dev);
if (err) {
- bcmerr(dev->wl, "InitVals \"%s\" not available "
+ b43err(dev->wl, "InitVals \"%s\" not available "
"or load failed.\n", buf);
goto error;
}
if (dev->fw.initvals0->size % sizeof(struct b43_initval)) {
- bcmerr(dev->wl, "InitVals fileformat error.\n");
+ b43err(dev->wl, "InitVals fileformat error.\n");
goto error;
}
}
@@ -1672,13 +1672,13 @@ static int b43_request_firmware(struct b
request_firmware(&dev->fw.initvals1, buf,
dev->dev->dev);
if (err) {
- bcmerr(dev->wl, "InitVals \"%s\" not available "
+ b43err(dev->wl, "InitVals \"%s\" not available "
"or load failed.\n", buf);
goto error;
}
if (dev->fw.initvals1->size %
sizeof(struct b43_initval)) {
- bcmerr(dev->wl, "InitVals fileformat error.\n");
+ b43err(dev->wl, "InitVals fileformat error.\n");
goto error;
}
}
@@ -1687,13 +1687,13 @@ static int b43_request_firmware(struct b
out:
return err;
error:
- bcmerr(dev->wl, "You must go to "
+ b43err(dev->wl, "You must go to "
"http://linuxwireless.org/en/users/Drivers/b43#devicefirmware "
"and download the correct firmware (version 4)\n");
b43_release_firmware(dev);
goto out;
err_noinitval:
- bcmerr(dev->wl, "No InitVals available\n");
+ b43err(dev->wl, "No InitVals available\n");
err = -ENOENT;
goto error;
}
@@ -1740,7 +1740,7 @@ static int b43_upload_microcode(struct b
break;
i++;
if (i >= 50) {
- bcmerr(dev->wl, "Microcode not responding\n");
+ b43err(dev->wl, "Microcode not responding\n");
err = -ENODEV;
goto out;
}
@@ -1755,14 +1755,14 @@ static int b43_upload_microcode(struct b
fwtime = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_UCODETIME);
if (fwrev <= 0x128) {
- bcmerr(dev->wl, "YOUR FIRMWARE IS TOO OLD. Firmware from "
+ b43err(dev->wl, "YOUR FIRMWARE IS TOO OLD. Firmware from "
"binary drivers older than version 4.x is unsupported. "
"You must upgrade your firmware files.\n");
b43_write32(dev, B43_MMIO_MACCTL, 0);
err = -EOPNOTSUPP;
goto out;
}
- bcmdbg(dev->wl, "Loading firmware version %u.%u "
+ b43dbg(dev->wl, "Loading firmware version %u.%u "
"(20%.2i-%.2i-%.2i %.2i:%.2i:%.2i)\n",
fwrev, fwpatch,
(fwdate >> 12) & 0xF, (fwdate >> 8) & 0xF, fwdate & 0xFF,
@@ -1803,7 +1803,7 @@ static int b43_write_initvals(struct b43
return 0;
err_format:
- bcmerr(dev->wl, "InitVals (b43_initvalXX.fw) file-format error. "
+ b43err(dev->wl, "InitVals (b43_initvalXX.fw) file-format error. "
"Please fix your b43 firmware files.\n");
return -EPROTO;
}
@@ -1938,7 +1938,7 @@ void b43_mac_suspend(struct b43_wldev *d
goto out;
udelay(1);
}
- bcmerr(dev->wl, "MAC suspend failed\n");
+ b43err(dev->wl, "MAC suspend failed\n");
}
out:
dev->mac_suspended++;
@@ -2118,7 +2118,7 @@ static int b43_chip_init(struct b43_wlde
goto err_gpio_cleanup;
b43_radio_turn_on(dev);
dev->radio_hw_enable = b43_is_hw_radio_enabled(dev);
- bcmdbg(dev->wl, "Radio %s by hardware\n",
+ b43dbg(dev->wl, "Radio %s by hardware\n",
(dev->radio_hw_enable == 0) ? "disabled" : "enabled");
b43_write16(dev, 0x03E6, 0x0000);
@@ -2191,7 +2191,7 @@ static int b43_chip_init(struct b43_wlde
dev->dev->bus->chipco.fast_pwrup_delay);
err = 0;
- bcmdbg(dev->wl, "Chip initialized\n");
+ b43dbg(dev->wl, "Chip initialized\n");
out:
return err;
@@ -2269,7 +2269,7 @@ static void b43_periodic_every1sec(struc
radio_hw_enable = b43_is_hw_radio_enabled(dev);
if (unlikely(dev->radio_hw_enable != radio_hw_enable)) {
dev->radio_hw_enable = radio_hw_enable;
- bcmdbg(dev->wl, "Radio hardware status changed to %s\n",
+ b43dbg(dev->wl, "Radio hardware status changed to %s\n",
(radio_hw_enable == 0) ? "disabled" : "enabled");
b43_leds_update(dev, 0);
}
@@ -2406,7 +2406,7 @@ static int b43_validate_chipaccess(struc
return 0;
error:
- bcmerr(dev->wl, "Failed to validate the chipaccess\n");
+ b43err(dev->wl, "Failed to validate the chipaccess\n");
return -ENODEV;
}
@@ -2461,7 +2461,7 @@ static int b43_rng_init(struct b43_wl *w
err = hwrng_register(&wl->rng);
if (err) {
wl->rng_initialized = 0;
- bcmerr(wl, "Failed to register the random "
+ b43err(wl, "Failed to register the random "
"number generator (%d)\n", err);
}
@@ -2622,7 +2622,7 @@ static int b43_switch_phymode(struct b43
err = find_wldev_for_phymode(wl, new_mode, &up_dev, &gmode);
if (err) {
- bcmerr(wl, "Could not find a device for %s-PHY mode\n",
+ b43err(wl, "Could not find a device for %s-PHY mode\n",
phymode_to_string(new_mode));
return err;
}
@@ -2631,7 +2631,7 @@ static int b43_switch_phymode(struct b43
/* This device is already running. */
return 0;
}
- bcmdbg(wl, "Reconfiguring PHYmode to %s-PHY\n",
+ b43dbg(wl, "Reconfiguring PHYmode to %s-PHY\n",
phymode_to_string(new_mode));
down_dev = wl->current_dev;
@@ -2653,7 +2653,7 @@ static int b43_switch_phymode(struct b43
if (prev_status >= B43_STAT_INITIALIZED) {
err = b43_wireless_core_init(up_dev);
if (err) {
- bcmerr(wl, "Fatal: Could not initialize device for "
+ b43err(wl, "Fatal: Could not initialize device for "
"newly selected %s-PHY mode\n",
phymode_to_string(new_mode));
goto init_failure;
@@ -2662,7 +2662,7 @@ static int b43_switch_phymode(struct b43
if (prev_status >= B43_STAT_STARTED) {
err = b43_wireless_core_start(up_dev);
if (err) {
- bcmerr(wl, "Fatal: Coult not start device for "
+ b43err(wl, "Fatal: Coult not start device for "
"newly selected %s-PHY mode\n",
phymode_to_string(new_mode));
b43_wireless_core_exit(up_dev);
@@ -2902,7 +2902,7 @@ out_unlock:
mutex_unlock(&wl->mutex);
out:
if (!err) {
- bcmdbg(wl, "Using %s based encryption for keyidx: %d, "
+ b43dbg(wl, "Using %s based encryption for keyidx: %d, "
"mac: " MAC_FMT "\n",
(key->flags & IEEE80211_KEY_FORCE_SW_ENCRYPT) ?
"software" : "hardware", key->keyidx, MAC_ARG(addr));
@@ -2985,7 +2985,7 @@ static void b43_wireless_core_stop(struc
b43_mac_suspend(dev);
free_irq(dev->dev->irq, dev);
- bcmdbg(wl, "Wireless interface stopped\n");
+ b43dbg(wl, "Wireless interface stopped\n");
}
/* Locking: wl->mutex */
@@ -2999,7 +2999,7 @@ static int b43_wireless_core_start(struc
err = request_irq(dev->dev->irq, b43_interrupt_handler,
IRQF_SHARED, KBUILD_MODNAME, dev);
if (err) {
- bcmerr(dev->wl, "Cannot request IRQ-%d\n", dev->dev->irq);
+ b43err(dev->wl, "Cannot request IRQ-%d\n", dev->dev->irq);
goto out;
}
@@ -3014,7 +3014,7 @@ static int b43_wireless_core_start(struc
/* Start maintainance work */
b43_periodic_tasks_setup(dev);
- bcmdbg(dev->wl, "Wireless interface started\n");
+ b43dbg(dev->wl, "Wireless interface started\n");
out:
return err;
}
@@ -3055,12 +3055,12 @@ static int b43_phy_versioning(struct b43
unsupported = 1;
};
if (unsupported) {
- bcmerr(dev->wl, "FOUND UNSUPPORTED PHY "
+ b43err(dev->wl, "FOUND UNSUPPORTED PHY "
"(Analog %u, Type %u, Revision %u)\n",
analog_type, phy_type, phy_rev);
return -EOPNOTSUPP;
}
- bcmdbg(dev->wl, "Found PHY: Analog %u, Type %u, Revision %u\n",
+ b43dbg(dev->wl, "Found PHY: Analog %u, Type %u, Revision %u\n",
analog_type, phy_type, phy_rev);
/* Get RADIO versioning */
@@ -3102,12 +3102,12 @@ static int b43_phy_versioning(struct b43
B43_WARN_ON(1);
}
if (unsupported) {
- bcmerr(dev->wl, "FOUND UNSUPPORTED RADIO "
+ b43err(dev->wl, "FOUND UNSUPPORTED RADIO "
"(Manuf 0x%X, Version 0x%X, Revision %u)\n",
radio_manuf, radio_ver, radio_rev);
return -EOPNOTSUPP;
}
- bcmdbg(dev->wl, "Found Radio: Manuf 0x%X, Version 0x%X, Revision %u\n",
+ b43dbg(dev->wl, "Found Radio: Manuf 0x%X, Version 0x%X, Revision %u\n",
radio_manuf, radio_ver, radio_rev);
phy->radio_manuf = radio_manuf;
@@ -3406,7 +3406,7 @@ static int b43_add_interface(struct ieee
if ((conf->type != IEEE80211_IF_TYPE_MNTR) && wl->operating)
goto out_mutex_unlock;
- bcmdbg(wl, "Adding Interface type %d\n", conf->type);
+ b43dbg(wl, "Adding Interface type %d\n", conf->type);
dev = wl->current_dev;
if (b43_status(dev) < B43_STAT_INITIALIZED) {
@@ -3452,7 +3452,7 @@ static void b43_remove_interface(struct
struct b43_wldev *dev;
unsigned long flags;
- bcmdbg(wl, "Removing Interface type %d\n", conf->type);
+ b43dbg(wl, "Removing Interface type %d\n", conf->type);
mutex_lock(&wl->mutex);
if (conf->type == IEEE80211_IF_TYPE_MNTR) {
@@ -3530,9 +3530,9 @@ static void b43_chip_reset(struct work_s
out:
mutex_unlock(&wl->mutex);
if (err)
- bcmerr(wl, "Controller restart FAILED\n");
+ b43err(wl, "Controller restart FAILED\n");
else
- bcminfo(wl, "Controller restarted\n");
+ b43info(wl, "Controller restarted\n");
}
static int b43_setup_modes(struct b43_wldev *dev,
@@ -3631,7 +3631,7 @@ static int b43_wireless_core_attach(stru
err = ssb_bus_powerup(bus, 0);
if (err) {
- bcmerr(wl, "Bus powerup failed\n");
+ b43err(wl, "Bus powerup failed\n");
goto out;
}
/* Get the PHY type. */
@@ -3746,7 +3746,7 @@ static int b43_one_core_attach(struct ss
if (!pdev ||
((pdev->device != 0x4321) &&
(pdev->device != 0x4313) && (pdev->device != 0x431A))) {
- bcmdbg(wl, "Ignoring unconnected 802.11 core\n");
+ b43dbg(wl, "Ignoring unconnected 802.11 core\n");
return -ENODEV;
}
}
@@ -3823,7 +3823,7 @@ static int b43_wireless_init(struct ssb_
hw = ieee80211_alloc_hw(sizeof(*wl), &b43_hw_ops);
if (!hw) {
- bcmerr(NULL, "Could not allocate ieee80211 device\n");
+ b43err(NULL, "Could not allocate ieee80211 device\n");
goto out;
}
@@ -3851,7 +3851,7 @@ static int b43_wireless_init(struct ssb_
INIT_LIST_HEAD(&wl->devlist);
ssb_set_devtypedata(dev, wl);
- bcminfo(wl, "Broadcom %04X WLAN found\n", dev->bus->chip_id);
+ b43info(wl, "Broadcom %04X WLAN found\n", dev->bus->chip_id);
err = 0;
out:
return err;
@@ -3916,7 +3916,7 @@ static void b43_remove(struct ssb_device
/* Perform a hardware reset. This can be called from any context. */
void b43_controller_restart(struct b43_wldev *dev, const char *reason)
{
- bcminfo(dev->wl, "Controller RESET (%s) ...\n", reason);
+ b43info(dev->wl, "Controller RESET (%s) ...\n", reason);
queue_work(dev->wl->hw->workqueue, &dev->restart_work);
}
@@ -3927,7 +3927,7 @@ static int b43_suspend(struct ssb_device
struct b43_wldev *wldev = ssb_get_drvdata(dev);
struct b43_wl *wl = wldev->wl;
- bcmdbg(wl, "Suspending...\n");
+ b43dbg(wl, "Suspending...\n");
mutex_lock(&wl->mutex);
wldev->suspend_init_status = b43_status(wldev);
@@ -3937,7 +3937,7 @@ static int b43_suspend(struct ssb_device
b43_wireless_core_exit(wldev);
mutex_unlock(&wl->mutex);
- bcmdbg(wl, "Device suspended.\n");
+ b43dbg(wl, "Device suspended.\n");
return 0;
}
@@ -3948,13 +3948,13 @@ static int b43_resume(struct ssb_device
struct b43_wl *wl = wldev->wl;
int err = 0;
- bcmdbg(wl, "Resuming...\n");
+ b43dbg(wl, "Resuming...\n");
mutex_lock(&wl->mutex);
if (wldev->suspend_init_status >= B43_STAT_INITIALIZED) {
err = b43_wireless_core_init(wldev);
if (err) {
- bcmerr(wl, "Resume failed at core init\n");
+ b43err(wl, "Resume failed at core init\n");
goto out;
}
}
@@ -3962,13 +3962,13 @@ static int b43_resume(struct ssb_device
err = b43_wireless_core_start(wldev);
if (err) {
b43_wireless_core_exit(wldev);
- bcmerr(wl, "Resume failed at core start\n");
+ b43err(wl, "Resume failed at core start\n");
goto out;
}
}
mutex_unlock(&wl->mutex);
- bcmdbg(wl, "Device resumed.\n");
+ b43dbg(wl, "Device resumed.\n");
out:
return err;
}
Index: wireless-dev-new/drivers/net/wireless/b43/phy.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/phy.c 2007-08-14 17:01:07.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/phy.c 2007-08-15 19:15:03.000000000 +0200
@@ -275,7 +275,7 @@ static inline u16 adjust_phyreg_for_phyt
if (offset & B43_PHYROUTE_EXT_GPHY) {
/* Ext-G registers are only available on G-PHYs */
if (phy->type != B43_PHYTYPE_G) {
- bcmdbg(dev->wl, "EXT-G PHY access at "
+ b43dbg(dev->wl, "EXT-G PHY access at "
"0x%04X on %u type PHY\n", offset, phy->type);
}
}
@@ -327,7 +327,7 @@ void b43_set_txpower_g(struct b43_wldev
memcpy(&phy->bbatt, bbatt, sizeof(*bbatt));
if (b43_debug(dev, B43_DBG_XMITPOWER)) {
- bcmdbg(dev->wl, "Tuning TX-power to bbatt(%u), "
+ b43dbg(dev->wl, "Tuning TX-power to bbatt(%u), "
"rfatt(%u), tx_control(0x%02X), "
"tx_bias(0x%02X), tx_magn(0x%02X)\n",
bb, rf, tx_control, tx_bias, tx_magn);
@@ -741,7 +741,7 @@ static void b43_phy_init_pctl(struct b43
if (B43_DEBUG) {
/* Current-Idle-TSSI sanity check. */
if (abs(phy->cur_idle_tssi - phy->tgt_idle_tssi) >= 20) {
- bcmdbg(dev->wl,
+ b43dbg(dev->wl,
"!WARNING! Idle-TSSI phy->cur_idle_tssi "
"measuring failed. (cur=%d, tgt=%d). Disabling TX power "
"adjustment.\n", phy->cur_idle_tssi,
@@ -2047,7 +2047,7 @@ void b43_phy_xmitpower(struct b43_wldev
&& (phy->type == B43_PHYTYPE_G))
max_pwr -= 0x3;
if (unlikely(max_pwr <= 0)) {
- bcmwarn(dev->wl,
+ b43warn(dev->wl,
"Invalid max-TX-power value in SPROM.\n");
max_pwr = 60; /* fake it */
dev->dev->bus->sprom.r1.maxpwr_bg = max_pwr;
@@ -2063,7 +2063,7 @@ void b43_phy_xmitpower(struct b43_wldev
/* And limit it. max_pwr already is Q5.2 */
desired_pwr = limit_value(desired_pwr, 0, max_pwr);
if (b43_debug(dev, B43_DBG_XMITPOWER)) {
- bcmdbg(dev->wl,
+ b43dbg(dev->wl,
"Current TX power output: " Q52_FMT
" dBm, " "Desired TX power output: "
Q52_FMT " dBm\n", Q52_ARG(estimated_pwr),
@@ -2219,7 +2219,7 @@ int b43_phy_init_tssi2dbm_table(struct b
}
dyn_tssi2dbm = kmalloc(64, GFP_KERNEL);
if (dyn_tssi2dbm == NULL) {
- bcmerr(dev->wl, "Could not allocate memory"
+ b43err(dev->wl, "Could not allocate memory"
"for tssi2dbm table\n");
return -ENOMEM;
}
@@ -2227,7 +2227,7 @@ int b43_phy_init_tssi2dbm_table(struct b
if (b43_tssi2dbm_entry
(dyn_tssi2dbm, idx, pab0, pab1, pab2)) {
phy->tssi2dbm = NULL;
- bcmerr(dev->wl, "Could not generate "
+ b43err(dev->wl, "Could not generate "
"tssi2dBm table\n");
kfree(dyn_tssi2dbm);
return -ENODEV;
@@ -2240,7 +2240,7 @@ int b43_phy_init_tssi2dbm_table(struct b
case B43_PHYTYPE_A:
/* APHY needs a generated table. */
phy->tssi2dbm = NULL;
- bcmerr(dev->wl, "Could not generate tssi2dBm "
+ b43err(dev->wl, "Could not generate tssi2dBm "
"table (wrong SPROM info)!\n");
return -ENODEV;
case B43_PHYTYPE_B:
@@ -2295,7 +2295,7 @@ int b43_phy_init(struct b43_wldev *dev)
break;
}
if (err)
- bcmerr(dev->wl, "Unknown PHYTYPE found\n");
+ b43err(dev->wl, "Unknown PHYTYPE found\n");
return err;
}
@@ -4329,7 +4329,7 @@ void b43_radio_turn_on(struct b43_wldev
B43_WARN_ON(1);
}
phy->radio_on = 1;
- bcmdbg(dev->wl, "Radio turned on\n");
+ b43dbg(dev->wl, "Radio turned on\n");
}
void b43_radio_turn_off(struct b43_wldev *dev)
@@ -4348,5 +4348,5 @@ void b43_radio_turn_off(struct b43_wldev
} else
b43_phy_write(dev, 0x0015, 0xAA00);
phy->radio_on = 0;
- bcmdbg(dev->wl, "Radio turned off\n");
+ b43dbg(dev->wl, "Radio turned off\n");
}
Index: wireless-dev-new/drivers/net/wireless/b43/pio.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/pio.c 2007-08-15 15:08:39.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/pio.c 2007-08-15 19:15:03.000000000 +0200
@@ -210,7 +210,7 @@ static int pio_tx_packet(struct b43_pio_
octets = (u16) skb->len + sizeof(struct b43_txhdr_fw4);
if (queue->tx_devq_size < octets) {
- bcmwarn(queue->dev->wl, "PIO queue too small. "
+ b43warn(queue->dev->wl, "PIO queue too small. "
"Dropping packet.\n");
/* Drop it silently (return success) */
free_txpacket(packet);
@@ -316,13 +316,13 @@ struct b43_pioqueue *b43_setup_pioqueue(
qsize = b43_read16(dev, queue->mmio_base + B43_PIO_TXQBUFSIZE);
if (qsize == 0) {
- bcmerr(dev->wl, "This card does not support PIO "
+ b43err(dev->wl, "This card does not support PIO "
"operation mode. Please use DMA mode "
"(module parameter pio=0).\n");
goto err_freequeue;
}
if (qsize <= B43_PIO_TXQADJUST) {
- bcmerr(dev->wl, "PIO tx device-queue too small (%u)\n", qsize);
+ b43err(dev->wl, "PIO tx device-queue too small (%u)\n", qsize);
goto err_freequeue;
}
qsize -= B43_PIO_TXQADJUST;
@@ -407,7 +407,7 @@ int b43_pio_init(struct b43_wldev *dev)
if (dev->dev->id.revision < 3)
dev->irq_savedstate |= B43_IRQ_PIO_WORKAROUND;
- bcmdbg(dev->wl, "PIO initialized\n");
+ b43dbg(dev->wl, "PIO initialized\n");
err = 0;
out:
return err;
@@ -505,7 +505,7 @@ static void pio_rx_error(struct b43_pioq
{
int i;
- bcmerr(queue->dev->wl, "PIO RX error: %s\n", error);
+ b43err(queue->dev->wl, "PIO RX error: %s\n", error);
b43_pio_write(queue, B43_PIO_RXCTL, B43_PIO_RXCTL_READY);
if (clear_buffers) {
B43_WARN_ON(queue->mmio_base != B43_MMIO_PIO1_BASE);
@@ -535,7 +535,7 @@ void b43_pio_rx(struct b43_pioqueue *que
goto data_ready;
udelay(10);
}
- bcmdbg(queue->dev->wl, "PIO RX timed out\n");
+ b43dbg(queue->dev->wl, "PIO RX timed out\n");
return;
data_ready:
Index: wireless-dev-new/drivers/net/wireless/b43/sysfs.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/sysfs.c 2007-08-14 17:01:07.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/sysfs.c 2007-08-15 19:15:03.000000000 +0200
@@ -141,7 +141,7 @@ static ssize_t b43_attr_interfmode_store
err = b43_radio_set_interference_mitigation(wldev, mode);
if (err) {
- bcmerr(wldev->wl, "Interference Mitigation not "
+ b43err(wldev->wl, "Interference Mitigation not "
"supported by device\n");
}
mmiowb();
Index: wireless-dev-new/drivers/net/wireless/b43/xmit.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/xmit.c 2007-08-14 17:01:07.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/xmit.c 2007-08-15 19:15:03.000000000 +0200
@@ -472,14 +472,14 @@ void b43_rx(struct b43_wldev *dev, struc
/* Skip PLCP and padding */
padding = (macstat & B43_RX_MAC_PADDING) ? 2 : 0;
if (unlikely(skb->len < (sizeof(struct b43_plcp_hdr6) + padding))) {
- bcmdbg(dev->wl, "RX: Packet size underrun (1)\n");
+ b43dbg(dev->wl, "RX: Packet size underrun (1)\n");
goto drop;
}
plcp = (struct b43_plcp_hdr6 *)(skb->data + padding);
skb_pull(skb, sizeof(struct b43_plcp_hdr6) + padding);
/* The skb contains the Wireless Header + payload data now */
if (unlikely(skb->len < (2 + 2 + 6 /*minimum hdr */ + FCS_LEN))) {
- bcmdbg(dev->wl, "RX: Packet size underrun (2)\n");
+ b43dbg(dev->wl, "RX: Packet size underrun (2)\n");
goto drop;
}
wlhdr = (struct ieee80211_hdr *)(skb->data);
@@ -508,7 +508,7 @@ void b43_rx(struct b43_wldev *dev, struc
wlhdr_len = ieee80211_get_hdrlen(fctl);
if (unlikely(skb->len < (wlhdr_len + 3))) {
- bcmdbg(dev->wl,
+ b43dbg(dev->wl,
"RX: Packet size underrun (3)\n");
goto drop;
}
@@ -523,7 +523,7 @@ void b43_rx(struct b43_wldev *dev, struc
icv_len = 4;
}
if (unlikely(skb->len < (wlhdr_len + iv_len + icv_len))) {
- bcmdbg(dev->wl,
+ b43dbg(dev->wl,
"RX: Packet size underrun (4)\n");
goto drop;
}
@@ -577,7 +577,7 @@ void b43_rx(struct b43_wldev *dev, struc
return;
drop:
- bcmdbg(dev->wl, "RX: Packet dropped\n");
+ b43dbg(dev->wl, "RX: Packet dropped\n");
dev_kfree_skb_any(skb);
}
--
^ permalink raw reply [flat|nested] 13+ messages in thread
* [patch 4/6] b43: Update Kconfig help text
2007-08-18 23:48 [patch 0/6] New patch series for merge Michael Buesch
` (2 preceding siblings ...)
2007-08-18 23:48 ` [patch 3/6] b43: Rename print functions to b43foobar Michael Buesch
@ 2007-08-18 23:48 ` Michael Buesch
2007-08-18 23:48 ` [patch 5/6] b43: Use new firmware file naming scheme Michael Buesch
2007-08-18 23:48 ` [patch 6/6] b43: New firmware file format Michael Buesch
5 siblings, 0 replies; 13+ messages in thread
From: Michael Buesch @ 2007-08-18 23:48 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, bcm43xx-dev, Larry Finger
From: Larry Finger <Larry.Finger@lwfinger.net>
The help text in Kconfig for b43 is updated to indicate the devices that it
does not support and to note that it can coexist with b43legacy.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Index: wireless-dev-new/drivers/net/wireless/b43/Kconfig
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/Kconfig 2007-08-15 15:18:34.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/Kconfig 2007-08-17 20:20:27.000000000 +0200
@@ -6,7 +6,16 @@ config B43
select HW_RANDOM
---help---
This is an experimental driver for the Broadcom 43xx wireless chip,
- found in the Apple Airport Extreme and various other devices.
+ found in the Apple Airport Extreme and various other devices. This
+ driver supports 802.11a and 802.11g, but not 802.11b. As a result,
+ BCM4301 and BCM4303 are not supported - use b43legacy instead.
+ It is safe to include both b43 and b43legacy as the ssb driver will
+ load the correct version for your device.
+
+ This driver uses V4 firmware, which must be installed separately using
+ b43-fwcutter.
+
+ This driver can be built as a module (recommended) that will be called "b43".
# Auto-select SSB PCI-HOST support, if possible
config B43_PCI_AUTOSELECT
--
^ permalink raw reply [flat|nested] 13+ messages in thread
* [patch 5/6] b43: Use new firmware file naming scheme
2007-08-18 23:48 [patch 0/6] New patch series for merge Michael Buesch
` (3 preceding siblings ...)
2007-08-18 23:48 ` [patch 4/6] b43: Update Kconfig help text Michael Buesch
@ 2007-08-18 23:48 ` Michael Buesch
2007-08-18 23:48 ` [patch 6/6] b43: New firmware file format Michael Buesch
5 siblings, 0 replies; 13+ messages in thread
From: Michael Buesch @ 2007-08-18 23:48 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, bcm43xx-dev
Use a sane firmware file naming scheme and also move
the firmware files into a subdir.
This avoids conflicts with bcm43xx and b43legacy.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Index: wireless-dev-new/drivers/net/wireless/b43/b43.h
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/b43.h 2007-08-15 19:15:03.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/b43.h 2007-08-16 17:15:46.000000000 +0200
@@ -406,9 +406,9 @@ struct b43_dmaring;
struct b43_pioqueue;
struct b43_initval {
- u16 offset;
- u16 size;
- u32 value;
+ __be16 offset;
+ __be16 size;
+ __be32 value;
} __attribute__ ((__packed__));
#define B43_PHYMODE(phytype) (1 << (phytype))
@@ -609,10 +609,10 @@ struct b43_firmware {
const struct firmware *ucode;
/* PCM code */
const struct firmware *pcm;
- /* Initial MMIO values 0 */
- const struct firmware *initvals0;
- /* Initial MMIO values 1 */
- const struct firmware *initvals1;
+ /* Initial MMIO values for the firmware */
+ const struct firmware *initvals;
+ /* Initial MMIO values for the firmware, band-specific */
+ const struct firmware *initvals_band;
/* Firmware revision */
u16 rev;
/* Firmware patchlevel */
Index: wireless-dev-new/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/main.c 2007-08-15 19:15:03.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/main.c 2007-08-16 17:32:10.000000000 +0200
@@ -1566,136 +1566,155 @@ static void b43_release_firmware(struct
dev->fw.ucode = NULL;
release_firmware(dev->fw.pcm);
dev->fw.pcm = NULL;
- release_firmware(dev->fw.initvals0);
- dev->fw.initvals0 = NULL;
- release_firmware(dev->fw.initvals1);
- dev->fw.initvals1 = NULL;
+ release_firmware(dev->fw.initvals);
+ dev->fw.initvals = NULL;
+ release_firmware(dev->fw.initvals_band);
+ dev->fw.initvals_band = NULL;
}
-static int b43_request_firmware(struct b43_wldev *dev)
+static void b43_print_fw_helptext(struct b43_wl *wl)
{
- u8 rev = dev->dev->id.revision;
- int err = 0;
- int nr;
- char buf[22 + sizeof(modparam_fwpostfix) - 1] = { 0 };
+ b43err(wl, "You must go to "
+ "http://linuxwireless.org/en/users/Drivers/bcm43xx#devicefirmware "
+ "and download the correct firmware (version 4).\n");
+}
- if (!dev->fw.ucode) {
- snprintf(buf, ARRAY_SIZE(buf), "bcm43xx_microcode%d%s.fw",
- (rev >= 5 ? 5 : rev), modparam_fwpostfix);
- err = request_firmware(&dev->fw.ucode, buf, dev->dev->dev);
- if (err) {
- b43err(dev->wl, "Microcode \"%s\" not "
- "available or load failed.\n", buf);
- goto error;
- }
- }
+static int do_request_fw(struct b43_wldev *dev,
+ const char *name,
+ const struct firmware **fw)
+{
+ const size_t plen = sizeof(modparam_fwpostfix) + 32;
+ char path[plen];
+ int err;
- if (!dev->fw.pcm) {
- snprintf(buf, ARRAY_SIZE(buf),
- "bcm43xx_pcm%d%s.fw",
- (rev < 5 ? 4 : 5), modparam_fwpostfix);
- err = request_firmware(&dev->fw.pcm, buf, dev->dev->dev);
- if (err) {
- b43err(dev->wl, "PCM \"%s\" not available "
- "or load failed.\n", buf);
- goto error;
- }
+ if (!name)
+ return 0;
+
+ snprintf(path, ARRAY_SIZE(path),
+ "b43%s/%s.fw",
+ modparam_fwpostfix, name);
+ err = request_firmware(fw, path, dev->dev->dev);
+ if (err) {
+ b43err(dev->wl, "Firmware file \"%s\" not found "
+ "or load failed.\n", path);
}
- if (!dev->fw.initvals0) {
- if (rev == 2 || rev == 4) {
- switch (dev->phy.type) {
- case B43_PHYTYPE_A:
- nr = 3;
- break;
- case B43_PHYTYPE_B:
- case B43_PHYTYPE_G:
- nr = 1;
- break;
- default:
- goto err_noinitval;
- }
+ return err;
+}
- } else if (rev >= 5) {
- switch (dev->phy.type) {
- case B43_PHYTYPE_A:
- nr = 7;
- break;
- case B43_PHYTYPE_B:
- case B43_PHYTYPE_G:
- nr = 5;
- break;
- default:
- goto err_noinitval;
- }
- } else
- goto err_noinitval;
- snprintf(buf, ARRAY_SIZE(buf), "bcm43xx_initval%02d%s.fw",
- nr, modparam_fwpostfix);
+static int b43_request_firmware(struct b43_wldev *dev)
+{
+ struct b43_firmware *fw = &dev->fw;
+ const u8 rev = dev->dev->id.revision;
+ const char *filename;
+ u32 tmshigh;
+ int err;
- err = request_firmware(&dev->fw.initvals0, buf, dev->dev->dev);
- if (err) {
- b43err(dev->wl, "InitVals \"%s\" not available "
- "or load failed.\n", buf);
- goto error;
- }
- if (dev->fw.initvals0->size % sizeof(struct b43_initval)) {
- b43err(dev->wl, "InitVals fileformat error.\n");
- goto error;
+ tmshigh = ssb_read32(dev->dev, SSB_TMSHIGH);
+ if (!fw->ucode) {
+ if ((rev >= 5) && (rev <= 10))
+ filename = "ucode5";
+ else if ((rev >= 11) && (rev <= 12))
+ filename = "ucode11";
+ else if (rev >= 13)
+ filename = "ucode13";
+ else
+ goto err_no_ucode;
+ err = do_request_fw(dev, filename, &fw->ucode);
+ if (err)
+ goto err_load;
+ }
+ if (!fw->pcm) {
+ if ((rev >= 5) && (rev <= 10))
+ filename = "pcm5";
+ else if (rev >= 11)
+ filename = NULL;
+ else
+ goto err_no_pcm;
+ err = do_request_fw(dev, filename, &fw->pcm);
+ if (err)
+ goto err_load;
+ }
+ if (!fw->initvals) {
+ switch (dev->phy.type) {
+ case B43_PHYTYPE_A:
+ if ((rev >= 5) && (rev <= 10)) {
+ if (tmshigh & B43_TMSHIGH_GPHY)
+ filename = "a0g1initvals5";
+ else
+ filename = "a0g0initvals5";
+ } else
+ goto err_no_initvals;
+ break;
+ case B43_PHYTYPE_G:
+ if ((rev >= 5) && (rev <= 10))
+ filename = "b0g0initvals5";
+ else if (rev >= 13)
+ filename = "lp0initvals13";
+ else
+ goto err_no_initvals;
+ break;
+ default:
+ goto err_no_initvals;
}
+ err = do_request_fw(dev, filename, &fw->initvals);
+ if (err)
+ goto err_load;
}
-
- if (!dev->fw.initvals1) {
- if (rev >= 5) {
- u32 sbtmstatehigh;
-
- switch (dev->phy.type) {
- case B43_PHYTYPE_A:
- sbtmstatehigh =
- ssb_read32(dev->dev, SSB_TMSHIGH);
- if (sbtmstatehigh & 0x00010000)
- nr = 9;
+ if (!fw->initvals_band) {
+ switch (dev->phy.type) {
+ case B43_PHYTYPE_A:
+ if ((rev >= 5) && (rev <= 10)) {
+ if (tmshigh & B43_TMSHIGH_GPHY)
+ filename = "a0g1bsinitvals5";
else
- nr = 10;
- break;
- case B43_PHYTYPE_B:
- case B43_PHYTYPE_G:
- nr = 6;
- break;
- default:
- goto err_noinitval;
- }
- snprintf(buf, ARRAY_SIZE(buf), "bcm43xx_initval%02d%s.fw",
- nr, modparam_fwpostfix);
-
- err =
- request_firmware(&dev->fw.initvals1, buf,
- dev->dev->dev);
- if (err) {
- b43err(dev->wl, "InitVals \"%s\" not available "
- "or load failed.\n", buf);
- goto error;
- }
- if (dev->fw.initvals1->size %
- sizeof(struct b43_initval)) {
- b43err(dev->wl, "InitVals fileformat error.\n");
- goto error;
- }
+ filename = "a0g0bsinitvals5";
+ } else if (rev >= 11)
+ filename = NULL;
+ else
+ goto err_no_initvals;
+ break;
+ case B43_PHYTYPE_G:
+ if ((rev >= 5) && (rev <= 10))
+ filename = "b0g0bsinitvals5";
+ else if (rev >= 11)
+ filename = NULL;
+ else
+ goto err_no_initvals;
+ break;
+ default:
+ goto err_no_initvals;
}
+ err = do_request_fw(dev, filename, &fw->initvals_band);
+ if (err)
+ goto err_load;
}
- out:
- return err;
- error:
- b43err(dev->wl, "You must go to "
- "http://linuxwireless.org/en/users/Drivers/b43#devicefirmware "
- "and download the correct firmware (version 4)\n");
- b43_release_firmware(dev);
- goto out;
- err_noinitval:
- b43err(dev->wl, "No InitVals available\n");
- err = -ENOENT;
+ return 0;
+
+err_load:
+ b43_print_fw_helptext(dev->wl);
goto error;
+
+err_no_ucode:
+ err = -ENODEV;
+ b43err(dev->wl, "No microcode available for core rev %u\n", rev);
+ goto error;
+
+err_no_pcm:
+ err = -ENODEV;
+ b43err(dev->wl, "No PCM available for core rev %u\n", rev);
+ goto error;
+
+err_no_initvals:
+ err = -ENODEV;
+ b43err(dev->wl, "No Initial Values firmware file for PHY %u, "
+ "core rev %u\n", dev->phy.type, rev);
+ goto error;
+
+error:
+ b43_release_firmware(dev);
+ return err;
}
static int b43_upload_microcode(struct b43_wldev *dev)
@@ -1741,6 +1760,7 @@ static int b43_upload_microcode(struct b
i++;
if (i >= 50) {
b43err(dev->wl, "Microcode not responding\n");
+ b43_print_fw_helptext(dev->wl);
err = -ENODEV;
goto out;
}
@@ -1758,6 +1778,7 @@ static int b43_upload_microcode(struct b
b43err(dev->wl, "YOUR FIRMWARE IS TOO OLD. Firmware from "
"binary drivers older than version 4.x is unsupported. "
"You must upgrade your firmware files.\n");
+ b43_print_fw_helptext(dev->wl);
b43_write32(dev, B43_MMIO_MACCTL, 0);
err = -EOPNOTSUPP;
goto out;
@@ -1777,13 +1798,13 @@ static int b43_upload_microcode(struct b
static int b43_write_initvals(struct b43_wldev *dev,
const struct b43_initval *data,
- const unsigned int len)
+ size_t count)
{
u16 offset, size;
u32 value;
- unsigned int i;
+ size_t i;
- for (i = 0; i < len; i++) {
+ for (i = 0; i < count; i++) {
offset = be16_to_cpu(data[i].offset);
size = be16_to_cpu(data[i].size);
value = be32_to_cpu(data[i].value);
@@ -1802,34 +1823,32 @@ static int b43_write_initvals(struct b43
return 0;
- err_format:
- b43err(dev->wl, "InitVals (b43_initvalXX.fw) file-format error. "
- "Please fix your b43 firmware files.\n");
+err_format:
+ b43err(dev->wl, "Initial Values Firmware file-format error\n");
+ b43_print_fw_helptext(dev->wl);
+
return -EPROTO;
}
static int b43_upload_initvals(struct b43_wldev *dev)
{
+ struct b43_firmware *fw = &dev->fw;
+ struct b43_initval *ivals;
+ size_t count;
int err;
- err =
- b43_write_initvals(dev,
- (struct b43_initval *)dev->fw.initvals0->data,
- dev->fw.initvals0->size /
- sizeof(struct b43_initval));
+ ivals = (struct b43_initval *)(fw->initvals->data);
+ count = fw->initvals->size / sizeof(struct b43_initval);
+ err = b43_write_initvals(dev, ivals, count);
if (err)
goto out;
- if (dev->fw.initvals1) {
- err =
- b43_write_initvals(dev,
- (struct b43_initval *)dev->fw.initvals1->
- data,
- dev->fw.initvals1->size /
- sizeof(struct b43_initval));
- if (err)
- goto out;
+ if (fw->initvals_band) {
+ ivals = (struct b43_initval *)(fw->initvals_band->data);
+ count = fw->initvals_band->size / sizeof(struct b43_initval);
+ err = b43_write_initvals(dev, ivals, count);
}
- out:
+out:
+
return err;
}
--
^ permalink raw reply [flat|nested] 13+ messages in thread
* [patch 6/6] b43: New firmware file format
2007-08-18 23:48 [patch 0/6] New patch series for merge Michael Buesch
` (4 preceding siblings ...)
2007-08-18 23:48 ` [patch 5/6] b43: Use new firmware file naming scheme Michael Buesch
@ 2007-08-18 23:48 ` Michael Buesch
2007-08-21 15:46 ` Johannes Berg
5 siblings, 1 reply; 13+ messages in thread
From: Michael Buesch @ 2007-08-18 23:48 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, bcm43xx-dev
Signed-off-by: Michael Buesch <mb@bu3sch.de>
Index: wireless-dev-new/drivers/net/wireless/b43/b43.h
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/b43.h 2007-08-18 19:05:09.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/b43.h 2007-08-18 19:12:05.000000000 +0200
@@ -405,11 +405,32 @@ enum {
struct b43_dmaring;
struct b43_pioqueue;
-struct b43_initval {
- __be16 offset;
- __be16 size;
- __be32 value;
-} __attribute__ ((__packed__));
+/* The firmware file header */
+#define B43_FW_TYPE_UCODE 'u'
+#define B43_FW_TYPE_PCM 'p'
+#define B43_FW_TYPE_IV 'i'
+struct b43_fw_header {
+ /* File type */
+ u8 type;
+ /* File format version */
+ u8 ver;
+ u8 __padding[2];
+ /* Size of the data. For ucode and PCM this is in bytes.
+ * For IV this is number-of-ivs. */
+ __be32 size;
+} __attribute__((__packed__));
+
+/* Initial Value file format */
+#define B43_IV_OFFSET_MASK 0x7FFF
+#define B43_IV_32BIT 0x8000
+struct b43_iv {
+ __be16 offset_size;
+ union {
+ __be16 d16;
+ __be32 d32;
+ } data __attribute__((__packed__));
+} __attribute__((__packed__));
+
#define B43_PHYMODE(phytype) (1 << (phytype))
#define B43_PHYMODE_A B43_PHYMODE(B43_PHYTYPE_A)
Index: wireless-dev-new/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/main.c 2007-08-18 19:05:09.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/main.c 2007-08-18 23:13:21.000000000 +0200
@@ -39,6 +39,7 @@
#include <linux/workqueue.h>
#include <linux/skbuff.h>
#include <linux/dma-mapping.h>
+#include <asm/unaligned.h>
#include "b43.h"
#include "main.h"
@@ -1585,6 +1586,8 @@ static int do_request_fw(struct b43_wlde
{
const size_t plen = sizeof(modparam_fwpostfix) + 32;
char path[plen];
+ struct b43_fw_header *hdr;
+ u32 size;
int err;
if (!name)
@@ -1598,8 +1601,29 @@ static int do_request_fw(struct b43_wlde
b43err(dev->wl, "Firmware file \"%s\" not found "
"or load failed.\n", path);
}
+ if ((*fw)->size < sizeof(struct b43_fw_header))
+ goto err_format;
+ hdr = (struct b43_fw_header *)((*fw)->data);
+ switch (hdr->type) {
+ case B43_FW_TYPE_UCODE:
+ case B43_FW_TYPE_PCM:
+ size = be32_to_cpu(hdr->size);
+ if (size != (*fw)->size - sizeof(struct b43_fw_header))
+ goto err_format;
+ /* fallthrough */
+ case B43_FW_TYPE_IV:
+ if (hdr->ver != 1)
+ goto err_format;
+ break;
+ default:
+ goto err_format;
+ }
return err;
+
+err_format:
+ b43err(dev->wl, "Firmware file \"%s\" format error.\n", path);
+ return -EPROTO;
}
static int b43_request_firmware(struct b43_wldev *dev)
@@ -1719,6 +1743,7 @@ error:
static int b43_upload_microcode(struct b43_wldev *dev)
{
+ const size_t hdr_len = sizeof(struct b43_fw_header);
const __be32 *data;
unsigned int i, len;
u16 fwrev, fwpatch, fwdate, fwtime;
@@ -1726,24 +1751,26 @@ static int b43_upload_microcode(struct b
int err = 0;
/* Upload Microcode. */
- data = (__be32 *) (dev->fw.ucode->data);
- len = dev->fw.ucode->size / sizeof(__be32);
+ data = (__be32 *) (dev->fw.ucode->data + hdr_len);
+ len = (dev->fw.ucode->size - hdr_len) / sizeof(__be32);
b43_shm_control_word(dev, B43_SHM_UCODE | B43_SHM_AUTOINC_W, 0x0000);
for (i = 0; i < len; i++) {
b43_write32(dev, B43_MMIO_SHM_DATA, be32_to_cpu(data[i]));
udelay(10);
}
- /* Upload PCM data. */
- data = (__be32 *) (dev->fw.pcm->data);
- len = dev->fw.pcm->size / sizeof(__be32);
- b43_shm_control_word(dev, B43_SHM_HW, 0x01EA);
- b43_write32(dev, B43_MMIO_SHM_DATA, 0x00004000);
- /* No need for autoinc bit in SHM_HW */
- b43_shm_control_word(dev, B43_SHM_HW, 0x01EB);
- for (i = 0; i < len; i++) {
- b43_write32(dev, B43_MMIO_SHM_DATA, be32_to_cpu(data[i]));
- udelay(10);
+ if (dev->fw.pcm) {
+ /* Upload PCM data. */
+ data = (__be32 *) (dev->fw.pcm->data + hdr_len);
+ len = (dev->fw.pcm->size - hdr_len) / sizeof(__be32);
+ b43_shm_control_word(dev, B43_SHM_HW, 0x01EA);
+ b43_write32(dev, B43_MMIO_SHM_DATA, 0x00004000);
+ /* No need for autoinc bit in SHM_HW */
+ b43_shm_control_word(dev, B43_SHM_HW, 0x01EB);
+ for (i = 0; i < len; i++) {
+ b43_write32(dev, B43_MMIO_SHM_DATA, be32_to_cpu(data[i]));
+ udelay(10);
+ }
}
b43_write32(dev, B43_MMIO_GEN_IRQ_REASON, B43_IRQ_ALL);
@@ -1797,34 +1824,61 @@ static int b43_upload_microcode(struct b
}
static int b43_write_initvals(struct b43_wldev *dev,
- const struct b43_initval *data,
- size_t count)
+ const struct b43_iv *ivals,
+ size_t count,
+ size_t array_size)
{
- u16 offset, size;
- u32 value;
+ const struct b43_iv *iv;
+ u16 offset;
size_t i;
+ bool bit32;
+ BUILD_BUG_ON(sizeof(struct b43_iv) != 6);
+ iv = ivals;
for (i = 0; i < count; i++) {
- offset = be16_to_cpu(data[i].offset);
- size = be16_to_cpu(data[i].size);
- value = be32_to_cpu(data[i].value);
-
- if (unlikely(offset >= 0x1000))
+ if (array_size < sizeof(iv->offset_size))
goto err_format;
- if (size == 2) {
- if (unlikely(value & 0xFFFF0000))
+ array_size -= sizeof(iv->offset_size);
+ offset = be16_to_cpu(iv->offset_size);
+ bit32 = !!(offset & B43_IV_32BIT);
+ offset &= B43_IV_OFFSET_MASK;
+ if (offset >= 0x1000)
+ goto err_format;
+ if (bit32) {
+ u32 value;
+
+ if (array_size < sizeof(iv->data.d32))
goto err_format;
- b43_write16(dev, offset, (u16) value);
- } else if (size == 4) {
+ array_size -= sizeof(iv->data.d32);
+
+ value = be32_to_cpu(get_unaligned(&iv->data.d32));
b43_write32(dev, offset, value);
- } else
- goto err_format;
+
+ iv = (const struct b43_iv *)((const uint8_t *)iv +
+ sizeof(__be16) +
+ sizeof(__be32));
+ } else {
+ u16 value;
+
+ if (array_size < sizeof(iv->data.d16))
+ goto err_format;
+ array_size -= sizeof(iv->data.d16);
+
+ value = be16_to_cpu(iv->data.d16);
+ b43_write16(dev, offset, value);
+
+ iv = (const struct b43_iv *)((const uint8_t *)iv +
+ sizeof(__be16) +
+ sizeof(__be16));
+ }
}
+ if (array_size)
+ goto err_format;
return 0;
err_format:
- b43err(dev->wl, "Initial Values Firmware file-format error\n");
+ b43err(dev->wl, "Initial Values Firmware file-format error.\n");
b43_print_fw_helptext(dev->wl);
return -EPROTO;
@@ -1832,20 +1886,28 @@ err_format:
static int b43_upload_initvals(struct b43_wldev *dev)
{
+ const size_t hdr_len = sizeof(struct b43_fw_header);
+ const struct b43_fw_header *hdr;
struct b43_firmware *fw = &dev->fw;
- struct b43_initval *ivals;
+ const struct b43_iv *ivals;
size_t count;
int err;
- ivals = (struct b43_initval *)(fw->initvals->data);
- count = fw->initvals->size / sizeof(struct b43_initval);
- err = b43_write_initvals(dev, ivals, count);
+ hdr = (const struct b43_fw_header *)(fw->initvals->data);
+ ivals = (const struct b43_iv *)(fw->initvals->data + hdr_len);
+ count = be32_to_cpu(hdr->size);
+ err = b43_write_initvals(dev, ivals, count,
+ fw->initvals->size - hdr_len);
if (err)
goto out;
if (fw->initvals_band) {
- ivals = (struct b43_initval *)(fw->initvals_band->data);
- count = fw->initvals_band->size / sizeof(struct b43_initval);
- err = b43_write_initvals(dev, ivals, count);
+ hdr = (const struct b43_fw_header *)(fw->initvals_band->data);
+ ivals = (const struct b43_iv *)(fw->initvals_band->data + hdr_len);
+ count = be32_to_cpu(hdr->size);
+ err = b43_write_initvals(dev, ivals, count,
+ fw->initvals_band->size - hdr_len);
+ if (err)
+ goto out;
}
out:
--
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [patch 6/6] b43: New firmware file format
2007-08-18 23:48 ` [patch 6/6] b43: New firmware file format Michael Buesch
@ 2007-08-21 15:46 ` Johannes Berg
2007-08-21 20:13 ` John W. Linville
0 siblings, 1 reply; 13+ messages in thread
From: Johannes Berg @ 2007-08-21 15:46 UTC (permalink / raw)
To: Michael Buesch; +Cc: John Linville, linux-wireless, bcm43xx-dev
[-- Attachment #1: Type: text/plain, Size: 393 bytes --]
On Sun, 2007-08-19 at 01:48 +0200, Michael Buesch wrote:
> @@ -1598,8 +1601,29 @@ static int do_request_fw(struct b43_wlde
> b43err(dev->wl, "Firmware file \"%s\" not found "
> "or load failed.\n", path);
+ return err;
> }
> + if ((*fw)->size < sizeof(struct b43_fw_header))
> + goto err_format;
otherwise it oopses when the file can't be loaded.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 190 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [patch 6/6] b43: New firmware file format
2007-08-21 15:46 ` Johannes Berg
@ 2007-08-21 20:13 ` John W. Linville
2007-08-21 21:58 ` Michael Buesch
2007-08-23 20:49 ` Johannes Berg
0 siblings, 2 replies; 13+ messages in thread
From: John W. Linville @ 2007-08-21 20:13 UTC (permalink / raw)
To: Johannes Berg; +Cc: Michael Buesch, linux-wireless, bcm43xx-dev
On Tue, Aug 21, 2007 at 05:46:40PM +0200, Johannes Berg wrote:
> On Sun, 2007-08-19 at 01:48 +0200, Michael Buesch wrote:
>
> > @@ -1598,8 +1601,29 @@ static int do_request_fw(struct b43_wlde
> > b43err(dev->wl, "Firmware file \"%s\" not found "
> > "or load failed.\n", path);
>
> + return err;
>
> > }
> > + if ((*fw)->size < sizeof(struct b43_fw_header))
> > + goto err_format;
>
> otherwise it oopses when the file can't be loaded.
ACK...here is a patch, in case you are lazy... :-)
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index dcf7edc..d8693cf 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -1600,6 +1600,7 @@ static int do_request_fw(struct b43_wldev *dev,
if (err) {
b43err(dev->wl, "Firmware file \"%s\" not found "
"or load failed.\n", path);
+ return err;
}
if ((*fw)->size < sizeof(struct b43_fw_header))
goto err_format;
--
John W. Linville
linville@tuxdriver.com
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [patch 6/6] b43: New firmware file format
2007-08-21 20:13 ` John W. Linville
@ 2007-08-21 21:58 ` Michael Buesch
2007-08-23 20:49 ` Johannes Berg
1 sibling, 0 replies; 13+ messages in thread
From: Michael Buesch @ 2007-08-21 21:58 UTC (permalink / raw)
To: John W. Linville; +Cc: Johannes Berg, linux-wireless, bcm43xx-dev
On Tuesday 21 August 2007 22:13:36 John W. Linville wrote:
> On Tue, Aug 21, 2007 at 05:46:40PM +0200, Johannes Berg wrote:
> > On Sun, 2007-08-19 at 01:48 +0200, Michael Buesch wrote:
> >
> > > @@ -1598,8 +1601,29 @@ static int do_request_fw(struct b43_wlde
> > > b43err(dev->wl, "Firmware file \"%s\" not found "
> > > "or load failed.\n", path);
> >
> > + return err;
> >
> > > }
> > > + if ((*fw)->size < sizeof(struct b43_fw_header))
> > > + goto err_format;
> >
> > otherwise it oopses when the file can't be loaded.
>
> ACK...here is a patch, in case you are lazy... :-)
Whoops, thanks :)
> diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
> index dcf7edc..d8693cf 100644
> --- a/drivers/net/wireless/b43/main.c
> +++ b/drivers/net/wireless/b43/main.c
> @@ -1600,6 +1600,7 @@ static int do_request_fw(struct b43_wldev *dev,
> if (err) {
> b43err(dev->wl, "Firmware file \"%s\" not found "
> "or load failed.\n", path);
> + return err;
> }
> if ((*fw)->size < sizeof(struct b43_fw_header))
> goto err_format;
--
Greetings Michael.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [patch 6/6] b43: New firmware file format
2007-08-21 20:13 ` John W. Linville
2007-08-21 21:58 ` Michael Buesch
@ 2007-08-23 20:49 ` Johannes Berg
2007-08-24 10:17 ` Michael Buesch
1 sibling, 1 reply; 13+ messages in thread
From: Johannes Berg @ 2007-08-23 20:49 UTC (permalink / raw)
To: John W. Linville; +Cc: Michael Buesch, linux-wireless, bcm43xx-dev
[-- Attachment #1: Type: text/plain, Size: 254 bytes --]
On Tue, 2007-08-21 at 16:13 -0400, John W. Linville wrote:
> > otherwise it oopses when the file can't be loaded.
>
> ACK...here is a patch, in case you are lazy... :-)
Any reason you didn't push this fix this along with the patch?
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 190 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [patch 6/6] b43: New firmware file format
2007-08-23 20:49 ` Johannes Berg
@ 2007-08-24 10:17 ` Michael Buesch
2007-08-24 10:28 ` Johannes Berg
0 siblings, 1 reply; 13+ messages in thread
From: Michael Buesch @ 2007-08-24 10:17 UTC (permalink / raw)
To: Johannes Berg; +Cc: John W. Linville, linux-wireless, bcm43xx-dev
On Thursday 23 August 2007 22:49:46 Johannes Berg wrote:
> On Tue, 2007-08-21 at 16:13 -0400, John W. Linville wrote:
>
> > > otherwise it oopses when the file can't be loaded.
> >
> > ACK...here is a patch, in case you are lazy... :-)
>
> Any reason you didn't push this fix this along with the patch?
Hm? This fix is on its way into the tree.
--
Greetings Michael.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [patch 6/6] b43: New firmware file format
2007-08-24 10:17 ` Michael Buesch
@ 2007-08-24 10:28 ` Johannes Berg
0 siblings, 0 replies; 13+ messages in thread
From: Johannes Berg @ 2007-08-24 10:28 UTC (permalink / raw)
To: Michael Buesch; +Cc: John W. Linville, linux-wireless, bcm43xx-dev
[-- Attachment #1: Type: text/plain, Size: 470 bytes --]
On Fri, 2007-08-24 at 12:17 +0200, Michael Buesch wrote:
> On Thursday 23 August 2007 22:49:46 Johannes Berg wrote:
> > On Tue, 2007-08-21 at 16:13 -0400, John W. Linville wrote:
> >
> > > > otherwise it oopses when the file can't be loaded.
> > >
> > > ACK...here is a patch, in case you are lazy... :-)
> >
> > Any reason you didn't push this fix this along with the patch?
>
> Hm? This fix is on its way into the tree.
Yeah, never mind.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 190 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2007-08-24 10:27 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-18 23:48 [patch 0/6] New patch series for merge Michael Buesch
2007-08-18 23:48 ` [patch 1/6] b43: Fix kconfig, SSB autoselect must depend on b43 Michael Buesch
2007-08-18 23:48 ` [patch 2/6] ssb: Fix uevent MODALIAS string Michael Buesch
2007-08-18 23:48 ` [patch 3/6] b43: Rename print functions to b43foobar Michael Buesch
2007-08-18 23:48 ` [patch 4/6] b43: Update Kconfig help text Michael Buesch
2007-08-18 23:48 ` [patch 5/6] b43: Use new firmware file naming scheme Michael Buesch
2007-08-18 23:48 ` [patch 6/6] b43: New firmware file format Michael Buesch
2007-08-21 15:46 ` Johannes Berg
2007-08-21 20:13 ` John W. Linville
2007-08-21 21:58 ` Michael Buesch
2007-08-23 20:49 ` Johannes Berg
2007-08-24 10:17 ` Michael Buesch
2007-08-24 10:28 ` Johannes Berg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).