static int cfg80211_wext_giwap(struct net_device *dev, struct iw_request_info *info, struct sockaddr *ap_addr, char *extra) { struct wireless_dev *wdev = dev->ieee80211_ptr; switch (wdev->iftype) { case NL80211_IFTYPE_ADHOC: return cfg80211_ibss_wext_giwap(dev, info, ap_addr, extra); case NL80211_IFTYPE_STATION: return cfg80211_mgd_wext_giwap(dev, info, ap_addr, extra); case NL80211_IFTYPE_WDS: return cfg80211_wds_wext_giwap(dev, info, ap_addr, extra); default: return -EOPNOTSUPP; } }
static int iwm_wext_giwap(struct net_device *dev, struct iw_request_info *info, struct sockaddr *ap_addr, char *extra) { struct iwm_priv *iwm = ndev_to_iwm(dev); switch (iwm->conf.mode) { case UMAC_MODE_IBSS: return cfg80211_ibss_wext_giwap(dev, info, ap_addr, extra); case UMAC_MODE_BSS: if (test_bit(IWM_STATUS_ASSOCIATED, &iwm->status)) { ap_addr->sa_family = ARPHRD_ETHER; memcpy(&ap_addr->sa_data, iwm->bssid, ETH_ALEN); } else memset(&ap_addr->sa_data, 0, ETH_ALEN); break; default: return -EOPNOTSUPP; } return 0; }