+ int power;
+ int ismwatt = 0;
+
+ /* Get the value */
+ if(sscanf(args[i], "%i", &(power)) != 1)
+ ABORT_ARG_TYPE("Set Tx Power", SIOCSIWTXPOW,
+ args[i]);
+
+ /* Check if milliwatt */
+ ismwatt = (index(args[i], 'm') != NULL);
+
+ /* Convert */
+ if(range.txpower_capa & IW_TXPOW_RELATIVE)
+ {
+ /* Can't convert */
+ if(ismwatt)
+ ABORT_ARG_TYPE("Set Tx Power",
+ SIOCSIWTXPOW,
+ args[i]);
+ }
+ else
+ if(range.txpower_capa & IW_TXPOW_MWATT)
+ {
+ if(!ismwatt)
+ power = iw_dbm2mwatt(power);
+ wrq.u.txpower.flags = IW_TXPOW_MWATT;
+ }
+ else
+ {
+ if(ismwatt)
+ power = iw_mwatt2dbm(power);
+ wrq.u.txpower.flags = IW_TXPOW_DBM;
+ }
+ wrq.u.txpower.value = power;
+
+ /* Check for an additional argument */
+ if(((i+1) < count) &&
+ (!strcasecmp(args[i+1], "auto")))
+ {
+ wrq.u.txpower.fixed = 0;
+ ++i;
+ }
+ if(((i+1) < count) &&
+ (!strcasecmp(args[i+1], "fixed")))
+ {
+ wrq.u.txpower.fixed = 1;
+ ++i;
+ }