hc
2024-05-16 8d2a02b24d66aa359e83eebc1ed3c0f85367a1cb
kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux.c
old mode 100644new mode 100755
....@@ -65,6 +65,9 @@
6565 #include <asm/uaccess.h>
6666 #include <asm/unaligned.h>
6767 #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 */
6871
6972 #include <epivers.h>
7073 #include <bcmutils.h>
....@@ -367,6 +370,7 @@
367370 static void dhd_hang_process(struct work_struct *work_data);
368371 #endif /* OEM_ANDROID */
369372 MODULE_LICENSE("GPL and additional rights");
373
+MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
370374
371375 #if defined(MULTIPLE_SUPPLICANT)
372376 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25))
....@@ -1177,9 +1181,6 @@
11771181 dhd_conf_set_suspend_resume(dhd, suspend);
11781182 DHD_OS_WAKE_LOCK_RESTORE(dhd);
11791183 } else {
1180
-#ifdef BCMDBUS
1181
- if (dhd->busstate == DHD_BUS_DATA) {
1182
-#endif
11831184 if (suspend_mode == PM_NOTIFIER || suspend_mode == SUSPEND_MODE_2)
11841185 dhd_conf_set_suspend_resume(dhd, suspend);
11851186 #if defined(SUPPORT_P2P_GO_PS) && defined(PROP_TXSTATUS)
....@@ -1187,11 +1188,6 @@
11871188 #endif /* defined(SUPPORT_P2P_GO_PS) && defined(PROP_TXSTATUS) */
11881189 if (suspend_mode == PM_NOTIFIER)
11891190 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
11951191 }
11961192
11971193 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) && (LINUX_VERSION_CODE <= \
....@@ -4764,11 +4760,6 @@
47644760 static void
47654761 __dhd_txflowcontrol(dhd_pub_t *dhdp, struct net_device *net, bool state)
47664762 {
4767
-
4768
- if (net->reg_state != NETREG_REGISTERED) {
4769
- return;
4770
- }
4771
-
47724763 if (state == ON) {
47734764 if (!netif_queue_stopped(net)) {
47744765 DHD_INFO(("%s: Stop Netif Queue\n", __FUNCTION__));
....@@ -9086,14 +9077,14 @@
90869077 {
90879078 struct file *fp;
90889079 const char *clm = VENDOR_PATH CONFIG_BCMDHD_CLM_PATH;
9080
+ fp = filp_open(clm, O_RDONLY, 0);
90899081
9090
- fp = dhd_filp_open(clm, O_RDONLY, 0);
9091
- if (IS_ERR(fp) || (fp == NULL)) {
9082
+ if (IS_ERR(fp)) {
90929083 DHD_ERROR(("%s: filp_open(%s) failed(%d) schedule wl_accel_work\n",
90939084 __FUNCTION__, clm, (int)IS_ERR(fp)));
90949085 return FALSE;
90959086 }
9096
- dhd_filp_close(fp, NULL);
9087
+ filp_close(fp, NULL);
90979088
90989089 return TRUE;
90999090 }
....@@ -10588,7 +10579,7 @@
1058810579 if (!fp || !buf || buflen == 0)
1058910580 return -1;
1059010581
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)
1059210583 return -1;
1059310584
1059410585 *posn = wr_posn;
....@@ -10604,7 +10595,7 @@
1060410595 if (!file || !buf)
1060510596 return -1;
1060610597
10607
- return dhd_vfs_read(filep, buf, size, &filep->f_pos);
10598
+ return vfs_read(filep, buf, size, &filep->f_pos);
1060810599 }
1060910600
1061010601 int
....@@ -10620,6 +10611,135 @@
1062010611 return 0;
1062110612 }
1062210613
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
+}
1062310743 #ifdef DHD_COREDUMP
1062410744 #define PC_FOUND_BIT 0x01
1062510745 #define LR_FOUND_BIT 0x02
....@@ -10679,8 +10799,8 @@
1067910799 set_fs(KERNEL_DS);
1068010800 #endif
1068110801
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)) {
1068410804 DHD_ERROR(("%s: Failed to open %s \n", __FUNCTION__, fname));
1068510805 goto fail;
1068610806 }
....@@ -10842,7 +10962,7 @@
1084210962 }
1084310963 #else
1084410964 if (!IS_ERR(filep))
10845
- dhd_filp_close(filep, NULL);
10965
+ filp_close(filep, NULL);
1084610966
1084710967 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
1084810968 set_fs(fs);
....@@ -11217,8 +11337,8 @@
1121711337 set_fs(KERNEL_DS);
1121811338 #endif
1121911339
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)) {
1122211342 DHD_ERROR(("%s: Failed to open the file %s \n", __FUNCTION__, str_file));
1122311343 goto fail;
1122411344 }
....@@ -11255,7 +11375,7 @@
1125511375 }
1125611376 }
1125711377
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));
1125911379 if (error != logstrs_size) {
1126011380 DHD_ERROR(("%s: %s read failed %d \n", __FUNCTION__, str_file, error));
1126111381 goto fail;
....@@ -11273,7 +11393,7 @@
1127311393 temp->rom_rodata_end = rodata_end;
1127411394 }
1127511395
11276
- dhd_filp_close(filep, NULL);
11396
+ filp_close(filep, NULL);
1127711397 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
1127811398 set_fs(fs);
1127911399 #endif
....@@ -11287,7 +11407,7 @@
1128711407
1128811408 fail1:
1128911409 if (!IS_ERR(filep))
11290
- dhd_filp_close(filep, NULL);
11410
+ filp_close(filep, NULL);
1129111411
1129211412 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
1129311413 set_fs(fs);
....@@ -11697,12 +11817,6 @@
1169711817 goto fail;
1169811818 }
1169911819 #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 */
1170611820 #ifdef WL_ESCAN
1170711821 /* Attach and link in the escan */
1170811822 if (wl_escan_attach(net) != 0) {
....@@ -11757,11 +11871,7 @@
1175711871 dhd_os_start_logging(&dhd->pub, BT_LOG_RING_NAME, 3, 0, 0, 0);
1175811872 #endif /* !OEM_ANDROID && BTLOG */
1175911873 #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);
1176511875 #ifdef DBG_PKT_MON_INIT_DEFAULT
1176611876 dhd_os_dbg_attach_pkt_monitor(&dhd->pub);
1176711877 #endif /* DBG_PKT_MON_INIT_DEFAULT */
....@@ -11869,6 +11979,13 @@
1186911979 }
1187011980 #endif /* DHD_PCIE_RUNTIMEPM */
1187111981
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
+
1187211989 #ifdef BTLOG
1187311990 skb_queue_head_init(&dhd->bt_log_queue);
1187411991 #endif /* BTLOG */
....@@ -11900,13 +12017,6 @@
1190012017 }
1190112018 }
1190212019 #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 */
1191012020
1191112021 dhd_state |= DHD_ATTACH_STATE_THREADS_CREATED;
1191212022
....@@ -12791,6 +12901,11 @@
1279112901 dhd_bus_l1ss_enable_rc_ep(dhdp->bus, TRUE);
1279212902 #endif /* BT_OVER_PCIE */
1279312903
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
+
1279412909 #if defined(CONFIG_ARCH_EXYNOS) && defined(BCMPCIE)
1279512910 #if !defined(CONFIG_SOC_EXYNOS8890) && !defined(SUPPORT_EXYNOS7420)
1279612911 /* XXX: JIRA SWWLAN-139454: Added L1ss enable
....@@ -13347,7 +13462,7 @@
1334713462
1334813463 old_fs = get_fs();
1334913464 set_fs(get_ds());
13350
- if ((ret = dhd_vfs_stat(config_path, &stat))) {
13465
+ if ((ret = vfs_stat(config_path, &stat))) {
1335113466 set_fs(old_fs);
1335213467 printk(KERN_ERR "%s: Failed to get information (%d)\n",
1335313468 config_path, ret);
....@@ -13810,8 +13925,12 @@
1381013925 else {
1381113926 bcmstrtok(&ptr, "\n", 0);
1381213927 /* Print fw version info */
13928
+ DHD_ERROR(("Firmware version = %s\n", buf));
1381313929 strncpy(fw_version, buf, FW_VER_STR_LEN);
1381413930 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 */
1381513934 }
1381613935
1381713936 /* query for 'wlc_ver' to get version info from firmware */
....@@ -13826,12 +13945,14 @@
1382613945 dhd->wlc_ver_major = wlc_ver.wlc_ver_major;
1382713946 dhd->wlc_ver_minor = wlc_ver.wlc_ver_minor;
1382813947 }
13948
+#ifdef BOARD_HIKEY
1382913949 /* Set op_mode as MFG_MODE if WLTEST is present in "wl ver" */
1383013950 if (strstr(fw_version, "WLTEST") != NULL) {
1383113951 DHD_ERROR(("%s: wl ver has WLTEST, setting op_mode as DHD_FLAG_MFG_MODE\n",
1383213952 __FUNCTION__));
1383313953 op_mode = DHD_FLAG_MFG_MODE;
1383413954 }
13955
+#endif /* BOARD_HIKEY */
1383513956 /* get a capabilities from firmware */
1383613957 ret = dhd_get_fw_capabilities(dhd);
1383713958
....@@ -13988,7 +14109,6 @@
1398814109
1398914110 DHD_ERROR(("Firmware up: op_mode=0x%04x, MAC="MACDBG"\n",
1399014111 dhd->op_mode, MAC2STRDBG(dhd->mac.octet)));
13991
- dhd_set_version_info(dhd, fw_version);
1399214112 #if defined(DHD_BLOB_EXISTENCE_CHECK)
1399314113 if (!dhd->is_blob)
1399414114 #endif /* DHD_BLOB_EXISTENCE_CHECK */
....@@ -14181,10 +14301,6 @@
1418114301 dhd_update_flow_prio_map(dhd, DHD_FLOW_PRIO_LLR_MAP);
1418214302 #endif /* defined(BCMPCIE) && defined(EAPOL_PKT_PRIO) */
1418314303
14184
-#if defined(BCMSDIO) && defined(DHD_LOSSLESS_ROAMING)
14185
- dhd_update_sdio_data_prio_map(dhd);
14186
-#endif /* BCMSDIO && DHD_LOSSLESS_ROAMING */
14187
-
1418814304 #ifdef ARP_OFFLOAD_SUPPORT
1418914305 DHD_ERROR(("arp_enable:%d arp_ol:%d\n",
1419014306 dhd->arpoe_enable, dhd->arpol_configured));
....@@ -14196,64 +14312,60 @@
1419614312 */
1419714313 #ifdef PKT_FILTER_SUPPORT
1419814314 /* 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";
1421214327
1421314328 #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;
1421914334 #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";
1422214337 #endif /* BLOCK_IPV6_PACKET */
1422314338
1422414339 #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";
1422714342 #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;
1423014345 #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
+ }
1424214357
1424314358 #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;
1425314368 #endif /* GAN_LITE_NAT_KEEPALIVE_FILTER */
14254
- } else
14255
- dhd_conf_discard_pkt_filter(dhd);
14256
- dhd_conf_add_pkt_filter(dhd);
1425714369
1425814370 #if defined(SOFTAP)
1425914371 if (ap_fw_loaded) {
....@@ -14495,7 +14607,6 @@
1449514607 dhd_set_bandlock(dhd);
1449614608
1449714609 done:
14498
- dhd_conf_postinit_ioctls(dhd);
1449914610 if (iov_buf) {
1450014611 MFREE(dhd->osh, iov_buf, WLC_IOCTL_SMLEN);
1450114612 }
....@@ -14764,12 +14875,14 @@
1476414875 fw_version[FW_VER_STR_LEN-1] = '\0';
1476514876 }
1476614877
14878
+#ifdef BOARD_HIKEY
1476714879 /* Set op_mode as MFG_MODE if WLTEST is present in "wl ver" */
1476814880 if (strstr(fw_version, "WLTEST") != NULL) {
1476914881 DHD_ERROR(("%s: wl ver has WLTEST, setting op_mode as DHD_FLAG_MFG_MODE\n",
1477014882 __FUNCTION__));
1477114883 op_mode = DHD_FLAG_MFG_MODE;
1477214884 }
14885
+#endif /* BOARD_HIKEY */
1477314886
1477414887 if ((!op_mode && dhd_get_fw_mode(dhd->info) == DHD_FLAG_MFG_MODE) ||
1477514888 (op_mode == DHD_FLAG_MFG_MODE)) {
....@@ -15325,7 +15438,7 @@
1532515438 }
1532615439
1532715440 #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) {
1532915442 DHD_ERROR(("%s: CLM set failed. Abort initialization.\n", __FUNCTION__));
1533015443 goto done;
1533115444 }
....@@ -15717,10 +15830,6 @@
1571715830 dhd_update_flow_prio_map(dhd, DHD_FLOW_PRIO_LLR_MAP);
1571815831 #endif /* defined(BCMPCIE) && defined(EAPOL_PKT_PRIO) */
1571915832
15720
-#if defined(BCMSDIO) && defined(DHD_LOSSLESS_ROAMING)
15721
- dhd_update_sdio_data_prio_map(dhd);
15722
-#endif /* BCMSDIO && DHD_LOSSLESS_ROAMING */
15723
-
1572415833 #ifdef RSSI_MONITOR_SUPPORT
1572515834 setbit(mask, WLC_E_RSSI_LQM);
1572615835 #endif /* RSSI_MONITOR_SUPPORT */
....@@ -15758,9 +15867,6 @@
1575815867 setbit(mask, WLC_E_DELTS_IND);
1575915868 #endif /* WL_BCNRECV */
1576015869 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 */
1576415870
1576515871 /* Write updated Event mask */
1576615872 eventmask_msg->ver = EVENTMSGS_VER;
....@@ -17265,9 +17371,6 @@
1726517371 #ifdef WL_ESCAN
1726617372 wl_escan_detach(dev);
1726717373 #endif /* WL_ESCAN */
17268
-#ifdef WL_TIMER
17269
- wl_timer_dettach(dhdp);
17270
-#endif /* WL_TIMER */
1727117374 #ifdef WL_EVENT
1727217375 wl_ext_event_dettach(dhdp);
1727317376 #endif /* WL_EVENT */
....@@ -17455,7 +17558,7 @@
1745517558 if (dhdp->dbg) {
1745617559 #ifdef DBG_PKT_MON
1745717560 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);
1745917562 #endif /* DBG_PKT_MON */
1746017563 }
1746117564 #endif /* DEBUGABILITY */
....@@ -18441,14 +18544,14 @@
1844118544 struct file *fp;
1844218545 int size;
1844318546
18444
- fp = dhd_filp_open(filename, O_RDONLY, 0);
18547
+ fp = filp_open(filename, O_RDONLY, 0);
1844518548 /*
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?
1844718550 * Alternative:
1844818551 * fp = open_namei(AT_FDCWD, filename, O_RD, 0);
1844918552 * ???
1845018553 */
18451
- if (IS_ERR(fp) || (fp == NULL)) {
18554
+ if (IS_ERR(fp)) {
1845218555 fp = NULL;
1845318556 goto err;
1845418557 }
....@@ -18459,7 +18562,7 @@
1845918562 goto err;
1846018563 }
1846118564
18462
- size = dhd_i_size_read(file_inode(fp));
18565
+ size = i_size_read(file_inode(fp));
1846318566 if (size <= 0) {
1846418567 DHD_ERROR(("%s: %s file size invalid %d\n", __FUNCTION__, filename, size));
1846518568 fp = NULL;
....@@ -18483,8 +18586,8 @@
1848318586 return 0;
1848418587 }
1848518588
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));
1848818591
1848918592 if (len >= size && size != rdlen) {
1849018593 return -EIO;
....@@ -18509,7 +18612,7 @@
1850918612 if (!image)
1851018613 return 0;
1851118614
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);
1851318616 str_end = strnchr(str, len, '\n');
1851418617 if (str_end == NULL) {
1851518618 goto err;
....@@ -18534,7 +18637,7 @@
1853418637 return 0;
1853518638 }
1853618639
18537
- size = dhd_i_size_read(file_inode(fp));
18640
+ size = i_size_read(file_inode(fp));
1853818641
1853918642 return size;
1854018643 }
....@@ -18543,7 +18646,7 @@
1854318646 dhd_os_close_image1(dhd_pub_t *pub, void *image)
1854418647 {
1854518648 if (image) {
18546
- dhd_filp_close((struct file *)image, NULL);
18649
+ filp_close((struct file *)image, NULL);
1854718650 }
1854818651 }
1854918652
....@@ -20886,14 +20989,14 @@
2088620989 #endif
2088720990
2088820991 /* 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)) {
2089120994 DHD_ERROR(("open file error, err = %ld\n", PTR_ERR(fp)));
2089220995 goto exit;
2089320996 }
2089420997
2089520998 /* Write buf to file */
20896
- ret = dhd_vfs_write(fp, buf, size, &pos);
20999
+ ret = vfs_write(fp, buf, size, &pos);
2089721000 if (ret < 0) {
2089821001 DHD_ERROR(("write file error, err = %d\n", ret));
2089921002 goto exit;
....@@ -20901,7 +21004,7 @@
2090121004
2090221005 /* Sync file from filesystem to physical media */
2090321006 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35))
20904
- ret = dhd_vfs_fsync(fp, 0);
21007
+ ret = vfs_fsync(fp, 0);
2090521008 #else
2090621009 ret = vfs_fsync(fp, fp->f_path.dentry, 0);
2090721010 #endif
....@@ -20914,7 +21017,7 @@
2091421017 exit:
2091521018 /* close file before return */
2091621019 if (!IS_ERR(fp))
20917
- dhd_filp_close(fp, current->files);
21020
+ filp_close(fp, current->files);
2091821021
2091921022 /* restore previous address limit */
2092021023 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
....@@ -21106,14 +21209,14 @@
2110621209 */
2110721210 file_mode = O_CREAT | O_WRONLY | O_SYNC;
2110821211 {
21109
- struct file *fp = dhd_filp_open(memdump_path, file_mode, 0664);
21212
+ struct file *fp = filp_open(memdump_path, file_mode, 0664);
2111021213 /* Check if it is live Brix image having /installmedia, else use /data */
21111
- if (IS_ERR(fp) || (fp == NULL)) {
21214
+ if (IS_ERR(fp)) {
2111221215 DHD_ERROR(("open file %s, try /data/\n", memdump_path));
2111321216 snprintf(memdump_path, sizeof(memdump_path), "%s%s_%s_" "%s",
2111421217 "/data/", fname, memdump_type, dhd->debug_dump_time_str);
2111521218 } else {
21116
- dhd_filp_close(fp, NULL);
21219
+ filp_close(fp, NULL);
2111721220 }
2111821221 }
2111921222 #else
....@@ -21761,13 +21864,16 @@
2176121864 void
2176221865 dhd_os_oob_irq_wake_lock_timeout(dhd_pub_t *pub, int val)
2176321866 {
21764
-#ifdef CONFIG_HAS_WAKELOCK
2176521867 dhd_info_t *dhd = (dhd_info_t *)(pub->info);
2176621868
2176721869 if (dhd) {
21870
+#ifdef CONFIG_HAS_WAKELOCK
2176821871 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);
2177021875 #endif /* CONFIG_HAS_WAKELOCK */
21876
+ }
2177121877 }
2177221878
2177321879 void
....@@ -21917,6 +22023,7 @@
2191722023 #ifdef DHD_TRACE_WAKE_LOCK
2191822024 dhd_wk_lock_trace_init(dhd);
2191922025 #endif /* DHD_TRACE_WAKE_LOCK */
22026
+ wake_lock_init(&dhd->rx_wakelock, WAKE_LOCK_SUSPEND, "wlan_rx_wakelock");
2192022027 }
2192122028
2192222029 void dhd_os_wake_lock_destroy(struct dhd_info *dhd)
....@@ -21949,6 +22056,7 @@
2194922056 while (dhd_os_wake_unlock(&dhd->pub));
2195022057 }
2195122058 #endif /* CONFIG_HAS_WAKELOCK */
22059
+ wake_lock_destroy(&dhd->rx_wakelock);
2195222060 }
2195322061
2195422062 bool dhd_os_check_if_up(dhd_pub_t *pub)
....@@ -22473,8 +22581,8 @@
2247322581 loff_t pos = 0;
2247422582
2247522583 /* 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)) {
2247822586 DHD_ERROR(("%s: File [%s] doesn't exist\n", __FUNCTION__, filepath));
2247922587 #if defined(CONFIG_X86) && defined(OEM_ANDROID)
2248022588 /* Check if it is Live Brix Image */
....@@ -22484,8 +22592,8 @@
2248422592 /* Try if it is Installed Brix Image */
2248522593 filepath = RNDINFO_INST".in";
2248622594 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)) {
2248922597 DHD_ERROR(("%s: File [%s] doesn't exist\n", __FUNCTION__, filepath));
2249022598 goto err1;
2249122599 }
....@@ -22498,7 +22606,7 @@
2249822606 set_fs(KERNEL_DS);
2249922607
2250022608 /* 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);
2250222610 if (ret < 0) {
2250322611 DHD_ERROR(("%s: rnd_len read error, ret=%d\n", __FUNCTION__, ret));
2250422612 goto err2;
....@@ -22510,14 +22618,14 @@
2251022618 goto err2;
2251122619 }
2251222620
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);
2251422622 if (ret < 0) {
2251522623 DHD_ERROR(("%s: rnd_buf read error, ret=%d\n", __FUNCTION__, ret));
2251622624 goto err3;
2251722625 }
2251822626
2251922627 set_fs(old_fs);
22520
- dhd_filp_close(fp, NULL);
22628
+ filp_close(fp, NULL);
2252122629
2252222630 DHD_ERROR(("%s: RND read from %s\n", __FUNCTION__, filepath));
2252322631 return BCME_OK;
....@@ -22527,7 +22635,7 @@
2252722635 dhd->rnd_buf = NULL;
2252822636 err2:
2252922637 set_fs(old_fs);
22530
- dhd_filp_close(fp, NULL);
22638
+ filp_close(fp, NULL);
2253122639 err1:
2253222640 return BCME_ERROR;
2253322641 }
....@@ -22543,8 +22651,8 @@
2254322651 loff_t pos = 0;
2254422652
2254522653 /* 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)) {
2254822656 DHD_ERROR(("%s: File [%s] doesn't exist\n", __FUNCTION__, filepath));
2254922657 #if defined(CONFIG_X86) && defined(OEM_ANDROID)
2255022658 /* Check if it is Live Brix Image */
....@@ -22554,8 +22662,8 @@
2255422662 /* Try if it is Installed Brix Image */
2255522663 filepath = RNDINFO_INST".out";
2255622664 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)) {
2255922667 DHD_ERROR(("%s: File [%s] doesn't exist\n", __FUNCTION__, filepath));
2256022668 goto err1;
2256122669 }
....@@ -22568,26 +22676,26 @@
2256822676 set_fs(KERNEL_DS);
2256922677
2257022678 /* 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);
2257222680 if (ret < 0) {
2257322681 DHD_ERROR(("%s: rnd_len write error, ret=%d\n", __FUNCTION__, ret));
2257422682 goto err2;
2257522683 }
2257622684
22577
- ret = dhd_vfs_write(fp, (char *)rnd_buf, rnd_len, &pos);
22685
+ ret = vfs_write(fp, (char *)rnd_buf, rnd_len, &pos);
2257822686 if (ret < 0) {
2257922687 DHD_ERROR(("%s: rnd_buf write error, ret=%d\n", __FUNCTION__, ret));
2258022688 goto err2;
2258122689 }
2258222690
2258322691 set_fs(old_fs);
22584
- dhd_filp_close(fp, NULL);
22692
+ filp_close(fp, NULL);
2258522693 DHD_ERROR(("%s: RND written to %s\n", __FUNCTION__, filepath));
2258622694 return BCME_OK;
2258722695
2258822696 err2:
2258922697 set_fs(old_fs);
22590
- dhd_filp_close(fp, NULL);
22698
+ filp_close(fp, NULL);
2259122699 err1:
2259222700 return BCME_ERROR;
2259322701
....@@ -24505,8 +24613,8 @@
2450524613 else
2450624614 file_mode = O_CREAT | O_RDWR | O_SYNC;
2450724615
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)) {
2451024618 /* If android installed image, try '/data' directory */
2451124619 #if defined(CONFIG_X86) && defined(OEM_ANDROID)
2451224620 DHD_ERROR(("%s: File open error on Installed android image, trying /data...\n",
....@@ -24517,8 +24625,8 @@
2451724625 sizeof(dump_path) - strlen(dump_path),
2451824626 "_%s", dhdp->debug_dump_time_str);
2451924627 }
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)) {
2452224630 ret = PTR_ERR(fp);
2452324631 DHD_ERROR(("open file error, err = %d\n", ret));
2452424632 goto exit2;
....@@ -24532,7 +24640,7 @@
2453224640 }
2453324641
2453424642 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
24535
- ret = dhd_vfs_stat(dump_path, &stat);
24643
+ ret = vfs_stat(dump_path, &stat);
2453624644 if (ret < 0) {
2453724645 DHD_ERROR(("file stat error, err = %d\n", ret));
2453824646 goto exit2;
....@@ -24701,7 +24809,7 @@
2470124809
2470224810 exit2:
2470324811 if (!IS_ERR(fp) && fp != NULL) {
24704
- dhd_filp_close(fp, NULL);
24812
+ filp_close(fp, NULL);
2470524813 DHD_ERROR(("%s: Finished writing log dump to file - '%s' \n",
2470624814 __FUNCTION__, dump_path));
2470724815 }
....@@ -24736,7 +24844,7 @@
2473624844 int ret = BCME_OK;
2473724845
2473824846 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);
2474024848 if (ret < 0) {
2474124849 DHD_ERROR(("write file error, err = %d\n", ret));
2474224850 goto exit;
....@@ -26637,8 +26745,8 @@
2663726745 struct file *fp;
2663826746 char *filepath = VENDOR_PATH CONFIG_BCMDHD_CLM_PATH;
2663926747
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)) {
2664226750 DHD_ERROR(("%s: ----- blob file doesn't exist (%s) -----\n", __FUNCTION__,
2664326751 filepath));
2664426752 dhdp->is_blob = FALSE;
....@@ -26650,7 +26758,7 @@
2665026758 #else
2665126759 BCM_REFERENCE(fw_path);
2665226760 #endif /* SKIP_CONCATE_BLOB */
26653
- dhd_filp_close(fp, NULL);
26761
+ filp_close(fp, NULL);
2665426762 }
2665526763 }
2665626764 #endif /* DHD_BLOB_EXISTENCE_CHECK */
....@@ -26807,14 +26915,14 @@
2680726915 #endif
2680826916
2680926917 /* 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)) {
2681226920 DHD_ERROR(("%s: Couldn't open file '%s' err %ld\n",
2681326921 __FUNCTION__, filepath, PTR_ERR(fp)));
2681426922 ret = BCME_ERROR;
2681526923 } else {
2681626924 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);
2681826926 if (ret < 0) {
2681926927 DHD_ERROR(("%s: Couldn't write file '%s'\n",
2682026928 __FUNCTION__, filepath));
....@@ -26823,7 +26931,7 @@
2682326931 ret = BCME_OK;
2682426932 }
2682526933 }
26826
- dhd_filp_close(fp, NULL);
26934
+ filp_close(fp, NULL);
2682726935 }
2682826936
2682926937 /* restore previous address limit */
....@@ -26849,8 +26957,8 @@
2684926957 set_fs(KERNEL_DS);
2685026958 #endif
2685126959
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)) {
2685426962 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
2685526963 set_fs(old_fs);
2685626964 #endif
....@@ -26858,8 +26966,8 @@
2685826966 return BCME_ERROR;
2685926967 }
2686026968
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);
2686326971
2686426972 /* restore previous address limit */
2686526973 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
....@@ -29659,15 +29767,27 @@
2965929767 }
2966029768 /* END of DHD RING */
2966129769
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
+
2966229782 #if ((defined DHD_DUMP_MNGR) || (defined DNGL_AXI_ERROR_LOGGING))
2966329783 int
2966429784 dhd_file_delete(char *path)
2966529785 {
29666
- struct path file_path = {.dentry = 0};
29786
+ struct path file_path;
2966729787 int err;
2966829788 struct dentry *dir;
2966929789
29670
- err = dhd_kern_path(path, 0, &file_path);
29790
+ err = kern_path(path, 0, &file_path);
2967129791
2967229792 if (err < 0) {
2967329793 DHD_ERROR(("Failed to get kern-path delete file: %s error: %d\n", path, err));