aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/scan.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/wireless/scan.c')
-rw-r--r--net/wireless/scan.c40
1 files changed, 23 insertions, 17 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index e2d344ff6745..227d57b8dc41 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -217,7 +217,7 @@ static bool is_mesh(struct cfg80211_bss *a,
217 a->len_information_elements); 217 a->len_information_elements);
218 if (!ie) 218 if (!ie)
219 return false; 219 return false;
220 if (ie[1] != IEEE80211_MESH_CONFIG_LEN) 220 if (ie[1] != sizeof(struct ieee80211_meshconf_ie))
221 return false; 221 return false;
222 222
223 /* 223 /*
@@ -225,7 +225,8 @@ static bool is_mesh(struct cfg80211_bss *a,
225 * comparing since that may differ between stations taking 225 * comparing since that may differ between stations taking
226 * part in the same mesh. 226 * part in the same mesh.
227 */ 227 */
228 return memcmp(ie + 2, meshcfg, IEEE80211_MESH_CONFIG_LEN - 2) == 0; 228 return memcmp(ie + 2, meshcfg,
229 sizeof(struct ieee80211_meshconf_ie) - 2) == 0;
229} 230}
230 231
231static int cmp_bss(struct cfg80211_bss *a, 232static int cmp_bss(struct cfg80211_bss *a,
@@ -399,7 +400,7 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
399 res->pub.information_elements, 400 res->pub.information_elements,
400 res->pub.len_information_elements); 401 res->pub.len_information_elements);
401 if (!meshid || !meshcfg || 402 if (!meshid || !meshcfg ||
402 meshcfg[1] != IEEE80211_MESH_CONFIG_LEN) { 403 meshcfg[1] != sizeof(struct ieee80211_meshconf_ie)) {
403 /* bogus mesh */ 404 /* bogus mesh */
404 kref_put(&res->ref, bss_release); 405 kref_put(&res->ref, bss_release);
405 return NULL; 406 return NULL;
@@ -865,7 +866,7 @@ ieee80211_bss(struct wiphy *wiphy, struct iw_request_info *info,
865 break; 866 break;
866 case WLAN_EID_MESH_CONFIG: 867 case WLAN_EID_MESH_CONFIG:
867 ismesh = true; 868 ismesh = true;
868 if (ie[1] != IEEE80211_MESH_CONFIG_LEN) 869 if (ie[1] != sizeof(struct ieee80211_meshconf_ie))
869 break; 870 break;
870 buf = kmalloc(50, GFP_ATOMIC); 871 buf = kmalloc(50, GFP_ATOMIC);
871 if (!buf) 872 if (!buf)
@@ -873,35 +874,40 @@ ieee80211_bss(struct wiphy *wiphy, struct iw_request_info *info,
873 cfg = ie + 2; 874 cfg = ie + 2;
874 memset(&iwe, 0, sizeof(iwe)); 875 memset(&iwe, 0, sizeof(iwe));
875 iwe.cmd = IWEVCUSTOM; 876 iwe.cmd = IWEVCUSTOM;
876 sprintf(buf, "Mesh network (version %d)", cfg[0]); 877 sprintf(buf, "Mesh Network Path Selection Protocol ID: "
878 "0x%02X", cfg[0]);
877 iwe.u.data.length = strlen(buf); 879 iwe.u.data.length = strlen(buf);
878 current_ev = iwe_stream_add_point(info, current_ev, 880 current_ev = iwe_stream_add_point(info, current_ev,
879 end_buf, 881 end_buf,
880 &iwe, buf); 882 &iwe, buf);
881 sprintf(buf, "Path Selection Protocol ID: " 883 sprintf(buf, "Path Selection Metric ID: 0x%02X",
882 "0x%02X%02X%02X%02X", cfg[1], cfg[2], cfg[3], 884 cfg[1]);
883 cfg[4]);
884 iwe.u.data.length = strlen(buf); 885 iwe.u.data.length = strlen(buf);
885 current_ev = iwe_stream_add_point(info, current_ev, 886 current_ev = iwe_stream_add_point(info, current_ev,
886 end_buf, 887 end_buf,
887 &iwe, buf); 888 &iwe, buf);
888 sprintf(buf, "Path Selection Metric ID: " 889 sprintf(buf, "Congestion Control Mode ID: 0x%02X",
889 "0x%02X%02X%02X%02X", cfg[5], cfg[6], cfg[7], 890 cfg[2]);
890 cfg[8]);
891 iwe.u.data.length = strlen(buf); 891 iwe.u.data.length = strlen(buf);
892 current_ev = iwe_stream_add_point(info, current_ev, 892 current_ev = iwe_stream_add_point(info, current_ev,
893 end_buf, 893 end_buf,
894 &iwe, buf); 894 &iwe, buf);
895 sprintf(buf, "Congestion Control Mode ID: " 895 sprintf(buf, "Synchronization ID: 0x%02X", cfg[3]);
896 "0x%02X%02X%02X%02X", cfg[9], cfg[10],
897 cfg[11], cfg[12]);
898 iwe.u.data.length = strlen(buf); 896 iwe.u.data.length = strlen(buf);
899 current_ev = iwe_stream_add_point(info, current_ev, 897 current_ev = iwe_stream_add_point(info, current_ev,
900 end_buf, 898 end_buf,
901 &iwe, buf); 899 &iwe, buf);
902 sprintf(buf, "Channel Precedence: " 900 sprintf(buf, "Authentication ID: 0x%02X", cfg[4]);
903 "0x%02X%02X%02X%02X", cfg[13], cfg[14], 901 iwe.u.data.length = strlen(buf);
904 cfg[15], cfg[16]); 902 current_ev = iwe_stream_add_point(info, current_ev,
903 end_buf,
904 &iwe, buf);
905 sprintf(buf, "Formation Info: 0x%02X", cfg[5]);
906 iwe.u.data.length = strlen(buf);
907 current_ev = iwe_stream_add_point(info, current_ev,
908 end_buf,
909 &iwe, buf);
910 sprintf(buf, "Capabilities: 0x%02X", cfg[6]);
905 iwe.u.data.length = strlen(buf); 911 iwe.u.data.length = strlen(buf);
906 current_ev = iwe_stream_add_point(info, current_ev, 912 current_ev = iwe_stream_add_point(info, current_ev,
907 end_buf, 913 end_buf,