diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /net/mac80211/mesh_plink.c | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'net/mac80211/mesh_plink.c')
-rw-r--r-- | net/mac80211/mesh_plink.c | 130 |
1 files changed, 82 insertions, 48 deletions
diff --git a/net/mac80211/mesh_plink.c b/net/mac80211/mesh_plink.c index ea13a80a476c..f4adc0917888 100644 --- a/net/mac80211/mesh_plink.c +++ b/net/mac80211/mesh_plink.c | |||
@@ -43,7 +43,7 @@ | |||
43 | #define dot11MeshMaxPeerLinks(s) (s->u.mesh.mshcfg.dot11MeshMaxPeerLinks) | 43 | #define dot11MeshMaxPeerLinks(s) (s->u.mesh.mshcfg.dot11MeshMaxPeerLinks) |
44 | 44 | ||
45 | enum plink_frame_type { | 45 | enum plink_frame_type { |
46 | PLINK_OPEN = 0, | 46 | PLINK_OPEN = 1, |
47 | PLINK_CONFIRM, | 47 | PLINK_CONFIRM, |
48 | PLINK_CLOSE | 48 | PLINK_CLOSE |
49 | }; | 49 | }; |
@@ -83,7 +83,7 @@ void mesh_plink_dec_estab_count(struct ieee80211_sub_if_data *sdata) | |||
83 | */ | 83 | */ |
84 | static inline void mesh_plink_fsm_restart(struct sta_info *sta) | 84 | static inline void mesh_plink_fsm_restart(struct sta_info *sta) |
85 | { | 85 | { |
86 | sta->plink_state = PLINK_LISTEN; | 86 | sta->plink_state = NL80211_PLINK_LISTEN; |
87 | sta->llid = sta->plid = sta->reason = 0; | 87 | sta->llid = sta->plid = sta->reason = 0; |
88 | sta->plink_retries = 0; | 88 | sta->plink_retries = 0; |
89 | } | 89 | } |
@@ -105,7 +105,7 @@ static struct sta_info *mesh_plink_alloc(struct ieee80211_sub_if_data *sdata, | |||
105 | if (!sta) | 105 | if (!sta) |
106 | return NULL; | 106 | return NULL; |
107 | 107 | ||
108 | sta->flags = WLAN_STA_AUTHORIZED; | 108 | sta->flags = WLAN_STA_AUTHORIZED | WLAN_STA_AUTH; |
109 | sta->sta.supp_rates[local->hw.conf.channel->band] = rates; | 109 | sta->sta.supp_rates[local->hw.conf.channel->band] = rates; |
110 | rate_control_rate_init(sta); | 110 | rate_control_rate_init(sta); |
111 | 111 | ||
@@ -126,11 +126,11 @@ static bool __mesh_plink_deactivate(struct sta_info *sta) | |||
126 | struct ieee80211_sub_if_data *sdata = sta->sdata; | 126 | struct ieee80211_sub_if_data *sdata = sta->sdata; |
127 | bool deactivated = false; | 127 | bool deactivated = false; |
128 | 128 | ||
129 | if (sta->plink_state == PLINK_ESTAB) { | 129 | if (sta->plink_state == NL80211_PLINK_ESTAB) { |
130 | mesh_plink_dec_estab_count(sdata); | 130 | mesh_plink_dec_estab_count(sdata); |
131 | deactivated = true; | 131 | deactivated = true; |
132 | } | 132 | } |
133 | sta->plink_state = PLINK_BLOCKED; | 133 | sta->plink_state = NL80211_PLINK_BLOCKED; |
134 | mesh_path_flush_by_nexthop(sta); | 134 | mesh_path_flush_by_nexthop(sta); |
135 | 135 | ||
136 | return deactivated; | 136 | return deactivated; |
@@ -160,7 +160,8 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata, | |||
160 | enum plink_frame_type action, u8 *da, __le16 llid, __le16 plid, | 160 | enum plink_frame_type action, u8 *da, __le16 llid, __le16 plid, |
161 | __le16 reason) { | 161 | __le16 reason) { |
162 | struct ieee80211_local *local = sdata->local; | 162 | struct ieee80211_local *local = sdata->local; |
163 | struct sk_buff *skb = dev_alloc_skb(local->hw.extra_tx_headroom + 400); | 163 | struct sk_buff *skb = dev_alloc_skb(local->hw.extra_tx_headroom + 400 + |
164 | sdata->u.mesh.ie_len); | ||
164 | struct ieee80211_mgmt *mgmt; | 165 | struct ieee80211_mgmt *mgmt; |
165 | bool include_plid = false; | 166 | bool include_plid = false; |
166 | static const u8 meshpeeringproto[] = { 0x00, 0x0F, 0xAC, 0x2A }; | 167 | static const u8 meshpeeringproto[] = { 0x00, 0x0F, 0xAC, 0x2A }; |
@@ -180,8 +181,8 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata, | |||
180 | IEEE80211_STYPE_ACTION); | 181 | IEEE80211_STYPE_ACTION); |
181 | memcpy(mgmt->da, da, ETH_ALEN); | 182 | memcpy(mgmt->da, da, ETH_ALEN); |
182 | memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); | 183 | memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); |
183 | /* BSSID is left zeroed, wildcard value */ | 184 | memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN); |
184 | mgmt->u.action.category = WLAN_CATEGORY_MESH_PLINK; | 185 | mgmt->u.action.category = WLAN_CATEGORY_MESH_ACTION; |
185 | mgmt->u.action.u.plink_action.action_code = action; | 186 | mgmt->u.action.u.plink_action.action_code = action; |
186 | 187 | ||
187 | if (action == PLINK_CLOSE) | 188 | if (action == PLINK_CLOSE) |
@@ -236,8 +237,9 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata, | |||
236 | return 0; | 237 | return 0; |
237 | } | 238 | } |
238 | 239 | ||
239 | void mesh_neighbour_update(u8 *hw_addr, u32 rates, struct ieee80211_sub_if_data *sdata, | 240 | void mesh_neighbour_update(u8 *hw_addr, u32 rates, |
240 | bool peer_accepting_plinks) | 241 | struct ieee80211_sub_if_data *sdata, |
242 | struct ieee802_11_elems *elems) | ||
241 | { | 243 | { |
242 | struct ieee80211_local *local = sdata->local; | 244 | struct ieee80211_local *local = sdata->local; |
243 | struct sta_info *sta; | 245 | struct sta_info *sta; |
@@ -247,8 +249,14 @@ void mesh_neighbour_update(u8 *hw_addr, u32 rates, struct ieee80211_sub_if_data | |||
247 | sta = sta_info_get(sdata, hw_addr); | 249 | sta = sta_info_get(sdata, hw_addr); |
248 | if (!sta) { | 250 | if (!sta) { |
249 | rcu_read_unlock(); | 251 | rcu_read_unlock(); |
250 | 252 | /* Userspace handles peer allocation when security is enabled | |
251 | sta = mesh_plink_alloc(sdata, hw_addr, rates); | 253 | * */ |
254 | if (sdata->u.mesh.security & IEEE80211_MESH_SEC_AUTHED) | ||
255 | cfg80211_notify_new_peer_candidate(sdata->dev, hw_addr, | ||
256 | elems->ie_start, elems->total_len, | ||
257 | GFP_KERNEL); | ||
258 | else | ||
259 | sta = mesh_plink_alloc(sdata, hw_addr, rates); | ||
252 | if (!sta) | 260 | if (!sta) |
253 | return; | 261 | return; |
254 | if (sta_info_insert_rcu(sta)) { | 262 | if (sta_info_insert_rcu(sta)) { |
@@ -259,7 +267,8 @@ void mesh_neighbour_update(u8 *hw_addr, u32 rates, struct ieee80211_sub_if_data | |||
259 | 267 | ||
260 | sta->last_rx = jiffies; | 268 | sta->last_rx = jiffies; |
261 | sta->sta.supp_rates[local->hw.conf.channel->band] = rates; | 269 | sta->sta.supp_rates[local->hw.conf.channel->band] = rates; |
262 | if (peer_accepting_plinks && sta->plink_state == PLINK_LISTEN && | 270 | if (mesh_peer_accepts_plinks(elems) && |
271 | sta->plink_state == NL80211_PLINK_LISTEN && | ||
263 | sdata->u.mesh.accepting_plinks && | 272 | sdata->u.mesh.accepting_plinks && |
264 | sdata->u.mesh.mshcfg.auto_open_plinks) | 273 | sdata->u.mesh.mshcfg.auto_open_plinks) |
265 | mesh_plink_open(sta); | 274 | mesh_plink_open(sta); |
@@ -299,8 +308,8 @@ static void mesh_plink_timer(unsigned long data) | |||
299 | sdata = sta->sdata; | 308 | sdata = sta->sdata; |
300 | 309 | ||
301 | switch (sta->plink_state) { | 310 | switch (sta->plink_state) { |
302 | case PLINK_OPN_RCVD: | 311 | case NL80211_PLINK_OPN_RCVD: |
303 | case PLINK_OPN_SNT: | 312 | case NL80211_PLINK_OPN_SNT: |
304 | /* retry timer */ | 313 | /* retry timer */ |
305 | if (sta->plink_retries < dot11MeshMaxRetries(sdata)) { | 314 | if (sta->plink_retries < dot11MeshMaxRetries(sdata)) { |
306 | u32 rand; | 315 | u32 rand; |
@@ -319,17 +328,17 @@ static void mesh_plink_timer(unsigned long data) | |||
319 | } | 328 | } |
320 | reason = cpu_to_le16(MESH_MAX_RETRIES); | 329 | reason = cpu_to_le16(MESH_MAX_RETRIES); |
321 | /* fall through on else */ | 330 | /* fall through on else */ |
322 | case PLINK_CNF_RCVD: | 331 | case NL80211_PLINK_CNF_RCVD: |
323 | /* confirm timer */ | 332 | /* confirm timer */ |
324 | if (!reason) | 333 | if (!reason) |
325 | reason = cpu_to_le16(MESH_CONFIRM_TIMEOUT); | 334 | reason = cpu_to_le16(MESH_CONFIRM_TIMEOUT); |
326 | sta->plink_state = PLINK_HOLDING; | 335 | sta->plink_state = NL80211_PLINK_HOLDING; |
327 | mod_plink_timer(sta, dot11MeshHoldingTimeout(sdata)); | 336 | mod_plink_timer(sta, dot11MeshHoldingTimeout(sdata)); |
328 | spin_unlock_bh(&sta->lock); | 337 | spin_unlock_bh(&sta->lock); |
329 | mesh_plink_frame_tx(sdata, PLINK_CLOSE, sta->sta.addr, llid, plid, | 338 | mesh_plink_frame_tx(sdata, PLINK_CLOSE, sta->sta.addr, llid, plid, |
330 | reason); | 339 | reason); |
331 | break; | 340 | break; |
332 | case PLINK_HOLDING: | 341 | case NL80211_PLINK_HOLDING: |
333 | /* holding timer */ | 342 | /* holding timer */ |
334 | del_timer(&sta->plink_timer); | 343 | del_timer(&sta->plink_timer); |
335 | mesh_plink_fsm_restart(sta); | 344 | mesh_plink_fsm_restart(sta); |
@@ -371,14 +380,17 @@ int mesh_plink_open(struct sta_info *sta) | |||
371 | __le16 llid; | 380 | __le16 llid; |
372 | struct ieee80211_sub_if_data *sdata = sta->sdata; | 381 | struct ieee80211_sub_if_data *sdata = sta->sdata; |
373 | 382 | ||
383 | if (!test_sta_flags(sta, WLAN_STA_AUTH)) | ||
384 | return -EPERM; | ||
385 | |||
374 | spin_lock_bh(&sta->lock); | 386 | spin_lock_bh(&sta->lock); |
375 | get_random_bytes(&llid, 2); | 387 | get_random_bytes(&llid, 2); |
376 | sta->llid = llid; | 388 | sta->llid = llid; |
377 | if (sta->plink_state != PLINK_LISTEN) { | 389 | if (sta->plink_state != NL80211_PLINK_LISTEN) { |
378 | spin_unlock_bh(&sta->lock); | 390 | spin_unlock_bh(&sta->lock); |
379 | return -EBUSY; | 391 | return -EBUSY; |
380 | } | 392 | } |
381 | sta->plink_state = PLINK_OPN_SNT; | 393 | sta->plink_state = NL80211_PLINK_OPN_SNT; |
382 | mesh_plink_timer_set(sta, dot11MeshRetryTimeout(sdata)); | 394 | mesh_plink_timer_set(sta, dot11MeshRetryTimeout(sdata)); |
383 | spin_unlock_bh(&sta->lock); | 395 | spin_unlock_bh(&sta->lock); |
384 | mpl_dbg("Mesh plink: starting establishment with %pM\n", | 396 | mpl_dbg("Mesh plink: starting establishment with %pM\n", |
@@ -395,7 +407,7 @@ void mesh_plink_block(struct sta_info *sta) | |||
395 | 407 | ||
396 | spin_lock_bh(&sta->lock); | 408 | spin_lock_bh(&sta->lock); |
397 | deactivated = __mesh_plink_deactivate(sta); | 409 | deactivated = __mesh_plink_deactivate(sta); |
398 | sta->plink_state = PLINK_BLOCKED; | 410 | sta->plink_state = NL80211_PLINK_BLOCKED; |
399 | spin_unlock_bh(&sta->lock); | 411 | spin_unlock_bh(&sta->lock); |
400 | 412 | ||
401 | if (deactivated) | 413 | if (deactivated) |
@@ -412,19 +424,19 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
412 | enum plink_event event; | 424 | enum plink_event event; |
413 | enum plink_frame_type ftype; | 425 | enum plink_frame_type ftype; |
414 | size_t baselen; | 426 | size_t baselen; |
415 | bool deactivated; | 427 | bool deactivated, matches_local = true; |
416 | u8 ie_len; | 428 | u8 ie_len; |
417 | u8 *baseaddr; | 429 | u8 *baseaddr; |
418 | __le16 plid, llid, reason; | 430 | __le16 plid, llid, reason; |
419 | #ifdef CONFIG_MAC80211_VERBOSE_MPL_DEBUG | 431 | #ifdef CONFIG_MAC80211_VERBOSE_MPL_DEBUG |
420 | static const char *mplstates[] = { | 432 | static const char *mplstates[] = { |
421 | [PLINK_LISTEN] = "LISTEN", | 433 | [NL80211_PLINK_LISTEN] = "LISTEN", |
422 | [PLINK_OPN_SNT] = "OPN-SNT", | 434 | [NL80211_PLINK_OPN_SNT] = "OPN-SNT", |
423 | [PLINK_OPN_RCVD] = "OPN-RCVD", | 435 | [NL80211_PLINK_OPN_RCVD] = "OPN-RCVD", |
424 | [PLINK_CNF_RCVD] = "CNF_RCVD", | 436 | [NL80211_PLINK_CNF_RCVD] = "CNF_RCVD", |
425 | [PLINK_ESTAB] = "ESTAB", | 437 | [NL80211_PLINK_ESTAB] = "ESTAB", |
426 | [PLINK_HOLDING] = "HOLDING", | 438 | [NL80211_PLINK_HOLDING] = "HOLDING", |
427 | [PLINK_BLOCKED] = "BLOCKED" | 439 | [NL80211_PLINK_BLOCKED] = "BLOCKED" |
428 | }; | 440 | }; |
429 | #endif | 441 | #endif |
430 | 442 | ||
@@ -448,6 +460,11 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
448 | mpl_dbg("Mesh plink: missing necessary peer link ie\n"); | 460 | mpl_dbg("Mesh plink: missing necessary peer link ie\n"); |
449 | return; | 461 | return; |
450 | } | 462 | } |
463 | if (elems.rsn_len && | ||
464 | sdata->u.mesh.security == IEEE80211_MESH_SEC_NONE) { | ||
465 | mpl_dbg("Mesh plink: can't establish link with secure peer\n"); | ||
466 | return; | ||
467 | } | ||
451 | 468 | ||
452 | ftype = mgmt->u.action.u.plink_action.action_code; | 469 | ftype = mgmt->u.action.u.plink_action.action_code; |
453 | ie_len = elems.peer_link_len; | 470 | ie_len = elems.peer_link_len; |
@@ -479,7 +496,13 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
479 | return; | 496 | return; |
480 | } | 497 | } |
481 | 498 | ||
482 | if (sta && sta->plink_state == PLINK_BLOCKED) { | 499 | if (sta && !test_sta_flags(sta, WLAN_STA_AUTH)) { |
500 | mpl_dbg("Mesh plink: Action frame from non-authed peer\n"); | ||
501 | rcu_read_unlock(); | ||
502 | return; | ||
503 | } | ||
504 | |||
505 | if (sta && sta->plink_state == NL80211_PLINK_BLOCKED) { | ||
483 | rcu_read_unlock(); | 506 | rcu_read_unlock(); |
484 | return; | 507 | return; |
485 | } | 508 | } |
@@ -487,6 +510,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
487 | /* Now we will figure out the appropriate event... */ | 510 | /* Now we will figure out the appropriate event... */ |
488 | event = PLINK_UNDEFINED; | 511 | event = PLINK_UNDEFINED; |
489 | if (ftype != PLINK_CLOSE && (!mesh_matches_local(&elems, sdata))) { | 512 | if (ftype != PLINK_CLOSE && (!mesh_matches_local(&elems, sdata))) { |
513 | matches_local = false; | ||
490 | switch (ftype) { | 514 | switch (ftype) { |
491 | case PLINK_OPEN: | 515 | case PLINK_OPEN: |
492 | event = OPN_RJCT; | 516 | event = OPN_RJCT; |
@@ -498,7 +522,15 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
498 | /* avoid warning */ | 522 | /* avoid warning */ |
499 | break; | 523 | break; |
500 | } | 524 | } |
501 | spin_lock_bh(&sta->lock); | 525 | } |
526 | |||
527 | if (!sta && !matches_local) { | ||
528 | rcu_read_unlock(); | ||
529 | reason = cpu_to_le16(MESH_CAPABILITY_POLICY_VIOLATION); | ||
530 | llid = 0; | ||
531 | mesh_plink_frame_tx(sdata, PLINK_CLOSE, mgmt->sa, llid, | ||
532 | plid, reason); | ||
533 | return; | ||
502 | } else if (!sta) { | 534 | } else if (!sta) { |
503 | /* ftype == PLINK_OPEN */ | 535 | /* ftype == PLINK_OPEN */ |
504 | u32 rates; | 536 | u32 rates; |
@@ -522,7 +554,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
522 | } | 554 | } |
523 | event = OPN_ACPT; | 555 | event = OPN_ACPT; |
524 | spin_lock_bh(&sta->lock); | 556 | spin_lock_bh(&sta->lock); |
525 | } else { | 557 | } else if (matches_local) { |
526 | spin_lock_bh(&sta->lock); | 558 | spin_lock_bh(&sta->lock); |
527 | switch (ftype) { | 559 | switch (ftype) { |
528 | case PLINK_OPEN: | 560 | case PLINK_OPEN: |
@@ -540,7 +572,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
540 | event = CNF_ACPT; | 572 | event = CNF_ACPT; |
541 | break; | 573 | break; |
542 | case PLINK_CLOSE: | 574 | case PLINK_CLOSE: |
543 | if (sta->plink_state == PLINK_ESTAB) | 575 | if (sta->plink_state == NL80211_PLINK_ESTAB) |
544 | /* Do not check for llid or plid. This does not | 576 | /* Do not check for llid or plid. This does not |
545 | * follow the standard but since multiple plinks | 577 | * follow the standard but since multiple plinks |
546 | * per sta are not supported, it is necessary in | 578 | * per sta are not supported, it is necessary in |
@@ -564,6 +596,8 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
564 | rcu_read_unlock(); | 596 | rcu_read_unlock(); |
565 | return; | 597 | return; |
566 | } | 598 | } |
599 | } else { | ||
600 | spin_lock_bh(&sta->lock); | ||
567 | } | 601 | } |
568 | 602 | ||
569 | mpl_dbg("Mesh plink (peer, state, llid, plid, event): %pM %s %d %d %d\n", | 603 | mpl_dbg("Mesh plink (peer, state, llid, plid, event): %pM %s %d %d %d\n", |
@@ -573,14 +607,14 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
573 | reason = 0; | 607 | reason = 0; |
574 | switch (sta->plink_state) { | 608 | switch (sta->plink_state) { |
575 | /* spin_unlock as soon as state is updated at each case */ | 609 | /* spin_unlock as soon as state is updated at each case */ |
576 | case PLINK_LISTEN: | 610 | case NL80211_PLINK_LISTEN: |
577 | switch (event) { | 611 | switch (event) { |
578 | case CLS_ACPT: | 612 | case CLS_ACPT: |
579 | mesh_plink_fsm_restart(sta); | 613 | mesh_plink_fsm_restart(sta); |
580 | spin_unlock_bh(&sta->lock); | 614 | spin_unlock_bh(&sta->lock); |
581 | break; | 615 | break; |
582 | case OPN_ACPT: | 616 | case OPN_ACPT: |
583 | sta->plink_state = PLINK_OPN_RCVD; | 617 | sta->plink_state = NL80211_PLINK_OPN_RCVD; |
584 | sta->plid = plid; | 618 | sta->plid = plid; |
585 | get_random_bytes(&llid, 2); | 619 | get_random_bytes(&llid, 2); |
586 | sta->llid = llid; | 620 | sta->llid = llid; |
@@ -597,7 +631,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
597 | } | 631 | } |
598 | break; | 632 | break; |
599 | 633 | ||
600 | case PLINK_OPN_SNT: | 634 | case NL80211_PLINK_OPN_SNT: |
601 | switch (event) { | 635 | switch (event) { |
602 | case OPN_RJCT: | 636 | case OPN_RJCT: |
603 | case CNF_RJCT: | 637 | case CNF_RJCT: |
@@ -606,7 +640,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
606 | if (!reason) | 640 | if (!reason) |
607 | reason = cpu_to_le16(MESH_CLOSE_RCVD); | 641 | reason = cpu_to_le16(MESH_CLOSE_RCVD); |
608 | sta->reason = reason; | 642 | sta->reason = reason; |
609 | sta->plink_state = PLINK_HOLDING; | 643 | sta->plink_state = NL80211_PLINK_HOLDING; |
610 | if (!mod_plink_timer(sta, | 644 | if (!mod_plink_timer(sta, |
611 | dot11MeshHoldingTimeout(sdata))) | 645 | dot11MeshHoldingTimeout(sdata))) |
612 | sta->ignore_plink_timer = true; | 646 | sta->ignore_plink_timer = true; |
@@ -618,7 +652,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
618 | break; | 652 | break; |
619 | case OPN_ACPT: | 653 | case OPN_ACPT: |
620 | /* retry timer is left untouched */ | 654 | /* retry timer is left untouched */ |
621 | sta->plink_state = PLINK_OPN_RCVD; | 655 | sta->plink_state = NL80211_PLINK_OPN_RCVD; |
622 | sta->plid = plid; | 656 | sta->plid = plid; |
623 | llid = sta->llid; | 657 | llid = sta->llid; |
624 | spin_unlock_bh(&sta->lock); | 658 | spin_unlock_bh(&sta->lock); |
@@ -626,7 +660,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
626 | plid, 0); | 660 | plid, 0); |
627 | break; | 661 | break; |
628 | case CNF_ACPT: | 662 | case CNF_ACPT: |
629 | sta->plink_state = PLINK_CNF_RCVD; | 663 | sta->plink_state = NL80211_PLINK_CNF_RCVD; |
630 | if (!mod_plink_timer(sta, | 664 | if (!mod_plink_timer(sta, |
631 | dot11MeshConfirmTimeout(sdata))) | 665 | dot11MeshConfirmTimeout(sdata))) |
632 | sta->ignore_plink_timer = true; | 666 | sta->ignore_plink_timer = true; |
@@ -639,7 +673,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
639 | } | 673 | } |
640 | break; | 674 | break; |
641 | 675 | ||
642 | case PLINK_OPN_RCVD: | 676 | case NL80211_PLINK_OPN_RCVD: |
643 | switch (event) { | 677 | switch (event) { |
644 | case OPN_RJCT: | 678 | case OPN_RJCT: |
645 | case CNF_RJCT: | 679 | case CNF_RJCT: |
@@ -648,7 +682,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
648 | if (!reason) | 682 | if (!reason) |
649 | reason = cpu_to_le16(MESH_CLOSE_RCVD); | 683 | reason = cpu_to_le16(MESH_CLOSE_RCVD); |
650 | sta->reason = reason; | 684 | sta->reason = reason; |
651 | sta->plink_state = PLINK_HOLDING; | 685 | sta->plink_state = NL80211_PLINK_HOLDING; |
652 | if (!mod_plink_timer(sta, | 686 | if (!mod_plink_timer(sta, |
653 | dot11MeshHoldingTimeout(sdata))) | 687 | dot11MeshHoldingTimeout(sdata))) |
654 | sta->ignore_plink_timer = true; | 688 | sta->ignore_plink_timer = true; |
@@ -666,7 +700,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
666 | break; | 700 | break; |
667 | case CNF_ACPT: | 701 | case CNF_ACPT: |
668 | del_timer(&sta->plink_timer); | 702 | del_timer(&sta->plink_timer); |
669 | sta->plink_state = PLINK_ESTAB; | 703 | sta->plink_state = NL80211_PLINK_ESTAB; |
670 | spin_unlock_bh(&sta->lock); | 704 | spin_unlock_bh(&sta->lock); |
671 | mesh_plink_inc_estab_count(sdata); | 705 | mesh_plink_inc_estab_count(sdata); |
672 | ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON); | 706 | ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON); |
@@ -679,7 +713,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
679 | } | 713 | } |
680 | break; | 714 | break; |
681 | 715 | ||
682 | case PLINK_CNF_RCVD: | 716 | case NL80211_PLINK_CNF_RCVD: |
683 | switch (event) { | 717 | switch (event) { |
684 | case OPN_RJCT: | 718 | case OPN_RJCT: |
685 | case CNF_RJCT: | 719 | case CNF_RJCT: |
@@ -688,7 +722,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
688 | if (!reason) | 722 | if (!reason) |
689 | reason = cpu_to_le16(MESH_CLOSE_RCVD); | 723 | reason = cpu_to_le16(MESH_CLOSE_RCVD); |
690 | sta->reason = reason; | 724 | sta->reason = reason; |
691 | sta->plink_state = PLINK_HOLDING; | 725 | sta->plink_state = NL80211_PLINK_HOLDING; |
692 | if (!mod_plink_timer(sta, | 726 | if (!mod_plink_timer(sta, |
693 | dot11MeshHoldingTimeout(sdata))) | 727 | dot11MeshHoldingTimeout(sdata))) |
694 | sta->ignore_plink_timer = true; | 728 | sta->ignore_plink_timer = true; |
@@ -700,7 +734,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
700 | break; | 734 | break; |
701 | case OPN_ACPT: | 735 | case OPN_ACPT: |
702 | del_timer(&sta->plink_timer); | 736 | del_timer(&sta->plink_timer); |
703 | sta->plink_state = PLINK_ESTAB; | 737 | sta->plink_state = NL80211_PLINK_ESTAB; |
704 | spin_unlock_bh(&sta->lock); | 738 | spin_unlock_bh(&sta->lock); |
705 | mesh_plink_inc_estab_count(sdata); | 739 | mesh_plink_inc_estab_count(sdata); |
706 | ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON); | 740 | ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON); |
@@ -715,13 +749,13 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
715 | } | 749 | } |
716 | break; | 750 | break; |
717 | 751 | ||
718 | case PLINK_ESTAB: | 752 | case NL80211_PLINK_ESTAB: |
719 | switch (event) { | 753 | switch (event) { |
720 | case CLS_ACPT: | 754 | case CLS_ACPT: |
721 | reason = cpu_to_le16(MESH_CLOSE_RCVD); | 755 | reason = cpu_to_le16(MESH_CLOSE_RCVD); |
722 | sta->reason = reason; | 756 | sta->reason = reason; |
723 | deactivated = __mesh_plink_deactivate(sta); | 757 | deactivated = __mesh_plink_deactivate(sta); |
724 | sta->plink_state = PLINK_HOLDING; | 758 | sta->plink_state = NL80211_PLINK_HOLDING; |
725 | llid = sta->llid; | 759 | llid = sta->llid; |
726 | mod_plink_timer(sta, dot11MeshHoldingTimeout(sdata)); | 760 | mod_plink_timer(sta, dot11MeshHoldingTimeout(sdata)); |
727 | spin_unlock_bh(&sta->lock); | 761 | spin_unlock_bh(&sta->lock); |
@@ -741,7 +775,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m | |||
741 | break; | 775 | break; |
742 | } | 776 | } |
743 | break; | 777 | break; |
744 | case PLINK_HOLDING: | 778 | case NL80211_PLINK_HOLDING: |
745 | switch (event) { | 779 | switch (event) { |
746 | case CLS_ACPT: | 780 | case CLS_ACPT: |
747 | if (del_timer(&sta->plink_timer)) | 781 | if (del_timer(&sta->plink_timer)) |