Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
Коммит
bb1231052e
|
@ -268,10 +268,6 @@
|
||||||
!Finclude/net/mac80211.h ieee80211_ops
|
!Finclude/net/mac80211.h ieee80211_ops
|
||||||
!Finclude/net/mac80211.h ieee80211_alloc_hw
|
!Finclude/net/mac80211.h ieee80211_alloc_hw
|
||||||
!Finclude/net/mac80211.h ieee80211_register_hw
|
!Finclude/net/mac80211.h ieee80211_register_hw
|
||||||
!Finclude/net/mac80211.h ieee80211_get_tx_led_name
|
|
||||||
!Finclude/net/mac80211.h ieee80211_get_rx_led_name
|
|
||||||
!Finclude/net/mac80211.h ieee80211_get_assoc_led_name
|
|
||||||
!Finclude/net/mac80211.h ieee80211_get_radio_led_name
|
|
||||||
!Finclude/net/mac80211.h ieee80211_unregister_hw
|
!Finclude/net/mac80211.h ieee80211_unregister_hw
|
||||||
!Finclude/net/mac80211.h ieee80211_free_hw
|
!Finclude/net/mac80211.h ieee80211_free_hw
|
||||||
</chapter>
|
</chapter>
|
||||||
|
@ -382,6 +378,23 @@
|
||||||
</para>
|
</para>
|
||||||
</partintro>
|
</partintro>
|
||||||
|
|
||||||
|
<chapter id="led-support">
|
||||||
|
<title>LED support</title>
|
||||||
|
<para>
|
||||||
|
Mac80211 supports various ways of blinking LEDs. Wherever possible,
|
||||||
|
device LEDs should be exposed as LED class devices and hooked up to
|
||||||
|
the appropriate trigger, which will then be triggered appropriately
|
||||||
|
by mac80211.
|
||||||
|
</para>
|
||||||
|
!Finclude/net/mac80211.h ieee80211_get_tx_led_name
|
||||||
|
!Finclude/net/mac80211.h ieee80211_get_rx_led_name
|
||||||
|
!Finclude/net/mac80211.h ieee80211_get_assoc_led_name
|
||||||
|
!Finclude/net/mac80211.h ieee80211_get_radio_led_name
|
||||||
|
!Finclude/net/mac80211.h ieee80211_tpt_blink
|
||||||
|
!Finclude/net/mac80211.h ieee80211_tpt_led_trigger_flags
|
||||||
|
!Finclude/net/mac80211.h ieee80211_create_tpt_led_trigger
|
||||||
|
</chapter>
|
||||||
|
|
||||||
<chapter id="hardware-crypto-offload">
|
<chapter id="hardware-crypto-offload">
|
||||||
<title>Hardware crypto acceleration</title>
|
<title>Hardware crypto acceleration</title>
|
||||||
!Pinclude/net/mac80211.h Hardware crypto acceleration
|
!Pinclude/net/mac80211.h Hardware crypto acceleration
|
||||||
|
|
|
@ -954,6 +954,9 @@ static void ar9002_hw_init_cal_settings(struct ath_hw *ah)
|
||||||
&adc_dc_cal_multi_sample;
|
&adc_dc_cal_multi_sample;
|
||||||
}
|
}
|
||||||
ah->supp_cals = ADC_GAIN_CAL | ADC_DC_CAL | IQ_MISMATCH_CAL;
|
ah->supp_cals = ADC_GAIN_CAL | ADC_DC_CAL | IQ_MISMATCH_CAL;
|
||||||
|
|
||||||
|
if (AR_SREV_9287(ah))
|
||||||
|
ah->supp_cals &= ~ADC_GAIN_CAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -226,6 +226,10 @@ static int ath9k_hw_def_check_eeprom(struct ath_hw *ah)
|
||||||
eep->baseEepHeader.pwdclkind == 0)
|
eep->baseEepHeader.pwdclkind == 0)
|
||||||
ah->need_an_top2_fixup = 1;
|
ah->need_an_top2_fixup = 1;
|
||||||
|
|
||||||
|
if ((common->bus_ops->ath_bus_type == ATH_USB) &&
|
||||||
|
(AR_SREV_9280(ah)))
|
||||||
|
eep->modalHeader[0].xpaBiasLvl = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -433,6 +433,7 @@ void ath9k_htc_txep(void *priv, struct sk_buff *skb, enum htc_endpoint_id ep_id,
|
||||||
void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb,
|
void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb,
|
||||||
enum htc_endpoint_id ep_id, bool txok);
|
enum htc_endpoint_id ep_id, bool txok);
|
||||||
|
|
||||||
|
int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv);
|
||||||
void ath9k_htc_station_work(struct work_struct *work);
|
void ath9k_htc_station_work(struct work_struct *work);
|
||||||
void ath9k_htc_aggr_work(struct work_struct *work);
|
void ath9k_htc_aggr_work(struct work_struct *work);
|
||||||
void ath9k_ani_work(struct work_struct *work);;
|
void ath9k_ani_work(struct work_struct *work);;
|
||||||
|
|
|
@ -301,6 +301,16 @@ static int ath9k_htc_add_monitor_interface(struct ath9k_htc_priv *priv)
|
||||||
|
|
||||||
priv->nstations++;
|
priv->nstations++;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set chainmask etc. on the target.
|
||||||
|
*/
|
||||||
|
ret = ath9k_htc_update_cap_target(priv);
|
||||||
|
if (ret)
|
||||||
|
ath_dbg(common, ATH_DBG_CONFIG,
|
||||||
|
"Failed to update capability in target\n");
|
||||||
|
|
||||||
|
priv->ah->is_monitoring = true;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_vif:
|
err_vif:
|
||||||
|
@ -328,6 +338,7 @@ static int ath9k_htc_remove_monitor_interface(struct ath9k_htc_priv *priv)
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->nstations--;
|
priv->nstations--;
|
||||||
|
priv->ah->is_monitoring = false;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -419,7 +430,7 @@ static int ath9k_htc_remove_station(struct ath9k_htc_priv *priv,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv)
|
int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv)
|
||||||
{
|
{
|
||||||
struct ath9k_htc_cap_target tcap;
|
struct ath9k_htc_cap_target tcap;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -1186,6 +1197,20 @@ static int ath9k_htc_config(struct ieee80211_hw *hw, u32 changed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Monitor interface should be added before
|
||||||
|
* IEEE80211_CONF_CHANGE_CHANNEL is handled.
|
||||||
|
*/
|
||||||
|
if (changed & IEEE80211_CONF_CHANGE_MONITOR) {
|
||||||
|
if (conf->flags & IEEE80211_CONF_MONITOR) {
|
||||||
|
if (ath9k_htc_add_monitor_interface(priv))
|
||||||
|
ath_err(common, "Failed to set monitor mode\n");
|
||||||
|
else
|
||||||
|
ath_dbg(common, ATH_DBG_CONFIG,
|
||||||
|
"HW opmode set to Monitor mode\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
|
if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
|
||||||
struct ieee80211_channel *curchan = hw->conf.channel;
|
struct ieee80211_channel *curchan = hw->conf.channel;
|
||||||
int pos = curchan->hw_value;
|
int pos = curchan->hw_value;
|
||||||
|
@ -1221,16 +1246,6 @@ static int ath9k_htc_config(struct ieee80211_hw *hw, u32 changed)
|
||||||
ath_update_txpow(priv);
|
ath_update_txpow(priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (changed & IEEE80211_CONF_CHANGE_MONITOR) {
|
|
||||||
if (conf->flags & IEEE80211_CONF_MONITOR) {
|
|
||||||
if (ath9k_htc_add_monitor_interface(priv))
|
|
||||||
ath_err(common, "Failed to set monitor mode\n");
|
|
||||||
else
|
|
||||||
ath_dbg(common, ATH_DBG_CONFIG,
|
|
||||||
"HW opmode set to Monitor mode\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (changed & IEEE80211_CONF_CHANGE_IDLE) {
|
if (changed & IEEE80211_CONF_CHANGE_IDLE) {
|
||||||
mutex_lock(&priv->htc_pm_lock);
|
mutex_lock(&priv->htc_pm_lock);
|
||||||
if (!priv->ps_idle) {
|
if (!priv->ps_idle) {
|
||||||
|
|
|
@ -436,9 +436,10 @@ static int ath9k_hw_init_macaddr(struct ath_hw *ah)
|
||||||
|
|
||||||
static int ath9k_hw_post_init(struct ath_hw *ah)
|
static int ath9k_hw_post_init(struct ath_hw *ah)
|
||||||
{
|
{
|
||||||
|
struct ath_common *common = ath9k_hw_common(ah);
|
||||||
int ecode;
|
int ecode;
|
||||||
|
|
||||||
if (!AR_SREV_9271(ah)) {
|
if (common->bus_ops->ath_bus_type != ATH_USB) {
|
||||||
if (!ath9k_hw_chip_test(ah))
|
if (!ath9k_hw_chip_test(ah))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
@ -1213,7 +1214,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
|
||||||
ah->txchainmask = common->tx_chainmask;
|
ah->txchainmask = common->tx_chainmask;
|
||||||
ah->rxchainmask = common->rx_chainmask;
|
ah->rxchainmask = common->rx_chainmask;
|
||||||
|
|
||||||
if (!ah->chip_fullsleep) {
|
if ((common->bus_ops->ath_bus_type != ATH_USB) && !ah->chip_fullsleep) {
|
||||||
ath9k_hw_abortpcurecv(ah);
|
ath9k_hw_abortpcurecv(ah);
|
||||||
if (!ath9k_hw_stopdmarecv(ah)) {
|
if (!ath9k_hw_stopdmarecv(ah)) {
|
||||||
ath_dbg(common, ATH_DBG_XMIT,
|
ath_dbg(common, ATH_DBG_XMIT,
|
||||||
|
|
|
@ -518,22 +518,21 @@ static int prism2_config(struct pcmcia_device *link)
|
||||||
hw_priv->link = link;
|
hw_priv->link = link;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure the IRQ handler cannot proceed until at least
|
* We enable IRQ here, but IRQ handler will not proceed
|
||||||
* dev->base_addr is initialized.
|
* until dev->base_addr is set below. This protect us from
|
||||||
|
* receive interrupts when driver is not initialized.
|
||||||
*/
|
*/
|
||||||
spin_lock_irqsave(&local->irq_init_lock, flags);
|
|
||||||
|
|
||||||
ret = pcmcia_request_irq(link, prism2_interrupt);
|
ret = pcmcia_request_irq(link, prism2_interrupt);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto failed_unlock;
|
goto failed;
|
||||||
|
|
||||||
ret = pcmcia_enable_device(link);
|
ret = pcmcia_enable_device(link);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto failed_unlock;
|
goto failed;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&local->irq_init_lock, flags);
|
||||||
dev->irq = link->irq;
|
dev->irq = link->irq;
|
||||||
dev->base_addr = link->resource[0]->start;
|
dev->base_addr = link->resource[0]->start;
|
||||||
|
|
||||||
spin_unlock_irqrestore(&local->irq_init_lock, flags);
|
spin_unlock_irqrestore(&local->irq_init_lock, flags);
|
||||||
|
|
||||||
local->shutdown = 0;
|
local->shutdown = 0;
|
||||||
|
@ -546,8 +545,6 @@ static int prism2_config(struct pcmcia_device *link)
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
failed_unlock:
|
|
||||||
spin_unlock_irqrestore(&local->irq_init_lock, flags);
|
|
||||||
failed:
|
failed:
|
||||||
kfree(hw_priv);
|
kfree(hw_priv);
|
||||||
prism2_release((u_long)link);
|
prism2_release((u_long)link);
|
||||||
|
|
|
@ -1973,6 +1973,13 @@ static void ipw_irq_tasklet(struct ipw_priv *priv)
|
||||||
|
|
||||||
inta = ipw_read32(priv, IPW_INTA_RW);
|
inta = ipw_read32(priv, IPW_INTA_RW);
|
||||||
inta_mask = ipw_read32(priv, IPW_INTA_MASK_R);
|
inta_mask = ipw_read32(priv, IPW_INTA_MASK_R);
|
||||||
|
|
||||||
|
if (inta == 0xFFFFFFFF) {
|
||||||
|
/* Hardware disappeared */
|
||||||
|
IPW_WARNING("TASKLET INTA == 0xFFFFFFFF\n");
|
||||||
|
/* Only handle the cached INTA values */
|
||||||
|
inta = 0;
|
||||||
|
}
|
||||||
inta &= (IPW_INTA_MASK_ALL & inta_mask);
|
inta &= (IPW_INTA_MASK_ALL & inta_mask);
|
||||||
|
|
||||||
/* Add any cached INTA values that need to be handled */
|
/* Add any cached INTA values that need to be handled */
|
||||||
|
|
|
@ -618,7 +618,7 @@ static void p54_tx_80211_header(struct p54_common *priv, struct sk_buff *skb,
|
||||||
else
|
else
|
||||||
*burst_possible = false;
|
*burst_possible = false;
|
||||||
|
|
||||||
if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)
|
if (!(info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ))
|
||||||
*flags |= P54_HDR_FLAG_DATA_OUT_SEQNR;
|
*flags |= P54_HDR_FLAG_DATA_OUT_SEQNR;
|
||||||
|
|
||||||
if (info->flags & IEEE80211_TX_CTL_PSPOLL_RESPONSE)
|
if (info->flags & IEEE80211_TX_CTL_PSPOLL_RESPONSE)
|
||||||
|
|
|
@ -420,6 +420,16 @@ int ssb_bus_scan(struct ssb_bus *bus,
|
||||||
bus->pcicore.dev = dev;
|
bus->pcicore.dev = dev;
|
||||||
#endif /* CONFIG_SSB_DRIVER_PCICORE */
|
#endif /* CONFIG_SSB_DRIVER_PCICORE */
|
||||||
break;
|
break;
|
||||||
|
case SSB_DEV_ETHERNET:
|
||||||
|
if (bus->bustype == SSB_BUSTYPE_PCI) {
|
||||||
|
if (bus->host_pci->vendor == PCI_VENDOR_ID_BROADCOM &&
|
||||||
|
(bus->host_pci->device & 0xFF00) == 0x4300) {
|
||||||
|
/* This is a dangling ethernet core on a
|
||||||
|
* wireless device. Ignore it. */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -148,6 +148,10 @@
|
||||||
* @NL80211_CMD_SET_MPATH: Set mesh path attributes for mesh path to
|
* @NL80211_CMD_SET_MPATH: Set mesh path attributes for mesh path to
|
||||||
* destination %NL80211_ATTR_MAC on the interface identified by
|
* destination %NL80211_ATTR_MAC on the interface identified by
|
||||||
* %NL80211_ATTR_IFINDEX.
|
* %NL80211_ATTR_IFINDEX.
|
||||||
|
* @NL80211_CMD_NEW_MPATH: Create a new mesh path for the destination given by
|
||||||
|
* %NL80211_ATTR_MAC via %NL80211_ATTR_MPATH_NEXT_HOP.
|
||||||
|
* @NL80211_CMD_DEL_MPATH: Delete a mesh path to the destination given by
|
||||||
|
* %NL80211_ATTR_MAC.
|
||||||
* @NL80211_CMD_NEW_PATH: Add a mesh path with given attributes to the
|
* @NL80211_CMD_NEW_PATH: Add a mesh path with given attributes to the
|
||||||
* the interface identified by %NL80211_ATTR_IFINDEX.
|
* the interface identified by %NL80211_ATTR_IFINDEX.
|
||||||
* @NL80211_CMD_DEL_PATH: Remove a mesh path identified by %NL80211_ATTR_MAC
|
* @NL80211_CMD_DEL_PATH: Remove a mesh path identified by %NL80211_ATTR_MAC
|
||||||
|
@ -612,7 +616,7 @@ enum nl80211_commands {
|
||||||
* consisting of a nested array.
|
* consisting of a nested array.
|
||||||
*
|
*
|
||||||
* @NL80211_ATTR_MESH_ID: mesh id (1-32 bytes).
|
* @NL80211_ATTR_MESH_ID: mesh id (1-32 bytes).
|
||||||
* @NL80211_ATTR_PLINK_ACTION: action to perform on the mesh peer link.
|
* @NL80211_ATTR_STA_PLINK_ACTION: action to perform on the mesh peer link.
|
||||||
* @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path.
|
* @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path.
|
||||||
* @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path
|
* @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path
|
||||||
* info given for %NL80211_CMD_GET_MPATH, nested attribute described at
|
* info given for %NL80211_CMD_GET_MPATH, nested attribute described at
|
||||||
|
@ -880,6 +884,8 @@ enum nl80211_commands {
|
||||||
*
|
*
|
||||||
* @NL80211_ATTR_MESH_SETUP: Optional mesh setup parameters. These cannot be
|
* @NL80211_ATTR_MESH_SETUP: Optional mesh setup parameters. These cannot be
|
||||||
* changed once the mesh is active.
|
* changed once the mesh is active.
|
||||||
|
* @NL80211_ATTR_MESH_CONFIG: Mesh configuration parameters, a nested attribute
|
||||||
|
* containing attributes from &enum nl80211_meshconf_params.
|
||||||
*
|
*
|
||||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||||
|
@ -1225,8 +1231,6 @@ enum nl80211_rate_info {
|
||||||
* @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs)
|
* @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs)
|
||||||
* @NL80211_STA_INFO_RX_BYTES: total received bytes (u32, from this station)
|
* @NL80211_STA_INFO_RX_BYTES: total received bytes (u32, from this station)
|
||||||
* @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (u32, to this station)
|
* @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (u32, to this station)
|
||||||
* @__NL80211_STA_INFO_AFTER_LAST: internal
|
|
||||||
* @NL80211_STA_INFO_MAX: highest possible station info attribute
|
|
||||||
* @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm)
|
* @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm)
|
||||||
* @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute
|
* @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute
|
||||||
* containing info as possible, see &enum nl80211_sta_info_txrate.
|
* containing info as possible, see &enum nl80211_sta_info_txrate.
|
||||||
|
@ -1236,6 +1240,11 @@ enum nl80211_rate_info {
|
||||||
* @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station)
|
* @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station)
|
||||||
* @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station)
|
* @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station)
|
||||||
* @NL80211_STA_INFO_SIGNAL_AVG: signal strength average (u8, dBm)
|
* @NL80211_STA_INFO_SIGNAL_AVG: signal strength average (u8, dBm)
|
||||||
|
* @NL80211_STA_INFO_LLID: the station's mesh LLID
|
||||||
|
* @NL80211_STA_INFO_PLID: the station's mesh PLID
|
||||||
|
* @NL80211_STA_INFO_PLINK_STATE: peer link state for the station
|
||||||
|
* @__NL80211_STA_INFO_AFTER_LAST: internal
|
||||||
|
* @NL80211_STA_INFO_MAX: highest possible station info attribute
|
||||||
*/
|
*/
|
||||||
enum nl80211_sta_info {
|
enum nl80211_sta_info {
|
||||||
__NL80211_STA_INFO_INVALID,
|
__NL80211_STA_INFO_INVALID,
|
||||||
|
@ -1626,7 +1635,7 @@ enum nl80211_mntr_flags {
|
||||||
* @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs)
|
* @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs)
|
||||||
* that it takes for an HWMP information element to propagate across the mesh
|
* that it takes for an HWMP information element to propagate across the mesh
|
||||||
*
|
*
|
||||||
* @NL80211_MESHCONF_ROOTMODE: whether root mode is enabled or not
|
* @NL80211_MESHCONF_HWMP_ROOTMODE: whether root mode is enabled or not
|
||||||
*
|
*
|
||||||
* @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
|
* @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
|
||||||
* source mesh point for path selection elements.
|
* source mesh point for path selection elements.
|
||||||
|
@ -1678,6 +1687,7 @@ enum nl80211_meshconf_params {
|
||||||
* element that vendors will use to identify the path selection methods and
|
* element that vendors will use to identify the path selection methods and
|
||||||
* metrics in use.
|
* metrics in use.
|
||||||
*
|
*
|
||||||
|
* @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number
|
||||||
* @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use
|
* @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use
|
||||||
*/
|
*/
|
||||||
enum nl80211_mesh_setup_params {
|
enum nl80211_mesh_setup_params {
|
||||||
|
|
|
@ -1103,6 +1103,8 @@ struct cfg80211_pmksa {
|
||||||
* @change_mpath: change a given mesh path
|
* @change_mpath: change a given mesh path
|
||||||
* @get_mpath: get a mesh path for the given parameters
|
* @get_mpath: get a mesh path for the given parameters
|
||||||
* @dump_mpath: dump mesh path callback -- resume dump at index @idx
|
* @dump_mpath: dump mesh path callback -- resume dump at index @idx
|
||||||
|
* @join_mesh: join the mesh network with the specified parameters
|
||||||
|
* @leave_mesh: leave the current mesh network
|
||||||
*
|
*
|
||||||
* @get_mesh_config: Get the current mesh configuration
|
* @get_mesh_config: Get the current mesh configuration
|
||||||
*
|
*
|
||||||
|
|
|
@ -337,6 +337,10 @@ struct ieee80211_bss_conf {
|
||||||
* @IEEE80211_TX_CTL_LDPC: tells the driver to use LDPC for this frame
|
* @IEEE80211_TX_CTL_LDPC: tells the driver to use LDPC for this frame
|
||||||
* @IEEE80211_TX_CTL_STBC: Enables Space-Time Block Coding (STBC) for this
|
* @IEEE80211_TX_CTL_STBC: Enables Space-Time Block Coding (STBC) for this
|
||||||
* frame and selects the maximum number of streams that it can use.
|
* frame and selects the maximum number of streams that it can use.
|
||||||
|
* @IEEE80211_TX_CTL_TX_OFFCHAN: Marks this packet to be transmitted on
|
||||||
|
* the off-channel channel when a remain-on-channel offload is done
|
||||||
|
* in hardware -- normal packets still flow and are expected to be
|
||||||
|
* handled properly by the device.
|
||||||
*
|
*
|
||||||
* Note: If you have to add new flags to the enumeration, then don't
|
* Note: If you have to add new flags to the enumeration, then don't
|
||||||
* forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary.
|
* forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary.
|
||||||
|
@ -1753,6 +1757,16 @@ enum ieee80211_ampdu_mlme_action {
|
||||||
* (also see nl80211.h @NL80211_ATTR_WIPHY_ANTENNA_TX).
|
* (also see nl80211.h @NL80211_ATTR_WIPHY_ANTENNA_TX).
|
||||||
*
|
*
|
||||||
* @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant).
|
* @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant).
|
||||||
|
*
|
||||||
|
* @remain_on_channel: Starts an off-channel period on the given channel, must
|
||||||
|
* call back to ieee80211_ready_on_channel() when on that channel. Note
|
||||||
|
* that normal channel traffic is not stopped as this is intended for hw
|
||||||
|
* offload. Frames to transmit on the off-channel channel are transmitted
|
||||||
|
* normally except for the %IEEE80211_TX_CTL_TX_OFFCHAN flag. When the
|
||||||
|
* duration (which will always be non-zero) expires, the driver must call
|
||||||
|
* ieee80211_remain_on_channel_expired(). This callback may sleep.
|
||||||
|
* @cancel_remain_on_channel: Requests that an ongoing off-channel period is
|
||||||
|
* aborted before it expires. This callback may sleep.
|
||||||
*/
|
*/
|
||||||
struct ieee80211_ops {
|
struct ieee80211_ops {
|
||||||
int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb);
|
int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче