| .. | .. |
|---|
| 678 | 678 | struct dhd_pub *dhd = dhd_get_pub(dev); |
|---|
| 679 | 679 | struct iw_freq *fwrq = &wrqu->freq; |
|---|
| 680 | 680 | int error; |
|---|
| 681 | + u32 val; |
|---|
| 681 | 682 | chanspec_t chanspec = 0; |
|---|
| 682 | 683 | int ctl_chan; |
|---|
| 683 | 684 | |
|---|
| 684 | 685 | WL_TRACE(("%s: SIOCGIWFREQ\n", dev->name)); |
|---|
| 685 | 686 | |
|---|
| 686 | 687 | DHD_CHECK(dhd, dev); |
|---|
| 687 | | - if ((error = dev_wlc_intvar_get(dev, "chanspec", (s32 *)&chanspec))) |
|---|
| 688 | + if ((error = dev_wlc_intvar_get(dev, "chanspec", &val))) |
|---|
| 688 | 689 | return error; |
|---|
| 690 | + chanspec = val; |
|---|
| 689 | 691 | chanspec = wl_ext_chspec_driver_to_host(dhd, chanspec); |
|---|
| 690 | 692 | ctl_chan = wf_chspec_ctlchan(chanspec); |
|---|
| 691 | 693 | |
|---|
| .. | .. |
|---|
| 1379 | 1381 | struct dhd_pub *dhd = dhd_get_pub(dev); |
|---|
| 1380 | 1382 | wlc_ssid_t ssid; |
|---|
| 1381 | 1383 | #ifdef WL_ESCAN |
|---|
| 1382 | | - wl_scan_info_t scan_info; |
|---|
| 1384 | + wl_scan_info_t *scan_info = NULL; |
|---|
| 1385 | + int err; |
|---|
| 1383 | 1386 | #else |
|---|
| 1384 | 1387 | wl_wext_info_t *wext_info = NULL; |
|---|
| 1385 | 1388 | iscan_info_t *iscan; |
|---|
| .. | .. |
|---|
| 1403 | 1406 | } |
|---|
| 1404 | 1407 | } |
|---|
| 1405 | 1408 | #endif |
|---|
| 1406 | | - memset(&scan_info, 0, sizeof(wl_scan_info_t)); |
|---|
| 1407 | | - scan_info.bcast_ssid = TRUE; |
|---|
| 1408 | | - memcpy(scan_info.ssid.SSID, ssid.SSID, ssid.SSID_len); |
|---|
| 1409 | | - scan_info.ssid.SSID_len = ssid.SSID_len; |
|---|
| 1410 | | - return wl_escan_set_scan(dev, &scan_info); |
|---|
| 1409 | + scan_info = kmalloc(sizeof(wl_scan_info_t), GFP_KERNEL); |
|---|
| 1410 | + if (scan_info == NULL) { |
|---|
| 1411 | + WL_ERROR(("kzalloc failed\n")); |
|---|
| 1412 | + return -ENOMEM; |
|---|
| 1413 | + } |
|---|
| 1414 | + memset(scan_info, 0, sizeof(wl_scan_info_t)); |
|---|
| 1415 | + scan_info->bcast_ssid = TRUE; |
|---|
| 1416 | + memcpy(scan_info->ssid.SSID, ssid.SSID, ssid.SSID_len); |
|---|
| 1417 | + scan_info->ssid.SSID_len = ssid.SSID_len; |
|---|
| 1418 | + err = wl_escan_set_scan(dev, scan_info); |
|---|
| 1419 | + kfree(scan_info); |
|---|
| 1420 | + return err; |
|---|
| 1411 | 1421 | #else |
|---|
| 1412 | 1422 | wext_info = dhd->wext_info; |
|---|
| 1413 | 1423 | iscan = &wext_info->iscan; |
|---|