Hi,
sorry for the long delay.
On Mon, 28 Aug 2006 13:45:18 -0700, mabbas wrote:
> [...]
> +static int ieee80211_ioctl_siwtxpow(struct net_device *dev,
> + struct iw_request_info *info,
> + union iwreq_data *wrqu,
> + char *extra)
> +{
> + int rc = 0;
> + struct ieee80211_conf *conf = ieee80211_get_hw_conf(dev);
> +
> + if (wrqu->txpower.flags != IW_TXPOW_DBM)
> + rc = -EINVAL;
> + else
> + conf->power_level = wrqu->txpower.value;
> +
> +
> + ieee80211_ioctl_set_radio_enabled(dev, !wrqu->txpower.disabled);
Expecting implicit call of ieee80211_hw_config in
ieee80211_ioctl_set_radio_enabled doesn't look like a good idea. If the
latter function is changed (to call hw_config only if the radio_enabled
field isn't the same as before), the SIOCSIWTXPOW ioctl won't have any
effect.
I'd prefer setting conf->radio_enabled directly and calling of
ieee80211_hw_config explicitly.
Also, always double check that you do error handling correctly (functions
usually return something on purpose). (Hm, I already told you in this
specific case. Please also double check that you haven't missed any comment
before resending patches.)
> + return rc;
> +}
> +
> +static int ieee80211_ioctl_siwpower(struct net_device *dev,
> + struct iw_request_info *info,
> + union iwreq_data *wrqu,
> + char *extra)
> +{
> + struct ieee80211_conf *conf = ieee80211_get_hw_conf(dev);
> +
> + if (wrqu->power.disabled) {
> + conf->power_management_enable = 0;
> + if (ieee80211_hw_config(dev))
> + return -EINVAL;
> + return 0;
This is wrong. Return the error code you've got from ieee80211_hw_config.
> + }
> +
> + if (wrqu->power.flags & IW_POWER_TYPE)
> + return -EINVAL;
> +
> + switch (wrqu->power.flags & IW_POWER_MODE) {
> + case IW_POWER_ON: /* If not specified */
> + case IW_POWER_MODE: /* If set all mask */
> + case IW_POWER_ALL_R: /* If explicitely state all */
> + break;
> + default: /* Otherwise we don't support it */
> + return -EINVAL;
> + }
> +
> + conf->power_management_enable = 1;
> +
> + if (ieee80211_hw_config(dev))
> + return -EINVAL;
Ditto.
Thanks,
Jiri
--
Jiri Benc
SUSE Labs
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html