diff options
author | David S. Miller <davem@davemloft.net> | 2011-01-12 21:52:31 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-12 21:52:31 -0500 |
commit | bb1231052e265e960d902ab32e67c5ccdabc9434 (patch) | |
tree | 3dd999a598355ff0d82f56eea1ffa49a81c8a42c | |
parent | 72b43d0898e97f588293b4a24b33c58c46633d81 (diff) | |
parent | 4e5518ca53be29c1ec3c00089c97bef36bfed515 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
-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 03641a08e275..8906648f962b 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 01880aa13e36..ea2e7d714bda 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 088f141f2006..749a93608664 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 a099b3e87ed3..1ce506f23110 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 845b4c938d16..f4d576bc3ccd 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 fde978665e07..1afb8bb85756 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 bd8a4134edeb..2176edede39b 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 8d6ed5f6f46f..ae438ed80c2f 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 76b2318a7dc7..f618b9623e5a 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 5a0985d4ce15..29884c00c4d5 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 2b89b712565b..821ffb954f14 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 bcc9f448ec4e..1322695beb52 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 5b3fd5add7a4..62c0ce2d1dc8 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); |