diff options
Diffstat (limited to 'net/mac80211/ieee80211_ioctl.c')
-rw-r--r-- | net/mac80211/ieee80211_ioctl.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/net/mac80211/ieee80211_ioctl.c b/net/mac80211/ieee80211_ioctl.c index 5147152b9268..1d91575a0fe9 100644 --- a/net/mac80211/ieee80211_ioctl.c +++ b/net/mac80211/ieee80211_ioctl.c | |||
@@ -468,10 +468,20 @@ static int ieee80211_ioctl_siwap(struct net_device *dev, | |||
468 | ieee80211_sta_req_auth(dev, &sdata->u.sta); | 468 | ieee80211_sta_req_auth(dev, &sdata->u.sta); |
469 | return 0; | 469 | return 0; |
470 | } else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) { | 470 | } else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) { |
471 | if (memcmp(sdata->u.wds.remote_addr, (u8 *) &ap_addr->sa_data, | 471 | /* |
472 | ETH_ALEN) == 0) | 472 | * If it is necessary to update the WDS peer address |
473 | return 0; | 473 | * while the interface is running, then we need to do |
474 | return ieee80211_if_update_wds(dev, (u8 *) &ap_addr->sa_data); | 474 | * more work here, namely if it is running we need to |
475 | * add a new and remove the old STA entry, this is | ||
476 | * normally handled by _open() and _stop(). | ||
477 | */ | ||
478 | if (netif_running(dev)) | ||
479 | return -EBUSY; | ||
480 | |||
481 | memcpy(&sdata->u.wds.remote_addr, (u8 *) &ap_addr->sa_data, | ||
482 | ETH_ALEN); | ||
483 | |||
484 | return 0; | ||
475 | } | 485 | } |
476 | 486 | ||
477 | return -EOPNOTSUPP; | 487 | return -EOPNOTSUPP; |