return -EOPNOTSUPP;
 
        /* Just do it */
-       memcpy(&(spydata->spy_thr_low), &(threshold->low),
-              2 * sizeof(struct iw_quality));
+       spydata->spy_thr_low = threshold->low;
+       spydata->spy_thr_high = threshold->high;
 
        /* Clear flag */
        memset(spydata->spy_thr_under, '\0', sizeof(spydata->spy_thr_under));
                return -EOPNOTSUPP;
 
        /* Just do it */
-       memcpy(&(threshold->low), &(spydata->spy_thr_low),
-              2 * sizeof(struct iw_quality));
+       threshold->low = spydata->spy_thr_low;
+       threshold->high = spydata->spy_thr_high;
 
        return 0;
 }
        memcpy(threshold.addr.sa_data, address, ETH_ALEN);
        threshold.addr.sa_family = ARPHRD_ETHER;
        /* Copy stats */
-       memcpy(&(threshold.qual), wstats, sizeof(struct iw_quality));
+       threshold.qual = *wstats;
        /* Copy also thresholds */
-       memcpy(&(threshold.low), &(spydata->spy_thr_low),
-              2 * sizeof(struct iw_quality));
+       threshold.low = spydata->spy_thr_low;
+       threshold.high = spydata->spy_thr_high;
 
        /* Send event to user space */
        wireless_send_event(dev, SIOCGIWTHRSPY, &wrqu, (char *) &threshold);