do { \
ERR_SET_EXT(rname, request); \
fprintf(stderr, " too few arguments.\n"); \
- return; \
} while(0)
#define ABORT_ARG_TYPE(rname, request, arg) \
do { \
ERR_SET_EXT(rname, request); \
fprintf(stderr, " invalid argument \"%s\".\n", arg); \
- return; \
} while(0)
#define ABORT_ARG_SIZE(rname, request, max) \
do { \
ERR_SET_EXT(rname, request); \
fprintf(stderr, " argument too big (max %d)\n", max); \
- return; \
} while(0)
/*------------------------------------------------------------------*/
ERR_SET_EXT(rname, request); \
fprintf(stderr, " SET failed on device %-1.16s ; %s.\n", \
ifname, strerror(errno)); \
- return; \
} } while(0)
/*------------------------------------------------------------------*/
ERR_SET_EXT(rname, request); \
fprintf(stderr, " GET failed on device %-1.16s ; %s.\n", \
ifname, strerror(errno)); \
- return; \
} } while(0)
char *prefix;
strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
ret = ioctl(skfd, SIOCDEVPRIVATE, &ifr);
- if (ret < 0)
- fprintf(stderr, "bcom_ioctl [cmd=%d, buf=%08x, len=%d] failed: %d\n", cmd, buf, len, ret);
return ret;
}
bcom_ioctl(skfd, ifname, WLC_DOWN, NULL, 0);
- /* Set up WPA */
- if (nvram_match(wl_var("crypto"), "tkip"))
- val = TKIP_ENABLED;
- else if (nvram_match(wl_var("crypto"), "aes"))
- val = AES_ENABLED;
- else if (nvram_match(wl_var("crypto"), "tkip+aes"))
- val = TKIP_ENABLED | AES_ENABLED;
- else
- val = 0;
- bcom_ioctl(skfd, ifname, WLC_SET_WSEC, &val, sizeof(val));
-
- if (val && nvram_get(wl_var("wpa_psk"))) {
- val = 1;
- bcom_ioctl(skfd, ifname, WLC_SET_EAP_RESTRICT, &val, sizeof(val));
+ if (nvram_match(wl_var("auth_mode"), "wpa") || nvram_match(wl_var("auth_mode"), "psk") || (nvram_get(wl_var("akm")) && !nvram_disabled(wl_var("akm")))) {
+ /* Set up WPA */
+ if (nvram_match(wl_var("crypto"), "tkip"))
+ val = TKIP_ENABLED;
+ else if (nvram_match(wl_var("crypto"), "aes"))
+ val = AES_ENABLED;
+ else if (nvram_match(wl_var("crypto"), "tkip+aes"))
+ val = TKIP_ENABLED | AES_ENABLED;
+ else
+ val = 0;
+ bcom_ioctl(skfd, ifname, WLC_SET_WSEC, &val, sizeof(val));
+
+ if (val && nvram_get(wl_var("wpa_psk"))) {
+ val = 1;
+ bcom_ioctl(skfd, ifname, WLC_SET_EAP_RESTRICT, &val, sizeof(val));
+ }
}
/* Set up afterburner */
int override = WLC_G_PROTECTION_OFF;
int control = WLC_G_PROTECTION_CTL_OFF;
- val = atoi(nvram_safe_get(wl_var("gmode")));
+ if (v = nvram_get(wl_var("gmode")))
+ val = atoi(v);
+ else
+ val = 1;
+
if (val > 5)
val = 1;
+
bcom_ioctl(skfd, ifname, WLC_SET_GMODE, &val, sizeof(val));
if (nvram_match(wl_var("gmode_protection"), "auto")) {
}
bcom_ioctl(skfd, ifname, WLC_SET_GMODE_PROTECTION_CONTROL, &override, sizeof(control));
bcom_ioctl(skfd, ifname, WLC_SET_GMODE_PROTECTION_OVERRIDE, &override, sizeof(override));
+
+ if (val = 0) {
+ if (nvram_match(wl_var("plcphdr"), "long"))
+ val = WLC_PLCP_AUTO;
+ else
+ val = WLC_PLCP_SHORT;
+
+ bcom_ioctl(skfd, ifname, WLC_SET_PLCPHDR, &val, sizeof(val));
+ }
}
+
}
void set_wext_ssid(int skfd, char *ifname)
wrq.u.txpower.value = -1;
wrq.u.txpower.fixed = 1;
- wrq.u.txpower.flags = IW_TXPOW_MWATT;
+ wrq.u.txpower.flags = IW_TXPOW_DBM;
IW_SET_EXT_ERR(skfd, ifname, SIOCSIWTXPOW, &wrq, "Set Tx Power");
/* Set up WEP */