On Mon, 2018-10-15 at 23:27 +0530, Tamizh chelvam wrote: > > + sta_mon_rssi_config_free(sta); > + sta->rssi_hyst = rssi_hyst; > + if (fixed_thold) { > + if (n_rssi_tholds > 2) { > + ret = -EINVAL; > + goto out; > + } This might be slightly wrong, you free and then can still return an error. > + if (n_rssi_tholds == 1) { > + sta->rssi_low = rssi_tholds[0]; > + sta->rssi_high = rssi_tholds[0]; > + } else { > + sta->rssi_low = rssi_tholds[0]; > + sta->rssi_high = rssi_tholds[1]; > + } > + } else { > + const s32 *rssi_tholds; > + > + rssi_tholds = kmemdup(rssi_tholds, > + n_rssi_tholds * sizeof(s32), > + GFP_KERNEL); > + if (!rssi_tholds) { > + ret = -ENOMEM; > + goto out; > + } Similarly here, I guess you should do the allocation (and other error checking) before freeing. > + sta->rssi_tholds = rssi_tholds; > + sta->n_rssi_tholds = n_rssi_tholds; > + ieee80211_update_rssi_config(sta); > +struct sta_mon_rssi_config { > +}; Huh? The commit log also makes it sounds like mac80211 actually *supports* this, but clearly that's not the case. However you don't give any data to the driver either, did you lose a patch along the way? Previously you had patch 5 ("mac80211: Implement functionality to monitor station's rssi cross event") and if I remember correctly I said you should squash some, but now that's not here? johannes