{
struct ath_softc *sc = dev->priv;
struct ieee80211com *ic = &sc->sc_ic;
+ struct ath_diag ad;
int error;
ATH_LOCK(sc);
error = 0;
break;
case SIOCGATHDIAG:
+ return -EOPNOTSUPP;
+ break;
+ case SIOCGATHHALDIAG:
if (!capable(CAP_NET_ADMIN))
error = -EPERM;
+ else if (copy_from_user(&ad, ifr->ifr_data, sizeof(ad)))
+ error = -EFAULT;
else
- error = ath_ioctl_diag(sc, (struct ath_diag *)ifr);
+ error = ath_ioctl_diag(sc, &ad);
break;
case SIOCETHTOOL:
if (copy_from_user(&cmd, ifr->ifr_data, sizeof(cmd)))
error = ieee80211_ioctl_create_vap(ic, ifr, dev);
break;
default:
- error = -EINVAL;
+ error = -EOPNOTSUPP;
break;
}
ATH_UNLOCK(sc);