old mode 100644new mode 100755.. | .. |
---|
65 | 65 | #include <asm/uaccess.h> |
---|
66 | 66 | #include <asm/unaligned.h> |
---|
67 | 67 | #include <dhd_linux_priv.h> |
---|
| 68 | +#if defined(CUSTOMER_HW_ROCKCHIP) && defined(BCMPCIE) |
---|
| 69 | +#include <rk_dhd_pcie_linux.h> |
---|
| 70 | +#endif /* CUSTOMER_HW_ROCKCHIP && BCMPCIE */ |
---|
68 | 71 | |
---|
69 | 72 | #include <epivers.h> |
---|
70 | 73 | #include <bcmutils.h> |
---|
.. | .. |
---|
367 | 370 | static void dhd_hang_process(struct work_struct *work_data); |
---|
368 | 371 | #endif /* OEM_ANDROID */ |
---|
369 | 372 | MODULE_LICENSE("GPL and additional rights"); |
---|
| 373 | +MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver); |
---|
370 | 374 | |
---|
371 | 375 | #if defined(MULTIPLE_SUPPLICANT) |
---|
372 | 376 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)) |
---|
.. | .. |
---|
1177 | 1181 | dhd_conf_set_suspend_resume(dhd, suspend); |
---|
1178 | 1182 | DHD_OS_WAKE_LOCK_RESTORE(dhd); |
---|
1179 | 1183 | } else { |
---|
1180 | | -#ifdef BCMDBUS |
---|
1181 | | - if (dhd->busstate == DHD_BUS_DATA) { |
---|
1182 | | -#endif |
---|
1183 | 1184 | if (suspend_mode == PM_NOTIFIER || suspend_mode == SUSPEND_MODE_2) |
---|
1184 | 1185 | dhd_conf_set_suspend_resume(dhd, suspend); |
---|
1185 | 1186 | #if defined(SUPPORT_P2P_GO_PS) && defined(PROP_TXSTATUS) |
---|
.. | .. |
---|
1187 | 1188 | #endif /* defined(SUPPORT_P2P_GO_PS) && defined(PROP_TXSTATUS) */ |
---|
1188 | 1189 | if (suspend_mode == PM_NOTIFIER) |
---|
1189 | 1190 | dhd_suspend_resume_helper(dhdinfo, suspend, 0); |
---|
1190 | | -#ifdef BCMDBUS |
---|
1191 | | - } else { |
---|
1192 | | - printf("%s: skip resume since bus suspeneded\n", __FUNCTION__); |
---|
1193 | | - } |
---|
1194 | | -#endif |
---|
1195 | 1191 | } |
---|
1196 | 1192 | |
---|
1197 | 1193 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) && (LINUX_VERSION_CODE <= \ |
---|
.. | .. |
---|
4764 | 4760 | static void |
---|
4765 | 4761 | __dhd_txflowcontrol(dhd_pub_t *dhdp, struct net_device *net, bool state) |
---|
4766 | 4762 | { |
---|
4767 | | - |
---|
4768 | | - if (net->reg_state != NETREG_REGISTERED) { |
---|
4769 | | - return; |
---|
4770 | | - } |
---|
4771 | | - |
---|
4772 | 4763 | if (state == ON) { |
---|
4773 | 4764 | if (!netif_queue_stopped(net)) { |
---|
4774 | 4765 | DHD_INFO(("%s: Stop Netif Queue\n", __FUNCTION__)); |
---|
.. | .. |
---|
9086 | 9077 | { |
---|
9087 | 9078 | struct file *fp; |
---|
9088 | 9079 | const char *clm = VENDOR_PATH CONFIG_BCMDHD_CLM_PATH; |
---|
| 9080 | + fp = filp_open(clm, O_RDONLY, 0); |
---|
9089 | 9081 | |
---|
9090 | | - fp = dhd_filp_open(clm, O_RDONLY, 0); |
---|
9091 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 9082 | + if (IS_ERR(fp)) { |
---|
9092 | 9083 | DHD_ERROR(("%s: filp_open(%s) failed(%d) schedule wl_accel_work\n", |
---|
9093 | 9084 | __FUNCTION__, clm, (int)IS_ERR(fp))); |
---|
9094 | 9085 | return FALSE; |
---|
9095 | 9086 | } |
---|
9096 | | - dhd_filp_close(fp, NULL); |
---|
| 9087 | + filp_close(fp, NULL); |
---|
9097 | 9088 | |
---|
9098 | 9089 | return TRUE; |
---|
9099 | 9090 | } |
---|
.. | .. |
---|
10588 | 10579 | if (!fp || !buf || buflen == 0) |
---|
10589 | 10580 | return -1; |
---|
10590 | 10581 | |
---|
10591 | | - if (dhd_vfs_write((struct file *)fp, buf, buflen, &wr_posn) < 0) |
---|
| 10582 | + if (vfs_write((struct file *)fp, buf, buflen, &wr_posn) < 0) |
---|
10592 | 10583 | return -1; |
---|
10593 | 10584 | |
---|
10594 | 10585 | *posn = wr_posn; |
---|
.. | .. |
---|
10604 | 10595 | if (!file || !buf) |
---|
10605 | 10596 | return -1; |
---|
10606 | 10597 | |
---|
10607 | | - return dhd_vfs_read(filep, buf, size, &filep->f_pos); |
---|
| 10598 | + return vfs_read(filep, buf, size, &filep->f_pos); |
---|
10608 | 10599 | } |
---|
10609 | 10600 | |
---|
10610 | 10601 | int |
---|
.. | .. |
---|
10620 | 10611 | return 0; |
---|
10621 | 10612 | } |
---|
10622 | 10613 | |
---|
| 10614 | +static int |
---|
| 10615 | +dhd_init_logstrs_array(osl_t *osh, dhd_event_log_t *temp) |
---|
| 10616 | +{ |
---|
| 10617 | + struct file *filep = NULL; |
---|
| 10618 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
| 10619 | + struct kstat stat; |
---|
| 10620 | + mm_segment_t fs; |
---|
| 10621 | + int error = 0; |
---|
| 10622 | +#endif |
---|
| 10623 | + char *raw_fmts = NULL; |
---|
| 10624 | + int logstrs_size = 0; |
---|
| 10625 | + |
---|
| 10626 | + if (control_logtrace != LOGTRACE_PARSED_FMT) { |
---|
| 10627 | + DHD_ERROR_NO_HW4(("%s : turned off logstr parsing\n", __FUNCTION__)); |
---|
| 10628 | + return BCME_ERROR; |
---|
| 10629 | + } |
---|
| 10630 | + |
---|
| 10631 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
| 10632 | + fs = get_fs(); |
---|
| 10633 | + set_fs(KERNEL_DS); |
---|
| 10634 | +#endif |
---|
| 10635 | + |
---|
| 10636 | + filep = filp_open(logstrs_path, O_RDONLY, 0); |
---|
| 10637 | + |
---|
| 10638 | + if (IS_ERR(filep)) { |
---|
| 10639 | + DHD_ERROR_NO_HW4(("%s: Failed to open the file %s \n", __FUNCTION__, logstrs_path)); |
---|
| 10640 | + goto fail; |
---|
| 10641 | + } |
---|
| 10642 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
| 10643 | + error = vfs_stat(logstrs_path, &stat); |
---|
| 10644 | + if (error) { |
---|
| 10645 | + DHD_ERROR_NO_HW4(("%s: Failed to stat file %s \n", __FUNCTION__, logstrs_path)); |
---|
| 10646 | + goto fail; |
---|
| 10647 | + } |
---|
| 10648 | + logstrs_size = (int) stat.size; |
---|
| 10649 | +#else |
---|
| 10650 | + logstrs_size = dhd_os_get_image_size(filep); |
---|
| 10651 | +#endif |
---|
| 10652 | + |
---|
| 10653 | + if (logstrs_size == 0) { |
---|
| 10654 | + DHD_ERROR(("%s: return as logstrs_size is 0\n", __FUNCTION__)); |
---|
| 10655 | + goto fail1; |
---|
| 10656 | + } |
---|
| 10657 | + |
---|
| 10658 | + if (temp->raw_fmts != NULL) { |
---|
| 10659 | + raw_fmts = temp->raw_fmts; /* reuse already malloced raw_fmts */ |
---|
| 10660 | + } else { |
---|
| 10661 | + raw_fmts = MALLOC(osh, logstrs_size); |
---|
| 10662 | + if (raw_fmts == NULL) { |
---|
| 10663 | + DHD_ERROR(("%s: Failed to allocate memory \n", __FUNCTION__)); |
---|
| 10664 | + goto fail; |
---|
| 10665 | + } |
---|
| 10666 | + } |
---|
| 10667 | + |
---|
| 10668 | + if (vfs_read(filep, raw_fmts, logstrs_size, &filep->f_pos) != logstrs_size) { |
---|
| 10669 | + DHD_ERROR_NO_HW4(("%s: Failed to read file %s\n", __FUNCTION__, logstrs_path)); |
---|
| 10670 | + goto fail; |
---|
| 10671 | + } |
---|
| 10672 | + |
---|
| 10673 | + if (dhd_parse_logstrs_file(osh, raw_fmts, logstrs_size, temp) |
---|
| 10674 | + == BCME_OK) { |
---|
| 10675 | + filp_close(filep, NULL); |
---|
| 10676 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
| 10677 | + set_fs(fs); |
---|
| 10678 | +#endif |
---|
| 10679 | + return BCME_OK; |
---|
| 10680 | + } |
---|
| 10681 | + |
---|
| 10682 | +fail: |
---|
| 10683 | + if (raw_fmts) { |
---|
| 10684 | + MFREE(osh, raw_fmts, logstrs_size); |
---|
| 10685 | + } |
---|
| 10686 | + if (temp->fmts != NULL) { |
---|
| 10687 | + MFREE(osh, temp->fmts, temp->num_fmts * sizeof(char *)); |
---|
| 10688 | + } |
---|
| 10689 | + |
---|
| 10690 | +fail1: |
---|
| 10691 | + if (!IS_ERR(filep)) |
---|
| 10692 | + filp_close(filep, NULL); |
---|
| 10693 | + |
---|
| 10694 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
| 10695 | + set_fs(fs); |
---|
| 10696 | +#endif |
---|
| 10697 | + temp->fmts = NULL; |
---|
| 10698 | + temp->raw_fmts = NULL; |
---|
| 10699 | + |
---|
| 10700 | + return BCME_ERROR; |
---|
| 10701 | +} |
---|
| 10702 | + |
---|
| 10703 | +static int |
---|
| 10704 | +dhd_read_map(osl_t *osh, char *fname, uint32 *ramstart, uint32 *rodata_start, |
---|
| 10705 | + uint32 *rodata_end) |
---|
| 10706 | +{ |
---|
| 10707 | + struct file *filep = NULL; |
---|
| 10708 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
| 10709 | + mm_segment_t fs; |
---|
| 10710 | +#endif |
---|
| 10711 | + int err = BCME_ERROR; |
---|
| 10712 | + |
---|
| 10713 | + if (fname == NULL) { |
---|
| 10714 | + DHD_ERROR(("%s: ERROR fname is NULL \n", __FUNCTION__)); |
---|
| 10715 | + return BCME_ERROR; |
---|
| 10716 | + } |
---|
| 10717 | + |
---|
| 10718 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
| 10719 | + fs = get_fs(); |
---|
| 10720 | + set_fs(KERNEL_DS); |
---|
| 10721 | +#endif |
---|
| 10722 | + |
---|
| 10723 | + filep = filp_open(fname, O_RDONLY, 0); |
---|
| 10724 | + if (IS_ERR(filep)) { |
---|
| 10725 | + DHD_ERROR_NO_HW4(("%s: Failed to open %s \n", __FUNCTION__, fname)); |
---|
| 10726 | + goto fail; |
---|
| 10727 | + } |
---|
| 10728 | + |
---|
| 10729 | + if ((err = dhd_parse_map_file(osh, filep, ramstart, |
---|
| 10730 | + rodata_start, rodata_end)) < 0) |
---|
| 10731 | + goto fail; |
---|
| 10732 | + |
---|
| 10733 | +fail: |
---|
| 10734 | + if (!IS_ERR(filep)) |
---|
| 10735 | + filp_close(filep, NULL); |
---|
| 10736 | + |
---|
| 10737 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
| 10738 | + set_fs(fs); |
---|
| 10739 | +#endif |
---|
| 10740 | + |
---|
| 10741 | + return err; |
---|
| 10742 | +} |
---|
10623 | 10743 | #ifdef DHD_COREDUMP |
---|
10624 | 10744 | #define PC_FOUND_BIT 0x01 |
---|
10625 | 10745 | #define LR_FOUND_BIT 0x02 |
---|
.. | .. |
---|
10679 | 10799 | set_fs(KERNEL_DS); |
---|
10680 | 10800 | #endif |
---|
10681 | 10801 | |
---|
10682 | | - filep = dhd_filp_open(fname, O_RDONLY, 0); |
---|
10683 | | - if (IS_ERR(filep) || (filep == NULL)) { |
---|
| 10802 | + filep = filp_open(fname, O_RDONLY, 0); |
---|
| 10803 | + if (IS_ERR(filep)) { |
---|
10684 | 10804 | DHD_ERROR(("%s: Failed to open %s \n", __FUNCTION__, fname)); |
---|
10685 | 10805 | goto fail; |
---|
10686 | 10806 | } |
---|
.. | .. |
---|
10842 | 10962 | } |
---|
10843 | 10963 | #else |
---|
10844 | 10964 | if (!IS_ERR(filep)) |
---|
10845 | | - dhd_filp_close(filep, NULL); |
---|
| 10965 | + filp_close(filep, NULL); |
---|
10846 | 10966 | |
---|
10847 | 10967 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
10848 | 10968 | set_fs(fs); |
---|
.. | .. |
---|
11217 | 11337 | set_fs(KERNEL_DS); |
---|
11218 | 11338 | #endif |
---|
11219 | 11339 | |
---|
11220 | | - filep = dhd_filp_open(str_file, O_RDONLY, 0); |
---|
11221 | | - if (IS_ERR(filep) || (filep == NULL)) { |
---|
| 11340 | + filep = filp_open(str_file, O_RDONLY, 0); |
---|
| 11341 | + if (IS_ERR(filep)) { |
---|
11222 | 11342 | DHD_ERROR(("%s: Failed to open the file %s \n", __FUNCTION__, str_file)); |
---|
11223 | 11343 | goto fail; |
---|
11224 | 11344 | } |
---|
.. | .. |
---|
11255 | 11375 | } |
---|
11256 | 11376 | } |
---|
11257 | 11377 | |
---|
11258 | | - error = dhd_vfs_read(filep, raw_fmts, logstrs_size, (&filep->f_pos)); |
---|
| 11378 | + error = vfs_read(filep, raw_fmts, logstrs_size, (&filep->f_pos)); |
---|
11259 | 11379 | if (error != logstrs_size) { |
---|
11260 | 11380 | DHD_ERROR(("%s: %s read failed %d \n", __FUNCTION__, str_file, error)); |
---|
11261 | 11381 | goto fail; |
---|
.. | .. |
---|
11273 | 11393 | temp->rom_rodata_end = rodata_end; |
---|
11274 | 11394 | } |
---|
11275 | 11395 | |
---|
11276 | | - dhd_filp_close(filep, NULL); |
---|
| 11396 | + filp_close(filep, NULL); |
---|
11277 | 11397 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
11278 | 11398 | set_fs(fs); |
---|
11279 | 11399 | #endif |
---|
.. | .. |
---|
11287 | 11407 | |
---|
11288 | 11408 | fail1: |
---|
11289 | 11409 | if (!IS_ERR(filep)) |
---|
11290 | | - dhd_filp_close(filep, NULL); |
---|
| 11410 | + filp_close(filep, NULL); |
---|
11291 | 11411 | |
---|
11292 | 11412 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
11293 | 11413 | set_fs(fs); |
---|
.. | .. |
---|
11697 | 11817 | goto fail; |
---|
11698 | 11818 | } |
---|
11699 | 11819 | #endif /* WL_EVENT */ |
---|
11700 | | -#ifdef WL_TIMER |
---|
11701 | | - if (wl_timer_attach(net) != 0) { |
---|
11702 | | - DHD_ERROR(("wl_ext_timer_attach failed\n")); |
---|
11703 | | - goto fail; |
---|
11704 | | - } |
---|
11705 | | -#endif /* WL_TIMER */ |
---|
11706 | 11820 | #ifdef WL_ESCAN |
---|
11707 | 11821 | /* Attach and link in the escan */ |
---|
11708 | 11822 | if (wl_escan_attach(net) != 0) { |
---|
.. | .. |
---|
11757 | 11871 | dhd_os_start_logging(&dhd->pub, BT_LOG_RING_NAME, 3, 0, 0, 0); |
---|
11758 | 11872 | #endif /* !OEM_ANDROID && BTLOG */ |
---|
11759 | 11873 | #ifdef DBG_PKT_MON |
---|
11760 | | - dhd->pub.dbg->pkt_mon_lock = osl_mutex_lock_init(dhd->pub.osh); |
---|
11761 | | - if (!dhd->pub.dbg->pkt_mon_lock) { |
---|
11762 | | - DHD_ERROR(("%s: pkt_mon_lock init failed !\n", __FUNCTION__)); |
---|
11763 | | - goto fail; |
---|
11764 | | - } |
---|
| 11874 | + dhd->pub.dbg->pkt_mon_lock = osl_spin_lock_init(dhd->pub.osh); |
---|
11765 | 11875 | #ifdef DBG_PKT_MON_INIT_DEFAULT |
---|
11766 | 11876 | dhd_os_dbg_attach_pkt_monitor(&dhd->pub); |
---|
11767 | 11877 | #endif /* DBG_PKT_MON_INIT_DEFAULT */ |
---|
.. | .. |
---|
11869 | 11979 | } |
---|
11870 | 11980 | #endif /* DHD_PCIE_RUNTIMEPM */ |
---|
11871 | 11981 | |
---|
| 11982 | +#ifdef SHOW_LOGTRACE |
---|
| 11983 | + skb_queue_head_init(&dhd->evt_trace_queue); |
---|
| 11984 | + |
---|
| 11985 | + /* Create ring proc entries */ |
---|
| 11986 | + dhd_dbg_ring_proc_create(&dhd->pub); |
---|
| 11987 | +#endif /* SHOW_LOGTRACE */ |
---|
| 11988 | + |
---|
11872 | 11989 | #ifdef BTLOG |
---|
11873 | 11990 | skb_queue_head_init(&dhd->bt_log_queue); |
---|
11874 | 11991 | #endif /* BTLOG */ |
---|
.. | .. |
---|
11900 | 12017 | } |
---|
11901 | 12018 | } |
---|
11902 | 12019 | #endif /* !BCMDBUS */ |
---|
11903 | | - |
---|
11904 | | -#ifdef SHOW_LOGTRACE |
---|
11905 | | - skb_queue_head_init(&dhd->evt_trace_queue); |
---|
11906 | | - |
---|
11907 | | - /* Create ring proc entries */ |
---|
11908 | | - dhd_dbg_ring_proc_create(&dhd->pub); |
---|
11909 | | -#endif /* SHOW_LOGTRACE */ |
---|
11910 | 12020 | |
---|
11911 | 12021 | dhd_state |= DHD_ATTACH_STATE_THREADS_CREATED; |
---|
11912 | 12022 | |
---|
.. | .. |
---|
12791 | 12901 | dhd_bus_l1ss_enable_rc_ep(dhdp->bus, TRUE); |
---|
12792 | 12902 | #endif /* BT_OVER_PCIE */ |
---|
12793 | 12903 | |
---|
| 12904 | +#if defined(CUSTOMER_HW_ROCKCHIP) && defined(BCMPCIE) |
---|
| 12905 | + if (IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION)) |
---|
| 12906 | + rk_dhd_bus_l1ss_enable_rc_ep(dhdp->bus, TRUE); |
---|
| 12907 | +#endif /* CUSTOMER_HW_ROCKCHIP && BCMPCIE */ |
---|
| 12908 | + |
---|
12794 | 12909 | #if defined(CONFIG_ARCH_EXYNOS) && defined(BCMPCIE) |
---|
12795 | 12910 | #if !defined(CONFIG_SOC_EXYNOS8890) && !defined(SUPPORT_EXYNOS7420) |
---|
12796 | 12911 | /* XXX: JIRA SWWLAN-139454: Added L1ss enable |
---|
.. | .. |
---|
13347 | 13462 | |
---|
13348 | 13463 | old_fs = get_fs(); |
---|
13349 | 13464 | set_fs(get_ds()); |
---|
13350 | | - if ((ret = dhd_vfs_stat(config_path, &stat))) { |
---|
| 13465 | + if ((ret = vfs_stat(config_path, &stat))) { |
---|
13351 | 13466 | set_fs(old_fs); |
---|
13352 | 13467 | printk(KERN_ERR "%s: Failed to get information (%d)\n", |
---|
13353 | 13468 | config_path, ret); |
---|
.. | .. |
---|
13810 | 13925 | else { |
---|
13811 | 13926 | bcmstrtok(&ptr, "\n", 0); |
---|
13812 | 13927 | /* Print fw version info */ |
---|
| 13928 | + DHD_ERROR(("Firmware version = %s\n", buf)); |
---|
13813 | 13929 | strncpy(fw_version, buf, FW_VER_STR_LEN); |
---|
13814 | 13930 | fw_version[FW_VER_STR_LEN-1] = '\0'; |
---|
| 13931 | +#if defined(BCMSDIO) || defined(BCMPCIE) |
---|
| 13932 | + dhd_set_version_info(dhd, buf); |
---|
| 13933 | +#endif /* BCMSDIO || BCMPCIE */ |
---|
13815 | 13934 | } |
---|
13816 | 13935 | |
---|
13817 | 13936 | /* query for 'wlc_ver' to get version info from firmware */ |
---|
.. | .. |
---|
13826 | 13945 | dhd->wlc_ver_major = wlc_ver.wlc_ver_major; |
---|
13827 | 13946 | dhd->wlc_ver_minor = wlc_ver.wlc_ver_minor; |
---|
13828 | 13947 | } |
---|
| 13948 | +#ifdef BOARD_HIKEY |
---|
13829 | 13949 | /* Set op_mode as MFG_MODE if WLTEST is present in "wl ver" */ |
---|
13830 | 13950 | if (strstr(fw_version, "WLTEST") != NULL) { |
---|
13831 | 13951 | DHD_ERROR(("%s: wl ver has WLTEST, setting op_mode as DHD_FLAG_MFG_MODE\n", |
---|
13832 | 13952 | __FUNCTION__)); |
---|
13833 | 13953 | op_mode = DHD_FLAG_MFG_MODE; |
---|
13834 | 13954 | } |
---|
| 13955 | +#endif /* BOARD_HIKEY */ |
---|
13835 | 13956 | /* get a capabilities from firmware */ |
---|
13836 | 13957 | ret = dhd_get_fw_capabilities(dhd); |
---|
13837 | 13958 | |
---|
.. | .. |
---|
13988 | 14109 | |
---|
13989 | 14110 | DHD_ERROR(("Firmware up: op_mode=0x%04x, MAC="MACDBG"\n", |
---|
13990 | 14111 | dhd->op_mode, MAC2STRDBG(dhd->mac.octet))); |
---|
13991 | | - dhd_set_version_info(dhd, fw_version); |
---|
13992 | 14112 | #if defined(DHD_BLOB_EXISTENCE_CHECK) |
---|
13993 | 14113 | if (!dhd->is_blob) |
---|
13994 | 14114 | #endif /* DHD_BLOB_EXISTENCE_CHECK */ |
---|
.. | .. |
---|
14181 | 14301 | dhd_update_flow_prio_map(dhd, DHD_FLOW_PRIO_LLR_MAP); |
---|
14182 | 14302 | #endif /* defined(BCMPCIE) && defined(EAPOL_PKT_PRIO) */ |
---|
14183 | 14303 | |
---|
14184 | | -#if defined(BCMSDIO) && defined(DHD_LOSSLESS_ROAMING) |
---|
14185 | | - dhd_update_sdio_data_prio_map(dhd); |
---|
14186 | | -#endif /* BCMSDIO && DHD_LOSSLESS_ROAMING */ |
---|
14187 | | - |
---|
14188 | 14304 | #ifdef ARP_OFFLOAD_SUPPORT |
---|
14189 | 14305 | DHD_ERROR(("arp_enable:%d arp_ol:%d\n", |
---|
14190 | 14306 | dhd->arpoe_enable, dhd->arpol_configured)); |
---|
.. | .. |
---|
14196 | 14312 | */ |
---|
14197 | 14313 | #ifdef PKT_FILTER_SUPPORT |
---|
14198 | 14314 | /* Setup default defintions for pktfilter , enable in suspend */ |
---|
14199 | | - if (dhd_master_mode) { |
---|
14200 | | - dhd->pktfilter_count = 6; |
---|
14201 | | - dhd->pktfilter[DHD_BROADCAST_FILTER_NUM] = NULL; |
---|
14202 | | - if (!FW_SUPPORTED(dhd, pf6)) { |
---|
14203 | | - dhd->pktfilter[DHD_MULTICAST4_FILTER_NUM] = NULL; |
---|
14204 | | - dhd->pktfilter[DHD_MULTICAST6_FILTER_NUM] = NULL; |
---|
14205 | | - } else { |
---|
14206 | | - /* Immediately pkt filter TYPE 6 Discard IPv4/IPv6 Multicast Packet */ |
---|
14207 | | - dhd->pktfilter[DHD_MULTICAST4_FILTER_NUM] = DISCARD_IPV4_MCAST; |
---|
14208 | | - dhd->pktfilter[DHD_MULTICAST6_FILTER_NUM] = DISCARD_IPV6_MCAST; |
---|
14209 | | - } |
---|
14210 | | - /* apply APP pktfilter */ |
---|
14211 | | - dhd->pktfilter[DHD_ARP_FILTER_NUM] = "105 0 0 12 0xFFFF 0x0806"; |
---|
| 14315 | + dhd->pktfilter_count = 6; |
---|
| 14316 | + dhd->pktfilter[DHD_BROADCAST_FILTER_NUM] = NULL; |
---|
| 14317 | + if (!FW_SUPPORTED(dhd, pf6)) { |
---|
| 14318 | + dhd->pktfilter[DHD_MULTICAST4_FILTER_NUM] = NULL; |
---|
| 14319 | + dhd->pktfilter[DHD_MULTICAST6_FILTER_NUM] = NULL; |
---|
| 14320 | + } else { |
---|
| 14321 | + /* Immediately pkt filter TYPE 6 Discard IPv4/IPv6 Multicast Packet */ |
---|
| 14322 | + dhd->pktfilter[DHD_MULTICAST4_FILTER_NUM] = DISCARD_IPV4_MCAST; |
---|
| 14323 | + dhd->pktfilter[DHD_MULTICAST6_FILTER_NUM] = DISCARD_IPV6_MCAST; |
---|
| 14324 | + } |
---|
| 14325 | + /* apply APP pktfilter */ |
---|
| 14326 | + dhd->pktfilter[DHD_ARP_FILTER_NUM] = "105 0 0 12 0xFFFF 0x0806"; |
---|
14212 | 14327 | |
---|
14213 | 14328 | #ifdef BLOCK_IPV6_PACKET |
---|
14214 | | - /* Setup filter to allow only IPv4 unicast frames */ |
---|
14215 | | - dhd->pktfilter[DHD_UNICAST_FILTER_NUM] = "100 0 0 0 " |
---|
14216 | | - HEX_PREF_STR UNI_FILTER_STR ZERO_ADDR_STR ETHER_TYPE_STR IPV6_FILTER_STR |
---|
14217 | | - " " |
---|
14218 | | - HEX_PREF_STR ZERO_ADDR_STR ZERO_ADDR_STR ETHER_TYPE_STR ZERO_TYPE_STR; |
---|
| 14329 | + /* Setup filter to allow only IPv4 unicast frames */ |
---|
| 14330 | + dhd->pktfilter[DHD_UNICAST_FILTER_NUM] = "100 0 0 0 " |
---|
| 14331 | + HEX_PREF_STR UNI_FILTER_STR ZERO_ADDR_STR ETHER_TYPE_STR IPV6_FILTER_STR |
---|
| 14332 | + " " |
---|
| 14333 | + HEX_PREF_STR ZERO_ADDR_STR ZERO_ADDR_STR ETHER_TYPE_STR ZERO_TYPE_STR; |
---|
14219 | 14334 | #else |
---|
14220 | | - /* Setup filter to allow only unicast */ |
---|
14221 | | - dhd->pktfilter[DHD_UNICAST_FILTER_NUM] = "100 0 0 0 0x01 0x00"; |
---|
| 14335 | + /* Setup filter to allow only unicast */ |
---|
| 14336 | + dhd->pktfilter[DHD_UNICAST_FILTER_NUM] = "100 0 0 0 0x01 0x00"; |
---|
14222 | 14337 | #endif /* BLOCK_IPV6_PACKET */ |
---|
14223 | 14338 | |
---|
14224 | 14339 | #ifdef PASS_IPV4_SUSPEND |
---|
14225 | | - /* XXX customer want to get IPv4 multicast packets */ |
---|
14226 | | - dhd->pktfilter[DHD_MDNS_FILTER_NUM] = "104 0 0 0 0xFFFFFF 0x01005E"; |
---|
| 14340 | + /* XXX customer want to get IPv4 multicast packets */ |
---|
| 14341 | + dhd->pktfilter[DHD_MDNS_FILTER_NUM] = "104 0 0 0 0xFFFFFF 0x01005E"; |
---|
14227 | 14342 | #else |
---|
14228 | | - /* Add filter to pass multicastDNS packet and NOT filter out as Broadcast */ |
---|
14229 | | - dhd->pktfilter[DHD_MDNS_FILTER_NUM] = NULL; |
---|
| 14343 | + /* Add filter to pass multicastDNS packet and NOT filter out as Broadcast */ |
---|
| 14344 | + dhd->pktfilter[DHD_MDNS_FILTER_NUM] = NULL; |
---|
14230 | 14345 | #endif /* PASS_IPV4_SUSPEND */ |
---|
14231 | | - if (FW_SUPPORTED(dhd, pf6)) { |
---|
14232 | | - /* Immediately pkt filter TYPE 6 Dicard Broadcast IP packet */ |
---|
14233 | | - dhd->pktfilter[DHD_IP4BCAST_DROP_FILTER_NUM] = DISCARD_IPV4_BCAST; |
---|
14234 | | - /* Immediately pkt filter TYPE 6 Dicard Cisco STP packet */ |
---|
14235 | | - dhd->pktfilter[DHD_LLC_STP_DROP_FILTER_NUM] = DISCARD_LLC_STP; |
---|
14236 | | - /* Immediately pkt filter TYPE 6 Dicard Cisco XID protocol */ |
---|
14237 | | - dhd->pktfilter[DHD_LLC_XID_DROP_FILTER_NUM] = DISCARD_LLC_XID; |
---|
14238 | | - /* Immediately pkt filter TYPE 6 Dicard NETBIOS packet(port 137) */ |
---|
14239 | | - dhd->pktfilter[DHD_UDPNETBIOS_DROP_FILTER_NUM] = DISCARD_UDPNETBIOS; |
---|
14240 | | - dhd->pktfilter_count = 11; |
---|
14241 | | - } |
---|
| 14346 | + if (FW_SUPPORTED(dhd, pf6)) { |
---|
| 14347 | + /* Immediately pkt filter TYPE 6 Dicard Broadcast IP packet */ |
---|
| 14348 | + dhd->pktfilter[DHD_IP4BCAST_DROP_FILTER_NUM] = DISCARD_IPV4_BCAST; |
---|
| 14349 | + /* Immediately pkt filter TYPE 6 Dicard Cisco STP packet */ |
---|
| 14350 | + dhd->pktfilter[DHD_LLC_STP_DROP_FILTER_NUM] = DISCARD_LLC_STP; |
---|
| 14351 | + /* Immediately pkt filter TYPE 6 Dicard Cisco XID protocol */ |
---|
| 14352 | + dhd->pktfilter[DHD_LLC_XID_DROP_FILTER_NUM] = DISCARD_LLC_XID; |
---|
| 14353 | + /* Immediately pkt filter TYPE 6 Dicard NETBIOS packet(port 137) */ |
---|
| 14354 | + dhd->pktfilter[DHD_UDPNETBIOS_DROP_FILTER_NUM] = DISCARD_UDPNETBIOS; |
---|
| 14355 | + dhd->pktfilter_count = 11; |
---|
| 14356 | + } |
---|
14242 | 14357 | |
---|
14243 | 14358 | #ifdef GAN_LITE_NAT_KEEPALIVE_FILTER |
---|
14244 | | - dhd->pktfilter_count = 4; |
---|
14245 | | - /* Setup filter to block broadcast and NAT Keepalive packets */ |
---|
14246 | | - /* discard all broadcast packets */ |
---|
14247 | | - dhd->pktfilter[DHD_UNICAST_FILTER_NUM] = "100 0 0 0 0xffffff 0xffffff"; |
---|
14248 | | - /* discard NAT Keepalive packets */ |
---|
14249 | | - dhd->pktfilter[DHD_BROADCAST_FILTER_NUM] = "102 0 0 36 0xffffffff 0x11940009"; |
---|
14250 | | - /* discard NAT Keepalive packets */ |
---|
14251 | | - dhd->pktfilter[DHD_MULTICAST4_FILTER_NUM] = "104 0 0 38 0xffffffff 0x11940009"; |
---|
14252 | | - dhd->pktfilter[DHD_MULTICAST6_FILTER_NUM] = NULL; |
---|
| 14359 | + dhd->pktfilter_count = 4; |
---|
| 14360 | + /* Setup filter to block broadcast and NAT Keepalive packets */ |
---|
| 14361 | + /* discard all broadcast packets */ |
---|
| 14362 | + dhd->pktfilter[DHD_UNICAST_FILTER_NUM] = "100 0 0 0 0xffffff 0xffffff"; |
---|
| 14363 | + /* discard NAT Keepalive packets */ |
---|
| 14364 | + dhd->pktfilter[DHD_BROADCAST_FILTER_NUM] = "102 0 0 36 0xffffffff 0x11940009"; |
---|
| 14365 | + /* discard NAT Keepalive packets */ |
---|
| 14366 | + dhd->pktfilter[DHD_MULTICAST4_FILTER_NUM] = "104 0 0 38 0xffffffff 0x11940009"; |
---|
| 14367 | + dhd->pktfilter[DHD_MULTICAST6_FILTER_NUM] = NULL; |
---|
14253 | 14368 | #endif /* GAN_LITE_NAT_KEEPALIVE_FILTER */ |
---|
14254 | | - } else |
---|
14255 | | - dhd_conf_discard_pkt_filter(dhd); |
---|
14256 | | - dhd_conf_add_pkt_filter(dhd); |
---|
14257 | 14369 | |
---|
14258 | 14370 | #if defined(SOFTAP) |
---|
14259 | 14371 | if (ap_fw_loaded) { |
---|
.. | .. |
---|
14495 | 14607 | dhd_set_bandlock(dhd); |
---|
14496 | 14608 | |
---|
14497 | 14609 | done: |
---|
14498 | | - dhd_conf_postinit_ioctls(dhd); |
---|
14499 | 14610 | if (iov_buf) { |
---|
14500 | 14611 | MFREE(dhd->osh, iov_buf, WLC_IOCTL_SMLEN); |
---|
14501 | 14612 | } |
---|
.. | .. |
---|
14764 | 14875 | fw_version[FW_VER_STR_LEN-1] = '\0'; |
---|
14765 | 14876 | } |
---|
14766 | 14877 | |
---|
| 14878 | +#ifdef BOARD_HIKEY |
---|
14767 | 14879 | /* Set op_mode as MFG_MODE if WLTEST is present in "wl ver" */ |
---|
14768 | 14880 | if (strstr(fw_version, "WLTEST") != NULL) { |
---|
14769 | 14881 | DHD_ERROR(("%s: wl ver has WLTEST, setting op_mode as DHD_FLAG_MFG_MODE\n", |
---|
14770 | 14882 | __FUNCTION__)); |
---|
14771 | 14883 | op_mode = DHD_FLAG_MFG_MODE; |
---|
14772 | 14884 | } |
---|
| 14885 | +#endif /* BOARD_HIKEY */ |
---|
14773 | 14886 | |
---|
14774 | 14887 | if ((!op_mode && dhd_get_fw_mode(dhd->info) == DHD_FLAG_MFG_MODE) || |
---|
14775 | 14888 | (op_mode == DHD_FLAG_MFG_MODE)) { |
---|
.. | .. |
---|
15325 | 15438 | } |
---|
15326 | 15439 | |
---|
15327 | 15440 | #else /* OEM_ANDROID */ |
---|
15328 | | - if ((ret = dhd_apply_default_clm(dhd, dhd->clm_path)) < 0) { |
---|
| 15441 | + if ((ret = dhd_apply_default_clm(dhd, clm_path)) < 0) { |
---|
15329 | 15442 | DHD_ERROR(("%s: CLM set failed. Abort initialization.\n", __FUNCTION__)); |
---|
15330 | 15443 | goto done; |
---|
15331 | 15444 | } |
---|
.. | .. |
---|
15717 | 15830 | dhd_update_flow_prio_map(dhd, DHD_FLOW_PRIO_LLR_MAP); |
---|
15718 | 15831 | #endif /* defined(BCMPCIE) && defined(EAPOL_PKT_PRIO) */ |
---|
15719 | 15832 | |
---|
15720 | | -#if defined(BCMSDIO) && defined(DHD_LOSSLESS_ROAMING) |
---|
15721 | | - dhd_update_sdio_data_prio_map(dhd); |
---|
15722 | | -#endif /* BCMSDIO && DHD_LOSSLESS_ROAMING */ |
---|
15723 | | - |
---|
15724 | 15833 | #ifdef RSSI_MONITOR_SUPPORT |
---|
15725 | 15834 | setbit(mask, WLC_E_RSSI_LQM); |
---|
15726 | 15835 | #endif /* RSSI_MONITOR_SUPPORT */ |
---|
.. | .. |
---|
15758 | 15867 | setbit(mask, WLC_E_DELTS_IND); |
---|
15759 | 15868 | #endif /* WL_BCNRECV */ |
---|
15760 | 15869 | setbit(mask, WLC_E_COUNTRY_CODE_CHANGED); |
---|
15761 | | -#if defined(WL_TWT) || defined(WL_TWT_HAL_IF) |
---|
15762 | | - setbit(mask, WLC_E_TWT); |
---|
15763 | | -#endif /* WL_TWT || WL_TWT_HAL_IF */ |
---|
15764 | 15870 | |
---|
15765 | 15871 | /* Write updated Event mask */ |
---|
15766 | 15872 | eventmask_msg->ver = EVENTMSGS_VER; |
---|
.. | .. |
---|
17265 | 17371 | #ifdef WL_ESCAN |
---|
17266 | 17372 | wl_escan_detach(dev); |
---|
17267 | 17373 | #endif /* WL_ESCAN */ |
---|
17268 | | -#ifdef WL_TIMER |
---|
17269 | | - wl_timer_dettach(dhdp); |
---|
17270 | | -#endif /* WL_TIMER */ |
---|
17271 | 17374 | #ifdef WL_EVENT |
---|
17272 | 17375 | wl_ext_event_dettach(dhdp); |
---|
17273 | 17376 | #endif /* WL_EVENT */ |
---|
.. | .. |
---|
17455 | 17558 | if (dhdp->dbg) { |
---|
17456 | 17559 | #ifdef DBG_PKT_MON |
---|
17457 | 17560 | dhd_os_dbg_detach_pkt_monitor(dhdp); |
---|
17458 | | - osl_mutex_lock_deinit(dhd->pub.osh, dhd->pub.dbg->pkt_mon_lock); |
---|
| 17561 | + osl_spin_lock_deinit(dhd->pub.osh, dhd->pub.dbg->pkt_mon_lock); |
---|
17459 | 17562 | #endif /* DBG_PKT_MON */ |
---|
17460 | 17563 | } |
---|
17461 | 17564 | #endif /* DEBUGABILITY */ |
---|
.. | .. |
---|
18441 | 18544 | struct file *fp; |
---|
18442 | 18545 | int size; |
---|
18443 | 18546 | |
---|
18444 | | - fp = dhd_filp_open(filename, O_RDONLY, 0); |
---|
| 18547 | + fp = filp_open(filename, O_RDONLY, 0); |
---|
18445 | 18548 | /* |
---|
18446 | | - * 2.6.11 (FC4) supports dhd_filp_open() but later revs don't? |
---|
| 18549 | + * 2.6.11 (FC4) supports filp_open() but later revs don't? |
---|
18447 | 18550 | * Alternative: |
---|
18448 | 18551 | * fp = open_namei(AT_FDCWD, filename, O_RD, 0); |
---|
18449 | 18552 | * ??? |
---|
18450 | 18553 | */ |
---|
18451 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 18554 | + if (IS_ERR(fp)) { |
---|
18452 | 18555 | fp = NULL; |
---|
18453 | 18556 | goto err; |
---|
18454 | 18557 | } |
---|
.. | .. |
---|
18459 | 18562 | goto err; |
---|
18460 | 18563 | } |
---|
18461 | 18564 | |
---|
18462 | | - size = dhd_i_size_read(file_inode(fp)); |
---|
| 18565 | + size = i_size_read(file_inode(fp)); |
---|
18463 | 18566 | if (size <= 0) { |
---|
18464 | 18567 | DHD_ERROR(("%s: %s file size invalid %d\n", __FUNCTION__, filename, size)); |
---|
18465 | 18568 | fp = NULL; |
---|
.. | .. |
---|
18483 | 18586 | return 0; |
---|
18484 | 18587 | } |
---|
18485 | 18588 | |
---|
18486 | | - size = dhd_i_size_read(file_inode(fp)); |
---|
18487 | | - rdlen = dhd_kernel_read_compat(fp, fp->f_pos, buf, MIN(len, size)); |
---|
| 18589 | + size = i_size_read(file_inode(fp)); |
---|
| 18590 | + rdlen = kernel_read_compat(fp, fp->f_pos, buf, MIN(len, size)); |
---|
18488 | 18591 | |
---|
18489 | 18592 | if (len >= size && size != rdlen) { |
---|
18490 | 18593 | return -EIO; |
---|
.. | .. |
---|
18509 | 18612 | if (!image) |
---|
18510 | 18613 | return 0; |
---|
18511 | 18614 | |
---|
18512 | | - rd_len = dhd_kernel_read_compat(fp, fp->f_pos, str, len); |
---|
| 18615 | + rd_len = kernel_read_compat(fp, fp->f_pos, str, len); |
---|
18513 | 18616 | str_end = strnchr(str, len, '\n'); |
---|
18514 | 18617 | if (str_end == NULL) { |
---|
18515 | 18618 | goto err; |
---|
.. | .. |
---|
18534 | 18637 | return 0; |
---|
18535 | 18638 | } |
---|
18536 | 18639 | |
---|
18537 | | - size = dhd_i_size_read(file_inode(fp)); |
---|
| 18640 | + size = i_size_read(file_inode(fp)); |
---|
18538 | 18641 | |
---|
18539 | 18642 | return size; |
---|
18540 | 18643 | } |
---|
.. | .. |
---|
18543 | 18646 | dhd_os_close_image1(dhd_pub_t *pub, void *image) |
---|
18544 | 18647 | { |
---|
18545 | 18648 | if (image) { |
---|
18546 | | - dhd_filp_close((struct file *)image, NULL); |
---|
| 18649 | + filp_close((struct file *)image, NULL); |
---|
18547 | 18650 | } |
---|
18548 | 18651 | } |
---|
18549 | 18652 | |
---|
.. | .. |
---|
20886 | 20989 | #endif |
---|
20887 | 20990 | |
---|
20888 | 20991 | /* open file to write */ |
---|
20889 | | - fp = dhd_filp_open(file_name, flags, 0664); |
---|
20890 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 20992 | + fp = filp_open(file_name, flags, 0664); |
---|
| 20993 | + if (IS_ERR(fp)) { |
---|
20891 | 20994 | DHD_ERROR(("open file error, err = %ld\n", PTR_ERR(fp))); |
---|
20892 | 20995 | goto exit; |
---|
20893 | 20996 | } |
---|
20894 | 20997 | |
---|
20895 | 20998 | /* Write buf to file */ |
---|
20896 | | - ret = dhd_vfs_write(fp, buf, size, &pos); |
---|
| 20999 | + ret = vfs_write(fp, buf, size, &pos); |
---|
20897 | 21000 | if (ret < 0) { |
---|
20898 | 21001 | DHD_ERROR(("write file error, err = %d\n", ret)); |
---|
20899 | 21002 | goto exit; |
---|
.. | .. |
---|
20901 | 21004 | |
---|
20902 | 21005 | /* Sync file from filesystem to physical media */ |
---|
20903 | 21006 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)) |
---|
20904 | | - ret = dhd_vfs_fsync(fp, 0); |
---|
| 21007 | + ret = vfs_fsync(fp, 0); |
---|
20905 | 21008 | #else |
---|
20906 | 21009 | ret = vfs_fsync(fp, fp->f_path.dentry, 0); |
---|
20907 | 21010 | #endif |
---|
.. | .. |
---|
20914 | 21017 | exit: |
---|
20915 | 21018 | /* close file before return */ |
---|
20916 | 21019 | if (!IS_ERR(fp)) |
---|
20917 | | - dhd_filp_close(fp, current->files); |
---|
| 21020 | + filp_close(fp, current->files); |
---|
20918 | 21021 | |
---|
20919 | 21022 | /* restore previous address limit */ |
---|
20920 | 21023 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
.. | .. |
---|
21106 | 21209 | */ |
---|
21107 | 21210 | file_mode = O_CREAT | O_WRONLY | O_SYNC; |
---|
21108 | 21211 | { |
---|
21109 | | - struct file *fp = dhd_filp_open(memdump_path, file_mode, 0664); |
---|
| 21212 | + struct file *fp = filp_open(memdump_path, file_mode, 0664); |
---|
21110 | 21213 | /* Check if it is live Brix image having /installmedia, else use /data */ |
---|
21111 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 21214 | + if (IS_ERR(fp)) { |
---|
21112 | 21215 | DHD_ERROR(("open file %s, try /data/\n", memdump_path)); |
---|
21113 | 21216 | snprintf(memdump_path, sizeof(memdump_path), "%s%s_%s_" "%s", |
---|
21114 | 21217 | "/data/", fname, memdump_type, dhd->debug_dump_time_str); |
---|
21115 | 21218 | } else { |
---|
21116 | | - dhd_filp_close(fp, NULL); |
---|
| 21219 | + filp_close(fp, NULL); |
---|
21117 | 21220 | } |
---|
21118 | 21221 | } |
---|
21119 | 21222 | #else |
---|
.. | .. |
---|
21761 | 21864 | void |
---|
21762 | 21865 | dhd_os_oob_irq_wake_lock_timeout(dhd_pub_t *pub, int val) |
---|
21763 | 21866 | { |
---|
21764 | | -#ifdef CONFIG_HAS_WAKELOCK |
---|
21765 | 21867 | dhd_info_t *dhd = (dhd_info_t *)(pub->info); |
---|
21766 | 21868 | |
---|
21767 | 21869 | if (dhd) { |
---|
| 21870 | +#ifdef CONFIG_HAS_WAKELOCK |
---|
21768 | 21871 | dhd_wake_lock_timeout(&dhd->wl_intrwake, msecs_to_jiffies(val)); |
---|
21769 | | - } |
---|
| 21872 | +#else |
---|
| 21873 | + printk("%s: =========\n",__FUNCTION__); |
---|
| 21874 | + wake_lock_timeout(&dhd->rx_wakelock, 5*HZ); |
---|
21770 | 21875 | #endif /* CONFIG_HAS_WAKELOCK */ |
---|
| 21876 | + } |
---|
21771 | 21877 | } |
---|
21772 | 21878 | |
---|
21773 | 21879 | void |
---|
.. | .. |
---|
21917 | 22023 | #ifdef DHD_TRACE_WAKE_LOCK |
---|
21918 | 22024 | dhd_wk_lock_trace_init(dhd); |
---|
21919 | 22025 | #endif /* DHD_TRACE_WAKE_LOCK */ |
---|
| 22026 | + wake_lock_init(&dhd->rx_wakelock, WAKE_LOCK_SUSPEND, "wlan_rx_wakelock"); |
---|
21920 | 22027 | } |
---|
21921 | 22028 | |
---|
21922 | 22029 | void dhd_os_wake_lock_destroy(struct dhd_info *dhd) |
---|
.. | .. |
---|
21949 | 22056 | while (dhd_os_wake_unlock(&dhd->pub)); |
---|
21950 | 22057 | } |
---|
21951 | 22058 | #endif /* CONFIG_HAS_WAKELOCK */ |
---|
| 22059 | + wake_lock_destroy(&dhd->rx_wakelock); |
---|
21952 | 22060 | } |
---|
21953 | 22061 | |
---|
21954 | 22062 | bool dhd_os_check_if_up(dhd_pub_t *pub) |
---|
.. | .. |
---|
22473 | 22581 | loff_t pos = 0; |
---|
22474 | 22582 | |
---|
22475 | 22583 | /* Read memdump info from the file */ |
---|
22476 | | - fp = dhd_filp_open(filepath, file_mode, 0); |
---|
22477 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 22584 | + fp = filp_open(filepath, file_mode, 0); |
---|
| 22585 | + if (IS_ERR(fp)) { |
---|
22478 | 22586 | DHD_ERROR(("%s: File [%s] doesn't exist\n", __FUNCTION__, filepath)); |
---|
22479 | 22587 | #if defined(CONFIG_X86) && defined(OEM_ANDROID) |
---|
22480 | 22588 | /* Check if it is Live Brix Image */ |
---|
.. | .. |
---|
22484 | 22592 | /* Try if it is Installed Brix Image */ |
---|
22485 | 22593 | filepath = RNDINFO_INST".in"; |
---|
22486 | 22594 | DHD_ERROR(("%s: Try File [%s]\n", __FUNCTION__, filepath)); |
---|
22487 | | - fp = dhd_filp_open(filepath, file_mode, 0); |
---|
22488 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 22595 | + fp = filp_open(filepath, file_mode, 0); |
---|
| 22596 | + if (IS_ERR(fp)) { |
---|
22489 | 22597 | DHD_ERROR(("%s: File [%s] doesn't exist\n", __FUNCTION__, filepath)); |
---|
22490 | 22598 | goto err1; |
---|
22491 | 22599 | } |
---|
.. | .. |
---|
22498 | 22606 | set_fs(KERNEL_DS); |
---|
22499 | 22607 | |
---|
22500 | 22608 | /* Handle success case */ |
---|
22501 | | - ret = dhd_vfs_read(fp, (char *)&dhd->rnd_len, sizeof(dhd->rnd_len), &pos); |
---|
| 22609 | + ret = vfs_read(fp, (char *)&dhd->rnd_len, sizeof(dhd->rnd_len), &pos); |
---|
22502 | 22610 | if (ret < 0) { |
---|
22503 | 22611 | DHD_ERROR(("%s: rnd_len read error, ret=%d\n", __FUNCTION__, ret)); |
---|
22504 | 22612 | goto err2; |
---|
.. | .. |
---|
22510 | 22618 | goto err2; |
---|
22511 | 22619 | } |
---|
22512 | 22620 | |
---|
22513 | | - ret = dhd_vfs_read(fp, (char *)dhd->rnd_buf, dhd->rnd_len, &pos); |
---|
| 22621 | + ret = vfs_read(fp, (char *)dhd->rnd_buf, dhd->rnd_len, &pos); |
---|
22514 | 22622 | if (ret < 0) { |
---|
22515 | 22623 | DHD_ERROR(("%s: rnd_buf read error, ret=%d\n", __FUNCTION__, ret)); |
---|
22516 | 22624 | goto err3; |
---|
22517 | 22625 | } |
---|
22518 | 22626 | |
---|
22519 | 22627 | set_fs(old_fs); |
---|
22520 | | - dhd_filp_close(fp, NULL); |
---|
| 22628 | + filp_close(fp, NULL); |
---|
22521 | 22629 | |
---|
22522 | 22630 | DHD_ERROR(("%s: RND read from %s\n", __FUNCTION__, filepath)); |
---|
22523 | 22631 | return BCME_OK; |
---|
.. | .. |
---|
22527 | 22635 | dhd->rnd_buf = NULL; |
---|
22528 | 22636 | err2: |
---|
22529 | 22637 | set_fs(old_fs); |
---|
22530 | | - dhd_filp_close(fp, NULL); |
---|
| 22638 | + filp_close(fp, NULL); |
---|
22531 | 22639 | err1: |
---|
22532 | 22640 | return BCME_ERROR; |
---|
22533 | 22641 | } |
---|
.. | .. |
---|
22543 | 22651 | loff_t pos = 0; |
---|
22544 | 22652 | |
---|
22545 | 22653 | /* Read memdump info from the file */ |
---|
22546 | | - fp = dhd_filp_open(filepath, file_mode, 0664); |
---|
22547 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 22654 | + fp = filp_open(filepath, file_mode, 0664); |
---|
| 22655 | + if (IS_ERR(fp)) { |
---|
22548 | 22656 | DHD_ERROR(("%s: File [%s] doesn't exist\n", __FUNCTION__, filepath)); |
---|
22549 | 22657 | #if defined(CONFIG_X86) && defined(OEM_ANDROID) |
---|
22550 | 22658 | /* Check if it is Live Brix Image */ |
---|
.. | .. |
---|
22554 | 22662 | /* Try if it is Installed Brix Image */ |
---|
22555 | 22663 | filepath = RNDINFO_INST".out"; |
---|
22556 | 22664 | DHD_ERROR(("%s: Try File [%s]\n", __FUNCTION__, filepath)); |
---|
22557 | | - fp = dhd_filp_open(filepath, file_mode, 0664); |
---|
22558 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 22665 | + fp = filp_open(filepath, file_mode, 0664); |
---|
| 22666 | + if (IS_ERR(fp)) { |
---|
22559 | 22667 | DHD_ERROR(("%s: File [%s] doesn't exist\n", __FUNCTION__, filepath)); |
---|
22560 | 22668 | goto err1; |
---|
22561 | 22669 | } |
---|
.. | .. |
---|
22568 | 22676 | set_fs(KERNEL_DS); |
---|
22569 | 22677 | |
---|
22570 | 22678 | /* Handle success case */ |
---|
22571 | | - ret = dhd_vfs_write(fp, (char *)&rnd_len, sizeof(rnd_len), &pos); |
---|
| 22679 | + ret = vfs_write(fp, (char *)&rnd_len, sizeof(rnd_len), &pos); |
---|
22572 | 22680 | if (ret < 0) { |
---|
22573 | 22681 | DHD_ERROR(("%s: rnd_len write error, ret=%d\n", __FUNCTION__, ret)); |
---|
22574 | 22682 | goto err2; |
---|
22575 | 22683 | } |
---|
22576 | 22684 | |
---|
22577 | | - ret = dhd_vfs_write(fp, (char *)rnd_buf, rnd_len, &pos); |
---|
| 22685 | + ret = vfs_write(fp, (char *)rnd_buf, rnd_len, &pos); |
---|
22578 | 22686 | if (ret < 0) { |
---|
22579 | 22687 | DHD_ERROR(("%s: rnd_buf write error, ret=%d\n", __FUNCTION__, ret)); |
---|
22580 | 22688 | goto err2; |
---|
22581 | 22689 | } |
---|
22582 | 22690 | |
---|
22583 | 22691 | set_fs(old_fs); |
---|
22584 | | - dhd_filp_close(fp, NULL); |
---|
| 22692 | + filp_close(fp, NULL); |
---|
22585 | 22693 | DHD_ERROR(("%s: RND written to %s\n", __FUNCTION__, filepath)); |
---|
22586 | 22694 | return BCME_OK; |
---|
22587 | 22695 | |
---|
22588 | 22696 | err2: |
---|
22589 | 22697 | set_fs(old_fs); |
---|
22590 | | - dhd_filp_close(fp, NULL); |
---|
| 22698 | + filp_close(fp, NULL); |
---|
22591 | 22699 | err1: |
---|
22592 | 22700 | return BCME_ERROR; |
---|
22593 | 22701 | |
---|
.. | .. |
---|
24505 | 24613 | else |
---|
24506 | 24614 | file_mode = O_CREAT | O_RDWR | O_SYNC; |
---|
24507 | 24615 | |
---|
24508 | | - fp = dhd_filp_open(dump_path, file_mode, 0664); |
---|
24509 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 24616 | + fp = filp_open(dump_path, file_mode, 0664); |
---|
| 24617 | + if (IS_ERR(fp)) { |
---|
24510 | 24618 | /* If android installed image, try '/data' directory */ |
---|
24511 | 24619 | #if defined(CONFIG_X86) && defined(OEM_ANDROID) |
---|
24512 | 24620 | DHD_ERROR(("%s: File open error on Installed android image, trying /data...\n", |
---|
.. | .. |
---|
24517 | 24625 | sizeof(dump_path) - strlen(dump_path), |
---|
24518 | 24626 | "_%s", dhdp->debug_dump_time_str); |
---|
24519 | 24627 | } |
---|
24520 | | - fp = dhd_filp_open(dump_path, file_mode, 0664); |
---|
24521 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 24628 | + fp = filp_open(dump_path, file_mode, 0664); |
---|
| 24629 | + if (IS_ERR(fp)) { |
---|
24522 | 24630 | ret = PTR_ERR(fp); |
---|
24523 | 24631 | DHD_ERROR(("open file error, err = %d\n", ret)); |
---|
24524 | 24632 | goto exit2; |
---|
.. | .. |
---|
24532 | 24640 | } |
---|
24533 | 24641 | |
---|
24534 | 24642 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
24535 | | - ret = dhd_vfs_stat(dump_path, &stat); |
---|
| 24643 | + ret = vfs_stat(dump_path, &stat); |
---|
24536 | 24644 | if (ret < 0) { |
---|
24537 | 24645 | DHD_ERROR(("file stat error, err = %d\n", ret)); |
---|
24538 | 24646 | goto exit2; |
---|
.. | .. |
---|
24701 | 24809 | |
---|
24702 | 24810 | exit2: |
---|
24703 | 24811 | if (!IS_ERR(fp) && fp != NULL) { |
---|
24704 | | - dhd_filp_close(fp, NULL); |
---|
| 24812 | + filp_close(fp, NULL); |
---|
24705 | 24813 | DHD_ERROR(("%s: Finished writing log dump to file - '%s' \n", |
---|
24706 | 24814 | __FUNCTION__, dump_path)); |
---|
24707 | 24815 | } |
---|
.. | .. |
---|
24736 | 24844 | int ret = BCME_OK; |
---|
24737 | 24845 | |
---|
24738 | 24846 | if (fp) { |
---|
24739 | | - ret = dhd_vfs_write(fp, mem_buf, buf_len, (loff_t *)pos); |
---|
| 24847 | + ret = vfs_write(fp, mem_buf, buf_len, (loff_t *)pos); |
---|
24740 | 24848 | if (ret < 0) { |
---|
24741 | 24849 | DHD_ERROR(("write file error, err = %d\n", ret)); |
---|
24742 | 24850 | goto exit; |
---|
.. | .. |
---|
26637 | 26745 | struct file *fp; |
---|
26638 | 26746 | char *filepath = VENDOR_PATH CONFIG_BCMDHD_CLM_PATH; |
---|
26639 | 26747 | |
---|
26640 | | - fp = dhd_filp_open(filepath, O_RDONLY, 0); |
---|
26641 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 26748 | + fp = filp_open(filepath, O_RDONLY, 0); |
---|
| 26749 | + if (IS_ERR(fp)) { |
---|
26642 | 26750 | DHD_ERROR(("%s: ----- blob file doesn't exist (%s) -----\n", __FUNCTION__, |
---|
26643 | 26751 | filepath)); |
---|
26644 | 26752 | dhdp->is_blob = FALSE; |
---|
.. | .. |
---|
26650 | 26758 | #else |
---|
26651 | 26759 | BCM_REFERENCE(fw_path); |
---|
26652 | 26760 | #endif /* SKIP_CONCATE_BLOB */ |
---|
26653 | | - dhd_filp_close(fp, NULL); |
---|
| 26761 | + filp_close(fp, NULL); |
---|
26654 | 26762 | } |
---|
26655 | 26763 | } |
---|
26656 | 26764 | #endif /* DHD_BLOB_EXISTENCE_CHECK */ |
---|
.. | .. |
---|
26807 | 26915 | #endif |
---|
26808 | 26916 | |
---|
26809 | 26917 | /* File is always created. */ |
---|
26810 | | - fp = dhd_filp_open(filepath, O_RDWR | O_CREAT, 0664); |
---|
26811 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 26918 | + fp = filp_open(filepath, O_RDWR | O_CREAT, 0664); |
---|
| 26919 | + if (IS_ERR(fp)) { |
---|
26812 | 26920 | DHD_ERROR(("%s: Couldn't open file '%s' err %ld\n", |
---|
26813 | 26921 | __FUNCTION__, filepath, PTR_ERR(fp))); |
---|
26814 | 26922 | ret = BCME_ERROR; |
---|
26815 | 26923 | } else { |
---|
26816 | 26924 | if (fp->f_mode & FMODE_WRITE) { |
---|
26817 | | - ret = dhd_vfs_write(fp, buf, buf_len, &fp->f_pos); |
---|
| 26925 | + ret = vfs_write(fp, buf, buf_len, &fp->f_pos); |
---|
26818 | 26926 | if (ret < 0) { |
---|
26819 | 26927 | DHD_ERROR(("%s: Couldn't write file '%s'\n", |
---|
26820 | 26928 | __FUNCTION__, filepath)); |
---|
.. | .. |
---|
26823 | 26931 | ret = BCME_OK; |
---|
26824 | 26932 | } |
---|
26825 | 26933 | } |
---|
26826 | | - dhd_filp_close(fp, NULL); |
---|
| 26934 | + filp_close(fp, NULL); |
---|
26827 | 26935 | } |
---|
26828 | 26936 | |
---|
26829 | 26937 | /* restore previous address limit */ |
---|
.. | .. |
---|
26849 | 26957 | set_fs(KERNEL_DS); |
---|
26850 | 26958 | #endif |
---|
26851 | 26959 | |
---|
26852 | | - fp = dhd_filp_open(filepath, O_RDONLY, 0); |
---|
26853 | | - if (IS_ERR(fp) || (fp == NULL)) { |
---|
| 26960 | + fp = filp_open(filepath, O_RDONLY, 0); |
---|
| 26961 | + if (IS_ERR(fp)) { |
---|
26854 | 26962 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
26855 | 26963 | set_fs(old_fs); |
---|
26856 | 26964 | #endif |
---|
.. | .. |
---|
26858 | 26966 | return BCME_ERROR; |
---|
26859 | 26967 | } |
---|
26860 | 26968 | |
---|
26861 | | - ret = dhd_kernel_read_compat(fp, 0, buf, buf_len); |
---|
26862 | | - dhd_filp_close(fp, NULL); |
---|
| 26969 | + ret = kernel_read_compat(fp, 0, buf, buf_len); |
---|
| 26970 | + filp_close(fp, NULL); |
---|
26863 | 26971 | |
---|
26864 | 26972 | /* restore previous address limit */ |
---|
26865 | 26973 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0)) |
---|
.. | .. |
---|
29659 | 29767 | } |
---|
29660 | 29768 | /* END of DHD RING */ |
---|
29661 | 29769 | |
---|
| 29770 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)) |
---|
| 29771 | +#define DHD_VFS_INODE(dir) (dir->d_inode) |
---|
| 29772 | +#else |
---|
| 29773 | +#define DHD_VFS_INODE(dir) d_inode(dir) |
---|
| 29774 | +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) */ |
---|
| 29775 | + |
---|
| 29776 | +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)) |
---|
| 29777 | +#define DHD_VFS_UNLINK(dir, b, c) vfs_unlink(DHD_VFS_INODE(dir), b) |
---|
| 29778 | +#else |
---|
| 29779 | +#define DHD_VFS_UNLINK(dir, b, c) vfs_unlink(DHD_VFS_INODE(dir), b, c) |
---|
| 29780 | +#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) */ |
---|
| 29781 | + |
---|
29662 | 29782 | #if ((defined DHD_DUMP_MNGR) || (defined DNGL_AXI_ERROR_LOGGING)) |
---|
29663 | 29783 | int |
---|
29664 | 29784 | dhd_file_delete(char *path) |
---|
29665 | 29785 | { |
---|
29666 | | - struct path file_path = {.dentry = 0}; |
---|
| 29786 | + struct path file_path; |
---|
29667 | 29787 | int err; |
---|
29668 | 29788 | struct dentry *dir; |
---|
29669 | 29789 | |
---|
29670 | | - err = dhd_kern_path(path, 0, &file_path); |
---|
| 29790 | + err = kern_path(path, 0, &file_path); |
---|
29671 | 29791 | |
---|
29672 | 29792 | if (err < 0) { |
---|
29673 | 29793 | DHD_ERROR(("Failed to get kern-path delete file: %s error: %d\n", path, err)); |
---|