diff --git a/ChangeLog b/ChangeLog index 9b85af5914..ca1f426571 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-10-12 Dan Williams + + * src/NetworkManagerDevice.c + - Force wireless cards into Infrastructure mode before we use them + 2004-10-12 Dan Williams * TODO diff --git a/src/NetworkManagerDevice.c b/src/NetworkManagerDevice.c index c2278ef58b..0678466a4d 100644 --- a/src/NetworkManagerDevice.c +++ b/src/NetworkManagerDevice.c @@ -1203,8 +1203,23 @@ static gboolean nm_device_activate_wireless (NMDevice *dev, guint *bad_crypt_pac /* If there is a desired AP to connect to, use that essid and possible WEP key */ if ((best_ap = nm_device_get_best_ap (dev)) && nm_ap_get_essid (best_ap)) { + int sk; + struct iwreq wreq; + nm_device_bring_down (dev); + /* Force the card into Managed/Infrastructure mode */ + sk = iw_sockets_open (); + if (sk >= 0) + { + int err; + wreq.u.mode = IW_MODE_INFRA; + err = iw_set_ext (sk, nm_device_get_iface (dev), SIOCSIWMODE, &wreq); + if (err == -1) + syslog (LOG_ERR, "nm_device_activate_wireless(%s): error setting card to Infrastructure mode. errno = %d", nm_device_get_iface (dev), errno); + close (sk); + } + /* Disable encryption, then re-enable and set correct key on the card * if we are going to encrypt traffic. */