Commit 60717f7e authored by David S. Miller's avatar David S. Miller

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6

parents fbabbed8 2d8d4fdf
...@@ -2368,6 +2368,7 @@ config GELIC_NET ...@@ -2368,6 +2368,7 @@ config GELIC_NET
config GELIC_WIRELESS config GELIC_WIRELESS
bool "PS3 Wireless support" bool "PS3 Wireless support"
depends on GELIC_NET depends on GELIC_NET
select WIRELESS_EXT
help help
This option adds the support for the wireless feature of PS3. This option adds the support for the wireless feature of PS3.
If you have the wireless-less model of PS3 or have no plan to If you have the wireless-less model of PS3 or have no plan to
......
...@@ -2690,6 +2690,7 @@ int gelic_wl_driver_probe(struct gelic_card *card) ...@@ -2690,6 +2690,7 @@ int gelic_wl_driver_probe(struct gelic_card *card)
return -ENOMEM; return -ENOMEM;
/* setup net_device structure */ /* setup net_device structure */
SET_NETDEV_DEV(netdev, &card->dev->core);
gelic_wl_setup_netdev_ops(netdev); gelic_wl_setup_netdev_ops(netdev);
/* setup some of net_device and register it */ /* setup some of net_device and register it */
......
...@@ -32,6 +32,7 @@ config B43_PCI_AUTOSELECT ...@@ -32,6 +32,7 @@ config B43_PCI_AUTOSELECT
bool bool
depends on B43 && SSB_PCIHOST_POSSIBLE depends on B43 && SSB_PCIHOST_POSSIBLE
select SSB_PCIHOST select SSB_PCIHOST
select SSB_B43_PCI_BRIDGE
default y default y
# Auto-select SSB PCICORE driver, if possible # Auto-select SSB PCICORE driver, if possible
......
...@@ -25,6 +25,7 @@ config B43LEGACY_PCI_AUTOSELECT ...@@ -25,6 +25,7 @@ config B43LEGACY_PCI_AUTOSELECT
bool bool
depends on B43LEGACY && SSB_PCIHOST_POSSIBLE depends on B43LEGACY && SSB_PCIHOST_POSSIBLE
select SSB_PCIHOST select SSB_PCIHOST
select SSB_B43_PCI_BRIDGE
default y default y
# Auto-select SSB PCICORE driver, if possible # Auto-select SSB PCICORE driver, if possible
......
config BCM43XX config BCM43XX
tristate "Broadcom BCM43xx wireless support (DEPRECATED)" tristate "Broadcom BCM43xx wireless support (DEPRECATED)"
depends on PCI && IEEE80211 && IEEE80211_SOFTMAC && WLAN_80211 && EXPERIMENTAL depends on PCI && IEEE80211 && IEEE80211_SOFTMAC && WLAN_80211 && (!SSB_B43_PCI_BRIDGE || SSB != y) && EXPERIMENTAL
select WIRELESS_EXT select WIRELESS_EXT
select FW_LOADER select FW_LOADER
select HW_RANDOM select HW_RANDOM
......
...@@ -1040,7 +1040,6 @@ int lbs_mesh_access(struct lbs_private *priv, uint16_t cmd_action, ...@@ -1040,7 +1040,6 @@ int lbs_mesh_access(struct lbs_private *priv, uint16_t cmd_action,
lbs_deb_leave(LBS_DEB_CMD); lbs_deb_leave(LBS_DEB_CMD);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(lbs_mesh_access);
int lbs_mesh_config(struct lbs_private *priv, uint16_t enable, uint16_t chan) int lbs_mesh_config(struct lbs_private *priv, uint16_t enable, uint16_t chan)
{ {
...@@ -1576,7 +1575,6 @@ int lbs_prepare_and_send_command(struct lbs_private *priv, ...@@ -1576,7 +1575,6 @@ int lbs_prepare_and_send_command(struct lbs_private *priv,
lbs_deb_leave_args(LBS_DEB_HOST, "ret %d", ret); lbs_deb_leave_args(LBS_DEB_HOST, "ret %d", ret);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(lbs_prepare_and_send_command);
/** /**
* @brief This function allocates the command buffer and link * @brief This function allocates the command buffer and link
......
...@@ -69,7 +69,6 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev); ...@@ -69,7 +69,6 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev);
int lbs_remove_card(struct lbs_private *priv); int lbs_remove_card(struct lbs_private *priv);
int lbs_start_card(struct lbs_private *priv); int lbs_start_card(struct lbs_private *priv);
int lbs_stop_card(struct lbs_private *priv); int lbs_stop_card(struct lbs_private *priv);
int lbs_reset_device(struct lbs_private *priv);
void lbs_host_to_card_done(struct lbs_private *priv); void lbs_host_to_card_done(struct lbs_private *priv);
int lbs_update_channel(struct lbs_private *priv); int lbs_update_channel(struct lbs_private *priv);
......
...@@ -1351,8 +1351,6 @@ static int lbs_add_mesh(struct lbs_private *priv) ...@@ -1351,8 +1351,6 @@ static int lbs_add_mesh(struct lbs_private *priv)
lbs_deb_leave_args(LBS_DEB_MESH, "ret %d", ret); lbs_deb_leave_args(LBS_DEB_MESH, "ret %d", ret);
return ret; return ret;
} }
EXPORT_SYMBOL_GPL(lbs_add_mesh);
static void lbs_remove_mesh(struct lbs_private *priv) static void lbs_remove_mesh(struct lbs_private *priv)
{ {
...@@ -1372,7 +1370,6 @@ static void lbs_remove_mesh(struct lbs_private *priv) ...@@ -1372,7 +1370,6 @@ static void lbs_remove_mesh(struct lbs_private *priv)
free_netdev(mesh_dev); free_netdev(mesh_dev);
lbs_deb_leave(LBS_DEB_MESH); lbs_deb_leave(LBS_DEB_MESH);
} }
EXPORT_SYMBOL_GPL(lbs_remove_mesh);
/** /**
* @brief This function finds the CFP in * @brief This function finds the CFP in
...@@ -1458,20 +1455,6 @@ void lbs_interrupt(struct lbs_private *priv) ...@@ -1458,20 +1455,6 @@ void lbs_interrupt(struct lbs_private *priv)
} }
EXPORT_SYMBOL_GPL(lbs_interrupt); EXPORT_SYMBOL_GPL(lbs_interrupt);
int lbs_reset_device(struct lbs_private *priv)
{
int ret;
lbs_deb_enter(LBS_DEB_MAIN);
ret = lbs_prepare_and_send_command(priv, CMD_802_11_RESET,
CMD_ACT_HALT, 0, 0, NULL);
msleep_interruptible(10);
lbs_deb_leave_args(LBS_DEB_MAIN, "ret %d", ret);
return ret;
}
EXPORT_SYMBOL_GPL(lbs_reset_device);
static int __init lbs_init_module(void) static int __init lbs_init_module(void)
{ {
lbs_deb_enter(LBS_DEB_MAIN); lbs_deb_enter(LBS_DEB_MAIN);
......
...@@ -228,9 +228,9 @@ struct NDIS_WLAN_BSSID_EX { ...@@ -228,9 +228,9 @@ struct NDIS_WLAN_BSSID_EX {
struct NDIS_802_11_SSID Ssid; struct NDIS_802_11_SSID Ssid;
__le32 Privacy; __le32 Privacy;
__le32 Rssi; __le32 Rssi;
enum NDIS_802_11_NETWORK_TYPE NetworkTypeInUse; __le32 NetworkTypeInUse;
struct NDIS_802_11_CONFIGURATION Configuration; struct NDIS_802_11_CONFIGURATION Configuration;
enum NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode; __le32 InfrastructureMode;
u8 SupportedRates[NDIS_802_11_LENGTH_RATES_EX]; u8 SupportedRates[NDIS_802_11_LENGTH_RATES_EX];
__le32 IELength; __le32 IELength;
u8 IEs[0]; u8 IEs[0];
...@@ -279,11 +279,11 @@ struct RNDIS_CONFIG_PARAMETER_INFOBUFFER { ...@@ -279,11 +279,11 @@ struct RNDIS_CONFIG_PARAMETER_INFOBUFFER {
} __attribute__((packed)); } __attribute__((packed));
/* these have to match what is in wpa_supplicant */ /* these have to match what is in wpa_supplicant */
enum { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP } wpa_alg; enum wpa_alg { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP };
enum { CIPHER_NONE, CIPHER_WEP40, CIPHER_TKIP, CIPHER_CCMP, CIPHER_WEP104 } enum wpa_cipher { CIPHER_NONE, CIPHER_WEP40, CIPHER_TKIP, CIPHER_CCMP,
wpa_cipher; CIPHER_WEP104 };
enum { KEY_MGMT_802_1X, KEY_MGMT_PSK, KEY_MGMT_NONE, KEY_MGMT_802_1X_NO_WPA, enum wpa_key_mgmt { KEY_MGMT_802_1X, KEY_MGMT_PSK, KEY_MGMT_NONE,
KEY_MGMT_WPA_NONE } wpa_key_mgmt; KEY_MGMT_802_1X_NO_WPA, KEY_MGMT_WPA_NONE };
/* /*
* private data * private data
......
...@@ -960,8 +960,12 @@ static int rt2400pci_set_device_state(struct rt2x00_dev *rt2x00dev, ...@@ -960,8 +960,12 @@ static int rt2400pci_set_device_state(struct rt2x00_dev *rt2x00dev,
rt2400pci_disable_radio(rt2x00dev); rt2400pci_disable_radio(rt2x00dev);
break; break;
case STATE_RADIO_RX_ON: case STATE_RADIO_RX_ON:
case STATE_RADIO_RX_ON_LINK:
rt2400pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
break;
case STATE_RADIO_RX_OFF: case STATE_RADIO_RX_OFF:
rt2400pci_toggle_rx(rt2x00dev, state); case STATE_RADIO_RX_OFF_LINK:
rt2400pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
break; break;
case STATE_DEEP_SLEEP: case STATE_DEEP_SLEEP:
case STATE_SLEEP: case STATE_SLEEP:
......
...@@ -1112,8 +1112,12 @@ static int rt2500pci_set_device_state(struct rt2x00_dev *rt2x00dev, ...@@ -1112,8 +1112,12 @@ static int rt2500pci_set_device_state(struct rt2x00_dev *rt2x00dev,
rt2500pci_disable_radio(rt2x00dev); rt2500pci_disable_radio(rt2x00dev);
break; break;
case STATE_RADIO_RX_ON: case STATE_RADIO_RX_ON:
case STATE_RADIO_RX_ON_LINK:
rt2500pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
break;
case STATE_RADIO_RX_OFF: case STATE_RADIO_RX_OFF:
rt2500pci_toggle_rx(rt2x00dev, state); case STATE_RADIO_RX_OFF_LINK:
rt2500pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
break; break;
case STATE_DEEP_SLEEP: case STATE_DEEP_SLEEP:
case STATE_SLEEP: case STATE_SLEEP:
......
...@@ -1001,8 +1001,12 @@ static int rt2500usb_set_device_state(struct rt2x00_dev *rt2x00dev, ...@@ -1001,8 +1001,12 @@ static int rt2500usb_set_device_state(struct rt2x00_dev *rt2x00dev,
rt2500usb_disable_radio(rt2x00dev); rt2500usb_disable_radio(rt2x00dev);
break; break;
case STATE_RADIO_RX_ON: case STATE_RADIO_RX_ON:
case STATE_RADIO_RX_ON_LINK:
rt2500usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
break;
case STATE_RADIO_RX_OFF: case STATE_RADIO_RX_OFF:
rt2500usb_toggle_rx(rt2x00dev, state); case STATE_RADIO_RX_OFF_LINK:
rt2500usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
break; break;
case STATE_DEEP_SLEEP: case STATE_DEEP_SLEEP:
case STATE_SLEEP: case STATE_SLEEP:
......
...@@ -97,12 +97,16 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev, ...@@ -97,12 +97,16 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
libconf.ant.rx = rx; libconf.ant.rx = rx;
libconf.ant.tx = tx; libconf.ant.tx = tx;
if (rx == rt2x00dev->link.ant.active.rx &&
tx == rt2x00dev->link.ant.active.tx)
return;
/* /*
* Antenna setup changes require the RX to be disabled, * Antenna setup changes require the RX to be disabled,
* else the changes will be ignored by the device. * else the changes will be ignored by the device.
*/ */
if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags)) if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF); rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF_LINK);
/* /*
* Write new antenna setup to device and reset the link tuner. * Write new antenna setup to device and reset the link tuner.
...@@ -116,7 +120,7 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev, ...@@ -116,7 +120,7 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev,
rt2x00dev->link.ant.active.tx = libconf.ant.tx; rt2x00dev->link.ant.active.tx = libconf.ant.tx;
if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags)) if (test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON); rt2x00lib_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON_LINK);
} }
void rt2x00lib_config(struct rt2x00_dev *rt2x00dev, void rt2x00lib_config(struct rt2x00_dev *rt2x00dev,
......
...@@ -61,11 +61,33 @@ EXPORT_SYMBOL_GPL(rt2x00lib_get_ring); ...@@ -61,11 +61,33 @@ EXPORT_SYMBOL_GPL(rt2x00lib_get_ring);
/* /*
* Link tuning handlers * Link tuning handlers
*/ */
static void rt2x00lib_start_link_tuner(struct rt2x00_dev *rt2x00dev) void rt2x00lib_reset_link_tuner(struct rt2x00_dev *rt2x00dev)
{ {
if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
return;
/*
* Reset link information.
* Both the currently active vgc level as well as
* the link tuner counter should be reset. Resetting
* the counter is important for devices where the
* device should only perform link tuning during the
* first minute after being enabled.
*/
rt2x00dev->link.count = 0; rt2x00dev->link.count = 0;
rt2x00dev->link.vgc_level = 0; rt2x00dev->link.vgc_level = 0;
/*
* Reset the link tuner.
*/
rt2x00dev->ops->lib->reset_tuner(rt2x00dev);
}
static void rt2x00lib_start_link_tuner(struct rt2x00_dev *rt2x00dev)
{
/*
* Clear all (possibly) pre-existing quality statistics.
*/
memset(&rt2x00dev->link.qual, 0, sizeof(rt2x00dev->link.qual)); memset(&rt2x00dev->link.qual, 0, sizeof(rt2x00dev->link.qual));
/* /*
...@@ -79,10 +101,7 @@ static void rt2x00lib_start_link_tuner(struct rt2x00_dev *rt2x00dev) ...@@ -79,10 +101,7 @@ static void rt2x00lib_start_link_tuner(struct rt2x00_dev *rt2x00dev)
rt2x00dev->link.qual.rx_percentage = 50; rt2x00dev->link.qual.rx_percentage = 50;
rt2x00dev->link.qual.tx_percentage = 50; rt2x00dev->link.qual.tx_percentage = 50;
/* rt2x00lib_reset_link_tuner(rt2x00dev);
* Reset the link tuner.
*/
rt2x00dev->ops->lib->reset_tuner(rt2x00dev);
queue_delayed_work(rt2x00dev->hw->workqueue, queue_delayed_work(rt2x00dev->hw->workqueue,
&rt2x00dev->link.work, LINK_TUNE_INTERVAL); &rt2x00dev->link.work, LINK_TUNE_INTERVAL);
...@@ -93,15 +112,6 @@ static void rt2x00lib_stop_link_tuner(struct rt2x00_dev *rt2x00dev) ...@@ -93,15 +112,6 @@ static void rt2x00lib_stop_link_tuner(struct rt2x00_dev *rt2x00dev)
cancel_delayed_work_sync(&rt2x00dev->link.work); cancel_delayed_work_sync(&rt2x00dev->link.work);
} }
void rt2x00lib_reset_link_tuner(struct rt2x00_dev *rt2x00dev)
{
if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
return;
rt2x00lib_stop_link_tuner(rt2x00dev);
rt2x00lib_start_link_tuner(rt2x00dev);
}
/* /*
* Ring initialization * Ring initialization
*/ */
...@@ -260,19 +270,11 @@ static void rt2x00lib_evaluate_antenna_sample(struct rt2x00_dev *rt2x00dev) ...@@ -260,19 +270,11 @@ static void rt2x00lib_evaluate_antenna_sample(struct rt2x00_dev *rt2x00dev)
if (sample_a == sample_b) if (sample_a == sample_b)
return; return;
if (rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY) { if (rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY)
if (sample_a > sample_b && rx == ANTENNA_B) rx = (sample_a > sample_b) ? ANTENNA_A : ANTENNA_B;
rx = ANTENNA_A;
else if (rx == ANTENNA_A)
rx = ANTENNA_B;
}
if (rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY) { if (rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY)
if (sample_a > sample_b && tx == ANTENNA_B) tx = (sample_a > sample_b) ? ANTENNA_A : ANTENNA_B;
tx = ANTENNA_A;
else if (tx == ANTENNA_A)
tx = ANTENNA_B;
}
rt2x00lib_config_antenna(rt2x00dev, rx, tx); rt2x00lib_config_antenna(rt2x00dev, rx, tx);
} }
...@@ -293,7 +295,7 @@ static void rt2x00lib_evaluate_antenna_eval(struct rt2x00_dev *rt2x00dev) ...@@ -293,7 +295,7 @@ static void rt2x00lib_evaluate_antenna_eval(struct rt2x00_dev *rt2x00dev)
* sample the rssi from the other antenna to make a valid * sample the rssi from the other antenna to make a valid
* comparison between the 2 antennas. * comparison between the 2 antennas.
*/ */
if ((rssi_curr - rssi_old) > -5 || (rssi_curr - rssi_old) < 5) if (abs(rssi_curr - rssi_old) < 5)
return; return;
rt2x00dev->link.ant.flags |= ANTENNA_MODE_SAMPLE; rt2x00dev->link.ant.flags |= ANTENNA_MODE_SAMPLE;
...@@ -319,15 +321,15 @@ static void rt2x00lib_evaluate_antenna(struct rt2x00_dev *rt2x00dev) ...@@ -319,15 +321,15 @@ static void rt2x00lib_evaluate_antenna(struct rt2x00_dev *rt2x00dev)
rt2x00dev->link.ant.flags &= ~ANTENNA_TX_DIVERSITY; rt2x00dev->link.ant.flags &= ~ANTENNA_TX_DIVERSITY;
if (rt2x00dev->hw->conf.antenna_sel_rx == 0 && if (rt2x00dev->hw->conf.antenna_sel_rx == 0 &&
rt2x00dev->default_ant.rx != ANTENNA_SW_DIVERSITY) rt2x00dev->default_ant.rx == ANTENNA_SW_DIVERSITY)
rt2x00dev->link.ant.flags |= ANTENNA_RX_DIVERSITY; rt2x00dev->link.ant.flags |= ANTENNA_RX_DIVERSITY;
if (rt2x00dev->hw->conf.antenna_sel_tx == 0 && if (rt2x00dev->hw->conf.antenna_sel_tx == 0 &&
rt2x00dev->default_ant.tx != ANTENNA_SW_DIVERSITY) rt2x00dev->default_ant.tx == ANTENNA_SW_DIVERSITY)
rt2x00dev->link.ant.flags |= ANTENNA_TX_DIVERSITY; rt2x00dev->link.ant.flags |= ANTENNA_TX_DIVERSITY;
if (!(rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY) && if (!(rt2x00dev->link.ant.flags & ANTENNA_RX_DIVERSITY) &&
!(rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY)) { !(rt2x00dev->link.ant.flags & ANTENNA_TX_DIVERSITY)) {
rt2x00dev->link.ant.flags &= ~ANTENNA_MODE_SAMPLE; rt2x00dev->link.ant.flags = 0;
return; return;
} }
...@@ -440,17 +442,18 @@ static void rt2x00lib_link_tuner(struct work_struct *work) ...@@ -440,17 +442,18 @@ static void rt2x00lib_link_tuner(struct work_struct *work)
if (!test_bit(CONFIG_DISABLE_LINK_TUNING, &rt2x00dev->flags)) if (!test_bit(CONFIG_DISABLE_LINK_TUNING, &rt2x00dev->flags))
rt2x00dev->ops->lib->link_tuner(rt2x00dev); rt2x00dev->ops->lib->link_tuner(rt2x00dev);
/*
* Evaluate antenna setup.
*/
rt2x00lib_evaluate_antenna(rt2x00dev);
/* /*
* Precalculate a portion of the link signal which is * Precalculate a portion of the link signal which is
* in based on the tx/rx success/failure counters. * in based on the tx/rx success/failure counters.
*/ */
rt2x00lib_precalculate_link_signal(&rt2x00dev->link.qual); rt2x00lib_precalculate_link_signal(&rt2x00dev->link.qual);
/*
* Evaluate antenna setup, make this the last step since this could
* possibly reset some statistics.
*/
rt2x00lib_evaluate_antenna(rt2x00dev);
/* /*
* Increase tuner counter, and reschedule the next link tuner run. * Increase tuner counter, and reschedule the next link tuner run.
*/ */
......
...@@ -85,6 +85,8 @@ enum dev_state { ...@@ -85,6 +85,8 @@ enum dev_state {
STATE_RADIO_OFF, STATE_RADIO_OFF,
STATE_RADIO_RX_ON, STATE_RADIO_RX_ON,
STATE_RADIO_RX_OFF, STATE_RADIO_RX_OFF,
STATE_RADIO_RX_ON_LINK,
STATE_RADIO_RX_OFF_LINK,
STATE_RADIO_IRQ_ON, STATE_RADIO_IRQ_ON,
STATE_RADIO_IRQ_OFF, STATE_RADIO_IRQ_OFF,
}; };
......
...@@ -1482,8 +1482,12 @@ static int rt61pci_set_device_state(struct rt2x00_dev *rt2x00dev, ...@@ -1482,8 +1482,12 @@ static int rt61pci_set_device_state(struct rt2x00_dev *rt2x00dev,
rt61pci_disable_radio(rt2x00dev); rt61pci_disable_radio(rt2x00dev);
break; break;
case STATE_RADIO_RX_ON: case STATE_RADIO_RX_ON:
case STATE_RADIO_RX_ON_LINK:
rt61pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
break;
case STATE_RADIO_RX_OFF: case STATE_RADIO_RX_OFF:
rt61pci_toggle_rx(rt2x00dev, state); case STATE_RADIO_RX_OFF_LINK:
rt61pci_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
break; break;
case STATE_DEEP_SLEEP: case STATE_DEEP_SLEEP:
case STATE_SLEEP: case STATE_SLEEP:
......
...@@ -1208,8 +1208,12 @@ static int rt73usb_set_device_state(struct rt2x00_dev *rt2x00dev, ...@@ -1208,8 +1208,12 @@ static int rt73usb_set_device_state(struct rt2x00_dev *rt2x00dev,
rt73usb_disable_radio(rt2x00dev); rt73usb_disable_radio(rt2x00dev);
break; break;
case STATE_RADIO_RX_ON: case STATE_RADIO_RX_ON:
case STATE_RADIO_RX_ON_LINK:
rt73usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_ON);
break;
case STATE_RADIO_RX_OFF: case STATE_RADIO_RX_OFF:
rt73usb_toggle_rx(rt2x00dev, state); case STATE_RADIO_RX_OFF_LINK:
rt73usb_toggle_rx(rt2x00dev, STATE_RADIO_RX_OFF);
break; break;
case STATE_DEEP_SLEEP: case STATE_DEEP_SLEEP:
case STATE_SLEEP: case STATE_SLEEP:
......
...@@ -35,6 +35,11 @@ config SSB_PCIHOST ...@@ -35,6 +35,11 @@ config SSB_PCIHOST
If unsure, say Y If unsure, say Y
config SSB_B43_PCI_BRIDGE
bool
depends on SSB_PCIHOST
default n
config SSB_PCMCIAHOST_POSSIBLE config SSB_PCMCIAHOST_POSSIBLE
bool bool
depends on SSB && (PCMCIA = y || PCMCIA = SSB) && EXPERIMENTAL depends on SSB && (PCMCIA = y || PCMCIA = SSB) && EXPERIMENTAL
......
...@@ -14,6 +14,6 @@ ssb-$(CONFIG_SSB_DRIVER_PCICORE) += driver_pcicore.o ...@@ -14,6 +14,6 @@ ssb-$(CONFIG_SSB_DRIVER_PCICORE) += driver_pcicore.o
# b43 pci-ssb-bridge driver # b43 pci-ssb-bridge driver
# Not strictly a part of SSB, but kept here for convenience # Not strictly a part of SSB, but kept here for convenience
ssb-$(CONFIG_SSB_PCIHOST) += b43_pci_bridge.o ssb-$(CONFIG_SSB_B43_PCI_BRIDGE) += b43_pci_bridge.o
obj-$(CONFIG_SSB) += ssb.o obj-$(CONFIG_SSB) += ssb.o
...@@ -393,7 +393,7 @@ static int pcicore_is_in_hostmode(struct ssb_pcicore *pc) ...@@ -393,7 +393,7 @@ static int pcicore_is_in_hostmode(struct ssb_pcicore *pc)
chipid_top != 0x5300) chipid_top != 0x5300)
return 0; return 0;
if (bus->sprom.r1.boardflags_lo & SSB_PCICORE_BFL_NOPCI) if (bus->sprom.boardflags_lo & SSB_PCICORE_BFL_NOPCI)
return 0; return 0;
/* The 200-pin BCM4712 package does not bond out PCI. Even when /* The 200-pin BCM4712 package does not bond out PCI. Even when
......
...@@ -120,10 +120,10 @@ extern int ssb_devices_thaw(struct ssb_bus *bus); ...@@ -120,10 +120,10 @@ extern int ssb_devices_thaw(struct ssb_bus *bus);
extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev); extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);
/* b43_pci_bridge.c */ /* b43_pci_bridge.c */
#ifdef CONFIG_SSB_PCIHOST #ifdef CONFIG_SSB_B43_PCI_BRIDGE
extern int __init b43_pci_ssb_bridge_init(void); extern int __init b43_pci_ssb_bridge_init(void);
extern void __exit b43_pci_ssb_bridge_exit(void); extern void __exit b43_pci_ssb_bridge_exit(void);
#else /* CONFIG_SSB_PCIHOST */ #else /* CONFIG_SSB_B43_PCI_BRIDGR */
static inline int b43_pci_ssb_bridge_init(void) static inline int b43_pci_ssb_bridge_init(void)
{ {
return 0; return 0;
......
...@@ -1116,9 +1116,10 @@ static void ieee80211_sta_process_addba_request(struct net_device *dev, ...@@ -1116,9 +1116,10 @@ static void ieee80211_sta_process_addba_request(struct net_device *dev,
/* prepare reordering buffer */ /* prepare reordering buffer */
tid_agg_rx->reorder_buf = tid_agg_rx->reorder_buf =
kmalloc(buf_size * sizeof(struct sk_buf *), GFP_ATOMIC); kmalloc(buf_size * sizeof(struct sk_buf *), GFP_ATOMIC);
if ((!tid_agg_rx->reorder_buf) && net_ratelimit()) { if (!tid_agg_rx->reorder_buf) {
printk(KERN_ERR "can not allocate reordering buffer " if (net_ratelimit())
"to tid %d\n", tid); printk(KERN_ERR "can not allocate reordering buffer "
"to tid %d\n", tid);
goto end; goto end;
} }
memset(tid_agg_rx->reorder_buf, 0, memset(tid_agg_rx->reorder_buf, 0,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment