diff options
| -rw-r--r-- | Documentation/DocBook/80211.tmpl | 21 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9002_calib.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/eeprom_def.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/htc.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/htc_drv_main.c | 37 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_cs.c | 15 | ||||
| -rw-r--r-- | drivers/net/wireless/ipw2x00/ipw2200.c | 7 | ||||
| -rw-r--r-- | drivers/net/wireless/p54/txrx.c | 2 | ||||
| -rw-r--r-- | drivers/ssb/scan.c | 10 | ||||
| -rw-r--r-- | include/linux/nl80211.h | 20 | ||||
| -rw-r--r-- | include/net/cfg80211.h | 2 | ||||
| -rw-r--r-- | include/net/mac80211.h | 14 |
13 files changed, 109 insertions, 32 deletions
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl index 03641a08e27..8906648f962 100644 --- a/Documentation/DocBook/80211.tmpl +++ b/Documentation/DocBook/80211.tmpl | |||
| @@ -268,10 +268,6 @@ | |||
| 268 | !Finclude/net/mac80211.h ieee80211_ops | 268 | !Finclude/net/mac80211.h ieee80211_ops |
| 269 | !Finclude/net/mac80211.h ieee80211_alloc_hw | 269 | !Finclude/net/mac80211.h ieee80211_alloc_hw |
| 270 | !Finclude/net/mac80211.h ieee80211_register_hw | 270 | !Finclude/net/mac80211.h ieee80211_register_hw |
| 271 | !Finclude/net/mac80211.h ieee80211_get_tx_led_name | ||
| 272 | !Finclude/net/mac80211.h ieee80211_get_rx_led_name | ||
| 273 | !Finclude/net/mac80211.h ieee80211_get_assoc_led_name | ||
| 274 | !Finclude/net/mac80211.h ieee80211_get_radio_led_name | ||
| 275 | !Finclude/net/mac80211.h ieee80211_unregister_hw | 271 | !Finclude/net/mac80211.h ieee80211_unregister_hw |
| 276 | !Finclude/net/mac80211.h ieee80211_free_hw | 272 | !Finclude/net/mac80211.h ieee80211_free_hw |
| 277 | </chapter> | 273 | </chapter> |
| @@ -382,6 +378,23 @@ | |||
| 382 | </para> | 378 | </para> |
| 383 | </partintro> | 379 | </partintro> |
| 384 | 380 | ||
| 381 | <chapter id="led-support"> | ||
| 382 | <title>LED support</title> | ||
| 383 | <para> | ||
| 384 | Mac80211 supports various ways of blinking LEDs. Wherever possible, | ||
| 385 | device LEDs should be exposed as LED class devices and hooked up to | ||
| 386 | the appropriate trigger, which will then be triggered appropriately | ||
| 387 | by mac80211. | ||
| 388 | </para> | ||
| 389 | !Finclude/net/mac80211.h ieee80211_get_tx_led_name | ||
| 390 | !Finclude/net/mac80211.h ieee80211_get_rx_led_name | ||
| 391 | !Finclude/net/mac80211.h ieee80211_get_assoc_led_name | ||
| 392 | !Finclude/net/mac80211.h ieee80211_get_radio_led_name | ||
| 393 | !Finclude/net/mac80211.h ieee80211_tpt_blink | ||
| 394 | !Finclude/net/mac80211.h ieee80211_tpt_led_trigger_flags | ||
| 395 | !Finclude/net/mac80211.h ieee80211_create_tpt_led_trigger | ||
| 396 | </chapter> | ||
| 397 | |||
| 385 | <chapter id="hardware-crypto-offload"> | 398 | <chapter id="hardware-crypto-offload"> |
| 386 | <title>Hardware crypto acceleration</title> | 399 | <title>Hardware crypto acceleration</title> |
| 387 | !Pinclude/net/mac80211.h Hardware crypto acceleration | 400 | !Pinclude/net/mac80211.h Hardware crypto acceleration |
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_calib.c b/drivers/net/wireless/ath/ath9k/ar9002_calib.c index 01880aa13e3..ea2e7d714bd 100644 --- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c +++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c | |||
| @@ -954,6 +954,9 @@ static void ar9002_hw_init_cal_settings(struct ath_hw *ah) | |||
| 954 | &adc_dc_cal_multi_sample; | 954 | &adc_dc_cal_multi_sample; |
| 955 | } | 955 | } |
| 956 | ah->supp_cals = ADC_GAIN_CAL | ADC_DC_CAL | IQ_MISMATCH_CAL; | 956 | ah->supp_cals = ADC_GAIN_CAL | ADC_DC_CAL | IQ_MISMATCH_CAL; |
| 957 | |||
| 958 | if (AR_SREV_9287(ah)) | ||
| 959 | ah->supp_cals &= ~ADC_GAIN_CAL; | ||
| 957 | } | 960 | } |
| 958 | } | 961 | } |
| 959 | 962 | ||
diff --git a/drivers/net/wireless/ath/ath9k/eeprom_def.c b/drivers/net/wireless/ath/ath9k/eeprom_def.c index 088f141f200..749a9360866 100644 --- a/drivers/net/wireless/ath/ath9k/eeprom_def.c +++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c | |||
| @@ -226,6 +226,10 @@ static int ath9k_hw_def_check_eeprom(struct ath_hw *ah) | |||
| 226 | eep->baseEepHeader.pwdclkind == 0) | 226 | eep->baseEepHeader.pwdclkind == 0) |
| 227 | ah->need_an_top2_fixup = 1; | 227 | ah->need_an_top2_fixup = 1; |
| 228 | 228 | ||
| 229 | if ((common->bus_ops->ath_bus_type == ATH_USB) && | ||
| 230 | (AR_SREV_9280(ah))) | ||
| 231 | eep->modalHeader[0].xpaBiasLvl = 0; | ||
| 232 | |||
| 229 | return 0; | 233 | return 0; |
| 230 | } | 234 | } |
| 231 | 235 | ||
diff --git a/drivers/net/wireless/ath/ath9k/htc.h b/drivers/net/wireless/ath/ath9k/htc.h index a099b3e87ed..1ce506f2311 100644 --- a/drivers/net/wireless/ath/ath9k/htc.h +++ b/drivers/net/wireless/ath/ath9k/htc.h | |||
| @@ -433,6 +433,7 @@ void ath9k_htc_txep(void *priv, struct sk_buff *skb, enum htc_endpoint_id ep_id, | |||
| 433 | void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb, | 433 | void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb, |
| 434 | enum htc_endpoint_id ep_id, bool txok); | 434 | enum htc_endpoint_id ep_id, bool txok); |
| 435 | 435 | ||
| 436 | int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv); | ||
| 436 | void ath9k_htc_station_work(struct work_struct *work); | 437 | void ath9k_htc_station_work(struct work_struct *work); |
| 437 | void ath9k_htc_aggr_work(struct work_struct *work); | 438 | void ath9k_htc_aggr_work(struct work_struct *work); |
| 438 | void ath9k_ani_work(struct work_struct *work);; | 439 | void ath9k_ani_work(struct work_struct *work);; |
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c index 845b4c938d1..f4d576bc3cc 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c | |||
| @@ -301,6 +301,16 @@ static int ath9k_htc_add_monitor_interface(struct ath9k_htc_priv *priv) | |||
| 301 | 301 | ||
| 302 | priv->nstations++; | 302 | priv->nstations++; |
| 303 | 303 | ||
| 304 | /* | ||
| 305 | * Set chainmask etc. on the target. | ||
| 306 | */ | ||
| 307 | ret = ath9k_htc_update_cap_target(priv); | ||
| 308 | if (ret) | ||
| 309 | ath_dbg(common, ATH_DBG_CONFIG, | ||
| 310 | "Failed to update capability in target\n"); | ||
| 311 | |||
| 312 | priv->ah->is_monitoring = true; | ||
| 313 | |||
| 304 | return 0; | 314 | return 0; |
| 305 | 315 | ||
| 306 | err_vif: | 316 | err_vif: |
| @@ -328,6 +338,7 @@ static int ath9k_htc_remove_monitor_interface(struct ath9k_htc_priv *priv) | |||
| 328 | } | 338 | } |
| 329 | 339 | ||
| 330 | priv->nstations--; | 340 | priv->nstations--; |
| 341 | priv->ah->is_monitoring = false; | ||
| 331 | 342 | ||
| 332 | return 0; | 343 | return 0; |
| 333 | } | 344 | } |
| @@ -419,7 +430,7 @@ static int ath9k_htc_remove_station(struct ath9k_htc_priv *priv, | |||
| 419 | return 0; | 430 | return 0; |
| 420 | } | 431 | } |
| 421 | 432 | ||
| 422 | static int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv) | 433 | int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv) |
| 423 | { | 434 | { |
| 424 | struct ath9k_htc_cap_target tcap; | 435 | struct ath9k_htc_cap_target tcap; |
| 425 | int ret; | 436 | int ret; |
| @@ -1186,6 +1197,20 @@ static int ath9k_htc_config(struct ieee80211_hw *hw, u32 changed) | |||
| 1186 | } | 1197 | } |
| 1187 | } | 1198 | } |
| 1188 | 1199 | ||
| 1200 | /* | ||
| 1201 | * Monitor interface should be added before | ||
| 1202 | * IEEE80211_CONF_CHANGE_CHANNEL is handled. | ||
| 1203 | */ | ||
| 1204 | if (changed & IEEE80211_CONF_CHANGE_MONITOR) { | ||
| 1205 | if (conf->flags & IEEE80211_CONF_MONITOR) { | ||
| 1206 | if (ath9k_htc_add_monitor_interface(priv)) | ||
| 1207 | ath_err(common, "Failed to set monitor mode\n"); | ||
| 1208 | else | ||
| 1209 | ath_dbg(common, ATH_DBG_CONFIG, | ||
| 1210 | "HW opmode set to Monitor mode\n"); | ||
| 1211 | } | ||
| 1212 | } | ||
| 1213 | |||
| 1189 | if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { | 1214 | if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { |
| 1190 | struct ieee80211_channel *curchan = hw->conf.channel; | 1215 | struct ieee80211_channel *curchan = hw->conf.channel; |
| 1191 | int pos = curchan->hw_value; | 1216 | int pos = curchan->hw_value; |
| @@ -1221,16 +1246,6 @@ static int ath9k_htc_config(struct ieee80211_hw *hw, u32 changed) | |||
| 1221 | ath_update_txpow(priv); | 1246 | ath_update_txpow(priv); |
| 1222 | } | 1247 | } |
| 1223 | 1248 | ||
| 1224 | if (changed & IEEE80211_CONF_CHANGE_MONITOR) { | ||
| 1225 | if (conf->flags & IEEE80211_CONF_MONITOR) { | ||
| 1226 | if (ath9k_htc_add_monitor_interface(priv)) | ||
| 1227 | ath_err(common, "Failed to set monitor mode\n"); | ||
| 1228 | else | ||
| 1229 | ath_dbg(common, ATH_DBG_CONFIG, | ||
| 1230 | "HW opmode set to Monitor mode\n"); | ||
| 1231 | } | ||
| 1232 | } | ||
| 1233 | |||
| 1234 | if (changed & IEEE80211_CONF_CHANGE_IDLE) { | 1249 | if (changed & IEEE80211_CONF_CHANGE_IDLE) { |
| 1235 | mutex_lock(&priv->htc_pm_lock); | 1250 | mutex_lock(&priv->htc_pm_lock); |
| 1236 | if (!priv->ps_idle) { | 1251 | if (!priv->ps_idle) { |
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index fde978665e0..1afb8bb8575 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c | |||
| @@ -436,9 +436,10 @@ static int ath9k_hw_init_macaddr(struct ath_hw *ah) | |||
| 436 | 436 | ||
| 437 | static int ath9k_hw_post_init(struct ath_hw *ah) | 437 | static int ath9k_hw_post_init(struct ath_hw *ah) |
| 438 | { | 438 | { |
| 439 | struct ath_common *common = ath9k_hw_common(ah); | ||
| 439 | int ecode; | 440 | int ecode; |
| 440 | 441 | ||
| 441 | if (!AR_SREV_9271(ah)) { | 442 | if (common->bus_ops->ath_bus_type != ATH_USB) { |
| 442 | if (!ath9k_hw_chip_test(ah)) | 443 | if (!ath9k_hw_chip_test(ah)) |
| 443 | return -ENODEV; | 444 | return -ENODEV; |
| 444 | } | 445 | } |
| @@ -1213,7 +1214,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan, | |||
| 1213 | ah->txchainmask = common->tx_chainmask; | 1214 | ah->txchainmask = common->tx_chainmask; |
| 1214 | ah->rxchainmask = common->rx_chainmask; | 1215 | ah->rxchainmask = common->rx_chainmask; |
| 1215 | 1216 | ||
| 1216 | if (!ah->chip_fullsleep) { | 1217 | if ((common->bus_ops->ath_bus_type != ATH_USB) && !ah->chip_fullsleep) { |
| 1217 | ath9k_hw_abortpcurecv(ah); | 1218 | ath9k_hw_abortpcurecv(ah); |
| 1218 | if (!ath9k_hw_stopdmarecv(ah)) { | 1219 | if (!ath9k_hw_stopdmarecv(ah)) { |
| 1219 | ath_dbg(common, ATH_DBG_XMIT, | 1220 | ath_dbg(common, ATH_DBG_XMIT, |
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c index bd8a4134ede..2176edede39 100644 --- a/drivers/net/wireless/hostap/hostap_cs.c +++ b/drivers/net/wireless/hostap/hostap_cs.c | |||
| @@ -518,22 +518,21 @@ static int prism2_config(struct pcmcia_device *link) | |||
| 518 | hw_priv->link = link; | 518 | hw_priv->link = link; |
| 519 | 519 | ||
| 520 | /* | 520 | /* |
| 521 | * Make sure the IRQ handler cannot proceed until at least | 521 | * We enable IRQ here, but IRQ handler will not proceed |
| 522 | * dev->base_addr is initialized. | 522 | * until dev->base_addr is set below. This protect us from |
| 523 | * receive interrupts when driver is not initialized. | ||
| 523 | */ | 524 | */ |
| 524 | spin_lock_irqsave(&local->irq_init_lock, flags); | ||
| 525 | |||
| 526 | ret = pcmcia_request_irq(link, prism2_interrupt); | 525 | ret = pcmcia_request_irq(link, prism2_interrupt); |
| 527 | if (ret) | 526 | if (ret) |
| 528 | goto failed_unlock; | 527 | goto failed; |
| 529 | 528 | ||
| 530 | ret = pcmcia_enable_device(link); | 529 | ret = pcmcia_enable_device(link); |
| 531 | if (ret) | 530 | if (ret) |
| 532 | goto failed_unlock; | 531 | goto failed; |
| 533 | 532 | ||
| 533 | spin_lock_irqsave(&local->irq_init_lock, flags); | ||
| 534 | dev->irq = link->irq; | 534 | dev->irq = link->irq; |
| 535 | dev->base_addr = link->resource[0]->start; | 535 | dev->base_addr = link->resource[0]->start; |
| 536 | |||
| 537 | spin_unlock_irqrestore(&local->irq_init_lock, flags); | 536 | spin_unlock_irqrestore(&local->irq_init_lock, flags); |
| 538 | 537 | ||
| 539 | local->shutdown = 0; | 538 | local->shutdown = 0; |
| @@ -546,8 +545,6 @@ static int prism2_config(struct pcmcia_device *link) | |||
| 546 | 545 | ||
| 547 | return ret; | 546 | return ret; |
| 548 | 547 | ||
| 549 | failed_unlock: | ||
| 550 | spin_unlock_irqrestore(&local->irq_init_lock, flags); | ||
| 551 | failed: | 548 | failed: |
| 552 | kfree(hw_priv); | 549 | kfree(hw_priv); |
| 553 | prism2_release((u_long)link); | 550 | prism2_release((u_long)link); |
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c index 8d6ed5f6f46..ae438ed80c2 100644 --- a/drivers/net/wireless/ipw2x00/ipw2200.c +++ b/drivers/net/wireless/ipw2x00/ipw2200.c | |||
| @@ -1973,6 +1973,13 @@ static void ipw_irq_tasklet(struct ipw_priv *priv) | |||
| 1973 | 1973 | ||
| 1974 | inta = ipw_read32(priv, IPW_INTA_RW); | 1974 | inta = ipw_read32(priv, IPW_INTA_RW); |
| 1975 | inta_mask = ipw_read32(priv, IPW_INTA_MASK_R); | 1975 | inta_mask = ipw_read32(priv, IPW_INTA_MASK_R); |
| 1976 | |||
| 1977 | if (inta == 0xFFFFFFFF) { | ||
| 1978 | /* Hardware disappeared */ | ||
| 1979 | IPW_WARNING("TASKLET INTA == 0xFFFFFFFF\n"); | ||
| 1980 | /* Only handle the cached INTA values */ | ||
| 1981 | inta = 0; | ||
| 1982 | } | ||
| 1976 | inta &= (IPW_INTA_MASK_ALL & inta_mask); | 1983 | inta &= (IPW_INTA_MASK_ALL & inta_mask); |
| 1977 | 1984 | ||
| 1978 | /* Add any cached INTA values that need to be handled */ | 1985 | /* Add any cached INTA values that need to be handled */ |
diff --git a/drivers/net/wireless/p54/txrx.c b/drivers/net/wireless/p54/txrx.c index 76b2318a7dc..f618b9623e5 100644 --- a/drivers/net/wireless/p54/txrx.c +++ b/drivers/net/wireless/p54/txrx.c | |||
| @@ -618,7 +618,7 @@ static void p54_tx_80211_header(struct p54_common *priv, struct sk_buff *skb, | |||
| 618 | else | 618 | else |
| 619 | *burst_possible = false; | 619 | *burst_possible = false; |
| 620 | 620 | ||
| 621 | if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ) | 621 | if (!(info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)) |
| 622 | *flags |= P54_HDR_FLAG_DATA_OUT_SEQNR; | 622 | *flags |= P54_HDR_FLAG_DATA_OUT_SEQNR; |
| 623 | 623 | ||
| 624 | if (info->flags & IEEE80211_TX_CTL_PSPOLL_RESPONSE) | 624 | if (info->flags & IEEE80211_TX_CTL_PSPOLL_RESPONSE) |
diff --git a/drivers/ssb/scan.c b/drivers/ssb/scan.c index 5a0985d4ce1..29884c00c4d 100644 --- a/drivers/ssb/scan.c +++ b/drivers/ssb/scan.c | |||
| @@ -420,6 +420,16 @@ int ssb_bus_scan(struct ssb_bus *bus, | |||
| 420 | bus->pcicore.dev = dev; | 420 | bus->pcicore.dev = dev; |
| 421 | #endif /* CONFIG_SSB_DRIVER_PCICORE */ | 421 | #endif /* CONFIG_SSB_DRIVER_PCICORE */ |
| 422 | break; | 422 | break; |
| 423 | case SSB_DEV_ETHERNET: | ||
| 424 | if (bus->bustype == SSB_BUSTYPE_PCI) { | ||
| 425 | if (bus->host_pci->vendor == PCI_VENDOR_ID_BROADCOM && | ||
| 426 | (bus->host_pci->device & 0xFF00) == 0x4300) { | ||
| 427 | /* This is a dangling ethernet core on a | ||
| 428 | * wireless device. Ignore it. */ | ||
| 429 | continue; | ||
| 430 | } | ||
| 431 | } | ||
| 432 | break; | ||
| 423 | default: | 433 | default: |
| 424 | break; | 434 | break; |
| 425 | } | 435 | } |
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index 2b89b712565..821ffb954f1 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
| @@ -148,6 +148,10 @@ | |||
| 148 | * @NL80211_CMD_SET_MPATH: Set mesh path attributes for mesh path to | 148 | * @NL80211_CMD_SET_MPATH: Set mesh path attributes for mesh path to |
| 149 | * destination %NL80211_ATTR_MAC on the interface identified by | 149 | * destination %NL80211_ATTR_MAC on the interface identified by |
| 150 | * %NL80211_ATTR_IFINDEX. | 150 | * %NL80211_ATTR_IFINDEX. |
| 151 | * @NL80211_CMD_NEW_MPATH: Create a new mesh path for the destination given by | ||
| 152 | * %NL80211_ATTR_MAC via %NL80211_ATTR_MPATH_NEXT_HOP. | ||
| 153 | * @NL80211_CMD_DEL_MPATH: Delete a mesh path to the destination given by | ||
| 154 | * %NL80211_ATTR_MAC. | ||
| 151 | * @NL80211_CMD_NEW_PATH: Add a mesh path with given attributes to the | 155 | * @NL80211_CMD_NEW_PATH: Add a mesh path with given attributes to the |
| 152 | * the interface identified by %NL80211_ATTR_IFINDEX. | 156 | * the interface identified by %NL80211_ATTR_IFINDEX. |
| 153 | * @NL80211_CMD_DEL_PATH: Remove a mesh path identified by %NL80211_ATTR_MAC | 157 | * @NL80211_CMD_DEL_PATH: Remove a mesh path identified by %NL80211_ATTR_MAC |
| @@ -612,7 +616,7 @@ enum nl80211_commands { | |||
| 612 | * consisting of a nested array. | 616 | * consisting of a nested array. |
| 613 | * | 617 | * |
| 614 | * @NL80211_ATTR_MESH_ID: mesh id (1-32 bytes). | 618 | * @NL80211_ATTR_MESH_ID: mesh id (1-32 bytes). |
| 615 | * @NL80211_ATTR_PLINK_ACTION: action to perform on the mesh peer link. | 619 | * @NL80211_ATTR_STA_PLINK_ACTION: action to perform on the mesh peer link. |
| 616 | * @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path. | 620 | * @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path. |
| 617 | * @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path | 621 | * @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path |
| 618 | * info given for %NL80211_CMD_GET_MPATH, nested attribute described at | 622 | * info given for %NL80211_CMD_GET_MPATH, nested attribute described at |
| @@ -879,7 +883,9 @@ enum nl80211_commands { | |||
| 879 | * See &enum nl80211_key_default_types. | 883 | * See &enum nl80211_key_default_types. |
| 880 | * | 884 | * |
| 881 | * @NL80211_ATTR_MESH_SETUP: Optional mesh setup parameters. These cannot be | 885 | * @NL80211_ATTR_MESH_SETUP: Optional mesh setup parameters. These cannot be |
| 882 | * changed once the mesh is active. | 886 | * changed once the mesh is active. |
| 887 | * @NL80211_ATTR_MESH_CONFIG: Mesh configuration parameters, a nested attribute | ||
| 888 | * containing attributes from &enum nl80211_meshconf_params. | ||
| 883 | * | 889 | * |
| 884 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 890 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 885 | * @__NL80211_ATTR_AFTER_LAST: internal use | 891 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| @@ -1225,8 +1231,6 @@ enum nl80211_rate_info { | |||
| 1225 | * @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs) | 1231 | * @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs) |
| 1226 | * @NL80211_STA_INFO_RX_BYTES: total received bytes (u32, from this station) | 1232 | * @NL80211_STA_INFO_RX_BYTES: total received bytes (u32, from this station) |
| 1227 | * @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (u32, to this station) | 1233 | * @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (u32, to this station) |
| 1228 | * @__NL80211_STA_INFO_AFTER_LAST: internal | ||
| 1229 | * @NL80211_STA_INFO_MAX: highest possible station info attribute | ||
| 1230 | * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm) | 1234 | * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm) |
| 1231 | * @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute | 1235 | * @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute |
| 1232 | * containing info as possible, see &enum nl80211_sta_info_txrate. | 1236 | * containing info as possible, see &enum nl80211_sta_info_txrate. |
| @@ -1236,6 +1240,11 @@ enum nl80211_rate_info { | |||
| 1236 | * @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station) | 1240 | * @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station) |
| 1237 | * @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station) | 1241 | * @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station) |
| 1238 | * @NL80211_STA_INFO_SIGNAL_AVG: signal strength average (u8, dBm) | 1242 | * @NL80211_STA_INFO_SIGNAL_AVG: signal strength average (u8, dBm) |
| 1243 | * @NL80211_STA_INFO_LLID: the station's mesh LLID | ||
| 1244 | * @NL80211_STA_INFO_PLID: the station's mesh PLID | ||
| 1245 | * @NL80211_STA_INFO_PLINK_STATE: peer link state for the station | ||
| 1246 | * @__NL80211_STA_INFO_AFTER_LAST: internal | ||
| 1247 | * @NL80211_STA_INFO_MAX: highest possible station info attribute | ||
| 1239 | */ | 1248 | */ |
| 1240 | enum nl80211_sta_info { | 1249 | enum nl80211_sta_info { |
| 1241 | __NL80211_STA_INFO_INVALID, | 1250 | __NL80211_STA_INFO_INVALID, |
| @@ -1626,7 +1635,7 @@ enum nl80211_mntr_flags { | |||
| 1626 | * @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs) | 1635 | * @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs) |
| 1627 | * that it takes for an HWMP information element to propagate across the mesh | 1636 | * that it takes for an HWMP information element to propagate across the mesh |
| 1628 | * | 1637 | * |
| 1629 | * @NL80211_MESHCONF_ROOTMODE: whether root mode is enabled or not | 1638 | * @NL80211_MESHCONF_HWMP_ROOTMODE: whether root mode is enabled or not |
| 1630 | * | 1639 | * |
| 1631 | * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a | 1640 | * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a |
| 1632 | * source mesh point for path selection elements. | 1641 | * source mesh point for path selection elements. |
| @@ -1678,6 +1687,7 @@ enum nl80211_meshconf_params { | |||
| 1678 | * element that vendors will use to identify the path selection methods and | 1687 | * element that vendors will use to identify the path selection methods and |
| 1679 | * metrics in use. | 1688 | * metrics in use. |
| 1680 | * | 1689 | * |
| 1690 | * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number | ||
| 1681 | * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use | 1691 | * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use |
| 1682 | */ | 1692 | */ |
| 1683 | enum nl80211_mesh_setup_params { | 1693 | enum nl80211_mesh_setup_params { |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index bcc9f448ec4..1322695beb5 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
| @@ -1103,6 +1103,8 @@ struct cfg80211_pmksa { | |||
| 1103 | * @change_mpath: change a given mesh path | 1103 | * @change_mpath: change a given mesh path |
| 1104 | * @get_mpath: get a mesh path for the given parameters | 1104 | * @get_mpath: get a mesh path for the given parameters |
| 1105 | * @dump_mpath: dump mesh path callback -- resume dump at index @idx | 1105 | * @dump_mpath: dump mesh path callback -- resume dump at index @idx |
| 1106 | * @join_mesh: join the mesh network with the specified parameters | ||
| 1107 | * @leave_mesh: leave the current mesh network | ||
| 1106 | * | 1108 | * |
| 1107 | * @get_mesh_config: Get the current mesh configuration | 1109 | * @get_mesh_config: Get the current mesh configuration |
| 1108 | * | 1110 | * |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 5b3fd5add7a..62c0ce2d1dc 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
| @@ -337,6 +337,10 @@ struct ieee80211_bss_conf { | |||
| 337 | * @IEEE80211_TX_CTL_LDPC: tells the driver to use LDPC for this frame | 337 | * @IEEE80211_TX_CTL_LDPC: tells the driver to use LDPC for this frame |
| 338 | * @IEEE80211_TX_CTL_STBC: Enables Space-Time Block Coding (STBC) for this | 338 | * @IEEE80211_TX_CTL_STBC: Enables Space-Time Block Coding (STBC) for this |
| 339 | * frame and selects the maximum number of streams that it can use. | 339 | * frame and selects the maximum number of streams that it can use. |
| 340 | * @IEEE80211_TX_CTL_TX_OFFCHAN: Marks this packet to be transmitted on | ||
| 341 | * the off-channel channel when a remain-on-channel offload is done | ||
| 342 | * in hardware -- normal packets still flow and are expected to be | ||
| 343 | * handled properly by the device. | ||
| 340 | * | 344 | * |
| 341 | * Note: If you have to add new flags to the enumeration, then don't | 345 | * Note: If you have to add new flags to the enumeration, then don't |
| 342 | * forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary. | 346 | * forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary. |
| @@ -1753,6 +1757,16 @@ enum ieee80211_ampdu_mlme_action { | |||
| 1753 | * (also see nl80211.h @NL80211_ATTR_WIPHY_ANTENNA_TX). | 1757 | * (also see nl80211.h @NL80211_ATTR_WIPHY_ANTENNA_TX). |
| 1754 | * | 1758 | * |
| 1755 | * @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant). | 1759 | * @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant). |
| 1760 | * | ||
| 1761 | * @remain_on_channel: Starts an off-channel period on the given channel, must | ||
| 1762 | * call back to ieee80211_ready_on_channel() when on that channel. Note | ||
| 1763 | * that normal channel traffic is not stopped as this is intended for hw | ||
| 1764 | * offload. Frames to transmit on the off-channel channel are transmitted | ||
| 1765 | * normally except for the %IEEE80211_TX_CTL_TX_OFFCHAN flag. When the | ||
| 1766 | * duration (which will always be non-zero) expires, the driver must call | ||
| 1767 | * ieee80211_remain_on_channel_expired(). This callback may sleep. | ||
| 1768 | * @cancel_remain_on_channel: Requests that an ongoing off-channel period is | ||
| 1769 | * aborted before it expires. This callback may sleep. | ||
| 1756 | */ | 1770 | */ |
| 1757 | struct ieee80211_ops { | 1771 | struct ieee80211_ops { |
| 1758 | int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); | 1772 | int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); |
