nl80211: Fix P2P group interface creating using P2P Device
When P2P Device is used as P2P management interface the creation of the P2P group interface fails because MAC address retrieval fails for the P2P Device interface. Signed-hostap: Arend van Spriel <arend@broadcom.com>
This commit is contained in:
parent
fa93de4059
commit
ab7a1addf2
1 changed files with 11 additions and 10 deletions
|
@ -9030,11 +9030,14 @@ static int wpa_driver_nl80211_if_add(void *priv, enum wpa_driver_if_type type,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!addr &&
|
if (!addr) {
|
||||||
linux_get_ifhwaddr(drv->global->ioctl_sock, bss->ifname,
|
if (drv->nlmode == NL80211_IFTYPE_P2P_DEVICE)
|
||||||
if_addr) < 0) {
|
os_memcpy(if_addr, bss->addr, ETH_ALEN);
|
||||||
nl80211_remove_iface(drv, ifidx);
|
else if (linux_get_ifhwaddr(drv->global->ioctl_sock,
|
||||||
return -1;
|
bss->ifname, if_addr) < 0) {
|
||||||
|
nl80211_remove_iface(drv, ifidx);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_P2P
|
#ifdef CONFIG_P2P
|
||||||
|
@ -9042,16 +9045,14 @@ static int wpa_driver_nl80211_if_add(void *priv, enum wpa_driver_if_type type,
|
||||||
(type == WPA_IF_P2P_CLIENT || type == WPA_IF_P2P_GROUP ||
|
(type == WPA_IF_P2P_CLIENT || type == WPA_IF_P2P_GROUP ||
|
||||||
type == WPA_IF_P2P_GO)) {
|
type == WPA_IF_P2P_GO)) {
|
||||||
/* Enforce unique P2P Interface Address */
|
/* Enforce unique P2P Interface Address */
|
||||||
u8 new_addr[ETH_ALEN], own_addr[ETH_ALEN];
|
u8 new_addr[ETH_ALEN];
|
||||||
|
|
||||||
if (linux_get_ifhwaddr(drv->global->ioctl_sock, bss->ifname,
|
if (linux_get_ifhwaddr(drv->global->ioctl_sock, ifname,
|
||||||
own_addr) < 0 ||
|
|
||||||
linux_get_ifhwaddr(drv->global->ioctl_sock, ifname,
|
|
||||||
new_addr) < 0) {
|
new_addr) < 0) {
|
||||||
nl80211_remove_iface(drv, ifidx);
|
nl80211_remove_iface(drv, ifidx);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (os_memcmp(own_addr, new_addr, ETH_ALEN) == 0) {
|
if (os_memcmp(if_addr, new_addr, ETH_ALEN) == 0) {
|
||||||
wpa_printf(MSG_DEBUG, "nl80211: Allocate new address "
|
wpa_printf(MSG_DEBUG, "nl80211: Allocate new address "
|
||||||
"for P2P group interface");
|
"for P2P group interface");
|
||||||
if (nl80211_p2p_interface_addr(drv, new_addr) < 0) {
|
if (nl80211_p2p_interface_addr(drv, new_addr) < 0) {
|
||||||
|
|
Loading…
Reference in a new issue