- if ((probe = dlsym(iw, "nl80211_probe")) != NULL && probe(ifname))
- {
- iw_get_rate = dlsym(iw, "nl80211_get_bitrate");
- iw_get_rssi = dlsym(iw, "nl80211_get_signal");
- iw_get_noise = dlsym(iw, "nl80211_get_noise");
- }
- else if ((probe = dlsym(iw, "madwifi_probe")) != NULL && probe(ifname))
- {
- iw_get_rate = dlsym(iw, "madwifi_get_bitrate");
- iw_get_rssi = dlsym(iw, "madwifi_get_signal");
- iw_get_noise = dlsym(iw, "madwifi_get_noise");
- }
- else if ((probe = dlsym(iw, "wl_probe")) != NULL && probe(ifname))
- {
- iw_get_rate = dlsym(iw, "wl_get_bitrate");
- iw_get_rssi = dlsym(iw, "wl_get_signal");
- iw_get_noise = dlsym(iw, "wl_get_noise");
- }
- else
- {
+ probe = dlsym(iw, "iwinfo_backend");
+
+ if (!probe)
+ return 0;
+
+ backend = probe(ifname);
+
+ if (!backend)