mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-19 10:29:50 +07:00
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
commit
60717f7e76
@ -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)
|
|||||||
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
|
|||||||
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
|
|||||||
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
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
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,
|
|||||||
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,
|
|||||||
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);
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
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 {
|
|||||||
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 {
|
|||||||
} __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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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);
|
|||||||
/*
|
/*
|
||||||
* 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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
* 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)
|
|||||||
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)
|
|||||||
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 {
|
|||||||
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,
|
|||||||
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,
|
|||||||
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
|
|||||||
|
|
||||||
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
|
|||||||
|
|
||||||
# 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)
|
|||||||
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);
|
|||||||
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,
|
|||||||
/* 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,
|
||||||
|
Loading…
Reference in New Issue
Block a user