b43: Implement sw scan callbacks
PATCH 1/1 b43: Implement sw scan callbacks
This implements the new sw scan callbacks in b43.
They are currently used to turn CFP update in the microcode off while scanning.
Signed-off-by Michael Buesch <[email protected]>
---
John, please put on top of the mac80211 sw scan notifier patch.
drivers/net/wireless/b43/main.c +31 -0
@@ -4190,12 +4190,13 @@ static int b43_wireless_core_init(struct }if (sprom->boardflags_lo &B43_BFL_XTAL_NOSLOW ) hf |=B43_HF_DSCRQ ;/* Disable slowclock requests from ucode. */ if ((bus->bustype ==SSB_BUSTYPE_PCI ) && (bus->pcicore.dev->id.revision <=10 )) hf |=B43_HF_PCISCW ;/* PCI slow clock workaround. */ + hf &= ~B43_HF_SKCFPUP ;b43_hf_write (dev, hf);b43_set_retry_limits (dev,B43_DEFAULT_SHORT_RETRY_LIMIT ,B43_DEFAULT_LONG_RETRY_LIMIT );b43_shm_write16 (dev,B43_SHM_SHARED ,B43_SHM_SH_SFFBLIM ,3 );b43_shm_write16 (dev,B43_SHM_SHARED ,B43_SHM_SH_LFFBLIM ,2 );
@@ -4412,12 +4413,40 @@ static void b43_op_sta_notify(struct iee {struct b43_wl *wl =hw_to_b43_wl (hw);B43_WARN_ON (!vif || wl->vif != vif); } +static void b43_op_sw_scan_start_notifier (struct ieee80211_hw *hw) +{ +struct b43_wl *wl =hw_to_b43_wl (hw); +struct b43_wldev *dev; + +mutex_lock (&wl->mutex); + dev = wl->current_dev; +if (dev && (b43_status (dev) >=B43_STAT_INITIALIZED )) { +/* Disable CFP update during scan on other channels. */ +b43_hf_write (dev,b43_hf_read (dev) |B43_HF_SKCFPUP ); + } +mutex_unlock (&wl->mutex); +} + +static void b43_op_sw_scan_complete_notifier (struct ieee80211_hw *hw) +{ +struct b43_wl *wl =hw_to_b43_wl (hw); +struct b43_wldev *dev; + +mutex_lock (&wl->mutex); + dev = wl->current_dev; +if (dev && (b43_status (dev) >=B43_STAT_INITIALIZED )) { +/* Re-enable CFP update. */ +b43_hf_write (dev,b43_hf_read (dev) & ~B43_HF_SKCFPUP ); + } +mutex_unlock (&wl->mutex); +} +static const struct ieee80211_ops b43_hw_ops = { .tx = b43_op_tx, .conf_tx = b43_op_conf_tx, .add_interface = b43_op_add_interface, .remove_interface = b43_op_remove_interface, .config = b43_op_config,
@@ -4430,12 +4459,14 @@ static const struct ieee80211_ops b43_hw .get_tsf = b43_op_get_tsf, .set_tsf = b43_op_set_tsf, .start = b43_op_start, .stop = b43_op_stop, .set_tim = b43_op_beacon_set_tim, .sta_notify = b43_op_sta_notify, + .sw_scan_start = b43_op_sw_scan_start_notifier, + .sw_scan_complete = b43_op_sw_scan_complete_notifier, };/* Hard-reset the chip. Do not call this directly. * Use b43_controller_restart() */ static void b43_chip_reset (struct work_struct *work)
Signature · 1 line
Greetings, Michael.