wrqu->txpower.flags = IW_TXPOW_MWATT;
                        break;
                }
+               case SIOCSIWTXPOW:
+               {
+                       if (wrqu->txpower.flags != IW_TXPOW_MWATT) {
+                               err = -EINVAL;
+                       } else {
+                               wl_ioctl(dev, WLC_SET_TXPWR, &wrqu->txpower.value, sizeof(int));
+                       }
+               }
                case SIOCGIWENCODE:
                {
                        wrqu->data.flags = IW_ENCODE_DISABLED;
        wlcompat_ioctl,         /* SIOCGIWRTS */
        NULL,                   /* SIOCSIWFRAG */
        wlcompat_ioctl,         /* SIOCGIWFRAG */
-       NULL,                   /* SIOCSIWTXPOW */
+       wlcompat_ioctl,         /* SIOCSIWTXPOW */
        wlcompat_ioctl,         /* SIOCGIWTXPOW */
        NULL,                   /* SIOCSIWRETRY */
        NULL,                   /* SIOCGIWRETRY */