iwconfig relies on what mac80211 returned to display the retry info when it sets retry->flag = 0. So we can't just return -EINVAL when retry->flag == 0. Signed-off-by: Hong Liu <hong.liu@xxxxxxxxx> --- net/mac80211/ieee80211_ioctl.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) bd08dec1012d17f66af6fd0170dce870cce34ab6 diff --git a/net/mac80211/ieee80211_ioctl.c b/net/mac80211/ieee80211_ioctl.c index aa8b789..f57e48f 100644 --- a/net/mac80211/ieee80211_ioctl.c +++ b/net/mac80211/ieee80211_ioctl.c @@ -2176,16 +2176,18 @@ static int ieee80211_ioctl_giwretry(stru struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); retry->disabled = 0; - if ((retry->flags & IW_RETRY_TYPE) != IW_RETRY_LIMIT) - return -EINVAL; - if (retry->flags & IW_RETRY_MAX) { - retry->flags = IW_RETRY_LIMIT | IW_RETRY_MAX; - retry->value = local->long_retry_limit; - } else { - retry->flags = IW_RETRY_LIMIT; + if (retry->flags == 0 || retry->flags & IW_RETRY_MIN) { + /* first return min value, iwconfig will ask max value + * later if needed */ + retry->flags |= IW_RETRY_LIMIT; retry->value = local->short_retry_limit; if (local->long_retry_limit != local->short_retry_limit) retry->flags |= IW_RETRY_MIN; + return 0; + } + if (retry->flags & IW_RETRY_MAX) { + retry->flags = IW_RETRY_LIMIT | IW_RETRY_MAX; + retry->value = local->long_retry_limit; } return 0; -- 1.3.3 On Fri, 2007-03-23 at 19:11 +0100, Jiri Benc wrote: > On Fri, 16 Mar 2007 11:28:29 +0800, Hong Liu wrote: > > Signed-off-by: Hong Liu <hong.liu@xxxxxxxxx> > > Please add a description what the patch does. > > Thanks, > > Jiri > - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html