From: hwg Date: Thu, 5 Mar 2015 00:46:05 +0000 (+0800) Subject: wifi: update broadcom wifi driver bcmdhd to 1.201.34.2 X-Git-Tag: firefly_0821_release~4263^2~24 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=cb407500b891abdc8ec89f7e2c123976c35aa8a5;p=firefly-linux-kernel-4.4.55.git wifi: update broadcom wifi driver bcmdhd to 1.201.34.2 --- diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_linux.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_linux.c index 8ca3b8aeac38..98667ca39e1c 100755 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_linux.c +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmsdh_linux.c @@ -352,7 +352,8 @@ int bcmsdh_oob_intr_register(bcmsdh_info_t *bcmsdh, bcmsdh_cb_fn_t oob_irq_handl #endif bcmsdh_osinfo->oob_irq_enabled = TRUE; bcmsdh_osinfo->oob_irq_registered = TRUE; - return err; + + return 0; } void bcmsdh_oob_intr_unregister(bcmsdh_info_t *bcmsdh) @@ -377,7 +378,7 @@ void bcmsdh_oob_intr_unregister(bcmsdh_info_t *bcmsdh) free_irq(bcmsdh_osinfo->oob_irq_num, bcmsdh); bcmsdh_osinfo->oob_irq_registered = FALSE; } -#endif +#endif /* Module parameters specific to each host-controller driver */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c index 4c31ca721e62..ed1477a58f0b 100755 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_config.c @@ -1068,6 +1068,169 @@ dhd_conf_read_log_level(dhd_pub_t *dhd, char *bufp, uint len) } } +void +dhd_conf_read_wme_ac_params(dhd_pub_t *dhd, char *bufp, uint len) +{ + uint len_val; + char pick[MAXSZ_BUF]; + struct dhd_conf *conf = dhd->conf; + + /* Process WMM parameters */ + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "force_wme_ac="); + if (len_val) { + conf->force_wme_ac = (int)simple_strtol(pick, NULL, 10); + printf("%s: force_wme_ac = %d\n", __FUNCTION__, conf->force_wme_ac); + } + + if (conf->force_wme_ac) { + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "bk_aifsn="); + if (len_val) { + conf->wme.aifsn[AC_BK] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_BK aifsn = %d\n", __FUNCTION__, conf->wme.aifsn[AC_BK]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "bk_cwmin="); + if (len_val) { + conf->wme.cwmin[AC_BK] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_BK cwmin = %d\n", __FUNCTION__, conf->wme.cwmin[AC_BK]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "bk_cwmax="); + if (len_val) { + conf->wme.cwmax[AC_BK] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_BK cwmax = %d\n", __FUNCTION__, conf->wme.cwmax[AC_BK]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "be_aifsn="); + if (len_val) { + conf->wme.aifsn[AC_BE] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_BE aifsn = %d\n", __FUNCTION__, conf->wme.aifsn[AC_BE]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "be_cwmin="); + if (len_val) { + conf->wme.cwmin[AC_BE] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_BE cwmin = %d\n", __FUNCTION__, conf->wme.cwmin[AC_BE]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "be_cwmax="); + if (len_val) { + conf->wme.cwmax[AC_BE] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_BE cwmax = %d\n", __FUNCTION__, conf->wme.cwmax[AC_BE]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "vi_aifsn="); + if (len_val) { + conf->wme.aifsn[AC_VI] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_VI aifsn = %d\n", __FUNCTION__, conf->wme.aifsn[AC_VI]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "vi_cwmin="); + if (len_val) { + conf->wme.cwmin[AC_VI] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_VI cwmin = %d\n", __FUNCTION__, conf->wme.cwmin[AC_VI]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "vi_cwmax="); + if (len_val) { + conf->wme.cwmax[AC_VI] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_VI cwmax = %d\n", __FUNCTION__, conf->wme.cwmax[AC_VI]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "vo_aifsn="); + if (len_val) { + conf->wme.aifsn[AC_VO] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_VO aifsn = %d\n", __FUNCTION__, conf->wme.aifsn[AC_VO]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "vo_cwmin="); + if (len_val) { + conf->wme.cwmin[AC_VO] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_VO cwmin = %d\n", __FUNCTION__, conf->wme.cwmin[AC_VO]); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "vo_cwmax="); + if (len_val) { + conf->wme.cwmax[AC_VO] = (int)simple_strtol(pick, NULL, 10); + printf("%s: AC_VO cwmax = %d\n", __FUNCTION__, conf->wme.cwmax[AC_VO]); + } + } + +} + +void +dhd_conf_read_roam_params(dhd_pub_t *dhd, char *bufp, uint len) +{ + uint len_val; + char pick[MAXSZ_BUF]; + struct dhd_conf *conf = dhd->conf; + + /* Process roam */ + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "roam_off="); + if (len_val) { + if (!strncmp(pick, "0", len_val)) + conf->roam_off = 0; + else + conf->roam_off = 1; + printf("%s: roam_off = %d\n", __FUNCTION__, conf->roam_off); + } + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "roam_off_suspend="); + if (len_val) { + if (!strncmp(pick, "0", len_val)) + conf->roam_off_suspend = 0; + else + conf->roam_off_suspend = 1; + printf("%s: roam_off_suspend = %d\n", __FUNCTION__, + conf->roam_off_suspend); + } + + if (!conf->roam_off || !conf->roam_off_suspend) { + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "roam_trigger="); + if (len_val) + conf->roam_trigger[0] = (int)simple_strtol(pick, NULL, 10); + printf("%s: roam_trigger = %d\n", __FUNCTION__, + conf->roam_trigger[0]); + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "roam_scan_period="); + if (len_val) + conf->roam_scan_period[0] = (int)simple_strtol(pick, NULL, 10); + printf("%s: roam_scan_period = %d\n", __FUNCTION__, + conf->roam_scan_period[0]); + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "roam_delta="); + if (len_val) + conf->roam_delta[0] = (int)simple_strtol(pick, NULL, 10); + printf("%s: roam_delta = %d\n", __FUNCTION__, conf->roam_delta[0]); + + memset(pick, 0, MAXSZ_BUF); + len_val = process_config_vars(bufp, len, pick, "fullroamperiod="); + if (len_val) + conf->fullroamperiod = (int)simple_strtol(pick, NULL, 10); + printf("%s: fullroamperiod = %d\n", __FUNCTION__, + conf->fullroamperiod); + } + +} + /* * [fw_by_mac]: * fw_by_mac=[fw_mac_num] \ @@ -1130,6 +1293,8 @@ dhd_conf_read_config(dhd_pub_t *dhd) /* Process log_level */ dhd_conf_read_log_level(dhd, bufp, len); + dhd_conf_read_roam_params(dhd, bufp, len); + dhd_conf_read_wme_ac_params(dhd, bufp, len); /* Process fw_by_mac */ memset(pick, 0, MAXSZ_BUF); @@ -1280,57 +1445,6 @@ dhd_conf_read_config(dhd_pub_t *dhd) printf("\n"); } - /* Process roam */ - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "roam_off="); - if (len_val) { - if (!strncmp(pick, "0", len_val)) - conf->roam_off = 0; - else - conf->roam_off = 1; - printf("%s: roam_off = %d\n", __FUNCTION__, conf->roam_off); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "roam_off_suspend="); - if (len_val) { - if (!strncmp(pick, "0", len_val)) - conf->roam_off_suspend = 0; - else - conf->roam_off_suspend = 1; - printf("%s: roam_off_suspend = %d\n", __FUNCTION__, - conf->roam_off_suspend); - } - - if (!conf->roam_off || !conf->roam_off_suspend) { - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "roam_trigger="); - if (len_val) - conf->roam_trigger[0] = (int)simple_strtol(pick, NULL, 10); - printf("%s: roam_trigger = %d\n", __FUNCTION__, - conf->roam_trigger[0]); - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "roam_scan_period="); - if (len_val) - conf->roam_scan_period[0] = (int)simple_strtol(pick, NULL, 10); - printf("%s: roam_scan_period = %d\n", __FUNCTION__, - conf->roam_scan_period[0]); - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "roam_delta="); - if (len_val) - conf->roam_delta[0] = (int)simple_strtol(pick, NULL, 10); - printf("%s: roam_delta = %d\n", __FUNCTION__, conf->roam_delta[0]); - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "fullroamperiod="); - if (len_val) - conf->fullroamperiod = (int)simple_strtol(pick, NULL, 10); - printf("%s: fullroamperiod = %d\n", __FUNCTION__, - conf->fullroamperiod); - } - /* Process keep alive period */ memset(pick, 0, MAXSZ_BUF); len_val = process_config_vars(bufp, len, pick, "keep_alive_period="); @@ -1340,100 +1454,6 @@ dhd_conf_read_config(dhd_pub_t *dhd) conf->keep_alive_period); } - /* Process WMM parameters */ - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "force_wme_ac="); - if (len_val) { - conf->force_wme_ac = (int)simple_strtol(pick, NULL, 10); - printf("%s: force_wme_ac = %d\n", __FUNCTION__, conf->force_wme_ac); - } - - if (conf->force_wme_ac) { - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "bk_aifsn="); - if (len_val) { - conf->wme.aifsn[AC_BK] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_BK aifsn = %d\n", __FUNCTION__, conf->wme.aifsn[AC_BK]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "bk_cwmin="); - if (len_val) { - conf->wme.cwmin[AC_BK] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_BK cwmin = %d\n", __FUNCTION__, conf->wme.cwmin[AC_BK]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "bk_cwmax="); - if (len_val) { - conf->wme.cwmax[AC_BK] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_BK cwmax = %d\n", __FUNCTION__, conf->wme.cwmax[AC_BK]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "be_aifsn="); - if (len_val) { - conf->wme.aifsn[AC_BE] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_BE aifsn = %d\n", __FUNCTION__, conf->wme.aifsn[AC_BE]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "be_cwmin="); - if (len_val) { - conf->wme.cwmin[AC_BE] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_BE cwmin = %d\n", __FUNCTION__, conf->wme.cwmin[AC_BE]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "be_cwmax="); - if (len_val) { - conf->wme.cwmax[AC_BE] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_BE cwmax = %d\n", __FUNCTION__, conf->wme.cwmax[AC_BE]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "vi_aifsn="); - if (len_val) { - conf->wme.aifsn[AC_VI] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_VI aifsn = %d\n", __FUNCTION__, conf->wme.aifsn[AC_VI]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "vi_cwmin="); - if (len_val) { - conf->wme.cwmin[AC_VI] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_VI cwmin = %d\n", __FUNCTION__, conf->wme.cwmin[AC_VI]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "vi_cwmax="); - if (len_val) { - conf->wme.cwmax[AC_VI] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_VI cwmax = %d\n", __FUNCTION__, conf->wme.cwmax[AC_VI]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "vo_aifsn="); - if (len_val) { - conf->wme.aifsn[AC_VO] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_VO aifsn = %d\n", __FUNCTION__, conf->wme.aifsn[AC_VO]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "vo_cwmin="); - if (len_val) { - conf->wme.cwmin[AC_VO] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_VO cwmin = %d\n", __FUNCTION__, conf->wme.cwmin[AC_VO]); - } - - memset(pick, 0, MAXSZ_BUF); - len_val = process_config_vars(bufp, len, pick, "vo_cwmax="); - if (len_val) { - conf->wme.cwmax[AC_VO] = (int)simple_strtol(pick, NULL, 10); - printf("%s: AC_VO cwmax = %d\n", __FUNCTION__, conf->wme.cwmax[AC_VO]); - } - } - /* Process STBC parameters */ memset(pick, 0, MAXSZ_BUF); len_val = process_config_vars(bufp, len, pick, "stbc="); diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c index a0461c7b96dd..6690e6e972a6 100755 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/dhd_linux_platdev.c @@ -484,8 +484,8 @@ void wifi_ctrlfunc_unregister_drv(void) adapter = &dhd_wifi_platdata->adapters[0]; if (is_power_on) { wifi_platform_set_power(adapter, FALSE, WIFI_TURNOFF_DELAY); - wifi_platform_bus_enumerate(adapter, FALSE); } + wifi_platform_bus_enumerate(adapter, FALSE); } #endif /* !defined(CONFIG_DTS) */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/bcmsdh.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/bcmsdh.h index aeb7dc944d50..ac4444a32c46 100755 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/bcmsdh.h +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/bcmsdh.h @@ -19,7 +19,7 @@ #define BCMSDH_INFO_VAL 0x0002 /* Info */ extern const uint bcmsdh_msglevel; -#define BCMSDH_ERROR(x) +#define BCMSDH_ERROR(x) printf x #define BCMSDH_INFO(x) #if defined(BCMSDIO) && (defined(BCMSDIOH_STD) || defined(BCMSDIOH_BCM) || \ @@ -210,7 +210,7 @@ extern int bcmsdh_oob_intr_register(bcmsdh_info_t *bcmsdh, bcmsdh_cb_fn_t oob_ir void* oob_irq_handler_context); extern void bcmsdh_oob_intr_unregister(bcmsdh_info_t *sdh); extern void bcmsdh_oob_intr_set(bcmsdh_info_t *sdh, bool enable); -#endif +#endif extern void bcmsdh_dev_pm_stay_awake(bcmsdh_info_t *sdh); extern void bcmsdh_dev_relax(bcmsdh_info_t *sdh); extern bool bcmsdh_dev_pm_enabled(bcmsdh_info_t *sdh); diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/epivers.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/epivers.h index 40a740a3ff18..7e5c29e46d99 100755 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/epivers.h +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/epivers.h @@ -25,6 +25,6 @@ #define EPI_VERSION_DEV 1.201.34 /* Driver Version String, ASCII, 32 chars max */ -#define EPI_VERSION_STR "1.201.34.1 (r491657)" +#define EPI_VERSION_STR "1.201.34.2 (r491657)" #endif /* _epivers_h_ */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/hndrte_armtrap.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/hndrte_armtrap.h deleted file mode 100644 index 83adf384b26f..000000000000 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/hndrte_armtrap.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * HNDRTE arm trap handling. - * - * $Copyright Open Broadcom Corporation$ - * - * $Id: hndrte_armtrap.h 261365 2011-05-24 20:42:23Z $ - */ - -#ifndef _hndrte_armtrap_h -#define _hndrte_armtrap_h - - -/* ARM trap handling */ - -/* Trap types defined by ARM (see arminc.h) */ - -/* Trap locations in lo memory */ -#define TRAP_STRIDE 4 -#define FIRST_TRAP TR_RST -#define LAST_TRAP (TR_FIQ * TRAP_STRIDE) - -#if defined(__ARM_ARCH_4T__) -#define MAX_TRAP_TYPE (TR_FIQ + 1) -#elif defined(__ARM_ARCH_7M__) -#define MAX_TRAP_TYPE (TR_ISR + ARMCM3_NUMINTS) -#endif /* __ARM_ARCH_7M__ */ - -/* The trap structure is defined here as offsets for assembly */ -#define TR_TYPE 0x00 -#define TR_EPC 0x04 -#define TR_CPSR 0x08 -#define TR_SPSR 0x0c -#define TR_REGS 0x10 -#define TR_REG(n) (TR_REGS + (n) * 4) -#define TR_SP TR_REG(13) -#define TR_LR TR_REG(14) -#define TR_PC TR_REG(15) - -#define TRAP_T_SIZE 80 - -#ifndef _LANGUAGE_ASSEMBLY - -#include - -typedef struct _trap_struct { - uint32 type; - uint32 epc; - uint32 cpsr; - uint32 spsr; - uint32 r0; /* a1 */ - uint32 r1; /* a2 */ - uint32 r2; /* a3 */ - uint32 r3; /* a4 */ - uint32 r4; /* v1 */ - uint32 r5; /* v2 */ - uint32 r6; /* v3 */ - uint32 r7; /* v4 */ - uint32 r8; /* v5 */ - uint32 r9; /* sb/v6 */ - uint32 r10; /* sl/v7 */ - uint32 r11; /* fp/v8 */ - uint32 r12; /* ip */ - uint32 r13; /* sp */ - uint32 r14; /* lr */ - uint32 pc; /* r15 */ -} trap_t; - -#endif /* !_LANGUAGE_ASSEMBLY */ - -#endif /* _hndrte_armtrap_h */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/hndrte_cons.h b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/hndrte_cons.h deleted file mode 100644 index 0af5d88da574..000000000000 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include/hndrte_cons.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Console support for hndrte. - * - * $Copyright Open Broadcom Corporation$ - * - * $Id: hndrte_cons.h 383834 2013-02-07 23:21:51Z $ - */ -#ifndef _HNDRTE_CONS_H -#define _HNDRTE_CONS_H - -#include - -#define CBUF_LEN (128) - -#define LOG_BUF_LEN 1024 - -typedef struct { - uint32 buf; /* Can't be pointer on (64-bit) hosts */ - uint buf_size; - uint idx; - char *_buf_compat; /* redundant pointer for backward compat. */ -} hndrte_log_t; - -typedef struct { - /* Virtual UART - * When there is no UART (e.g. Quickturn), the host should write a complete - * input line directly into cbuf and then write the length into vcons_in. - * This may also be used when there is a real UART (at risk of conflicting with - * the real UART). vcons_out is currently unused. - */ - volatile uint vcons_in; - volatile uint vcons_out; - - /* Output (logging) buffer - * Console output is written to a ring buffer log_buf at index log_idx. - * The host may read the output when it sees log_idx advance. - * Output will be lost if the output wraps around faster than the host polls. - */ - hndrte_log_t log; - - /* Console input line buffer - * Characters are read one at a time into cbuf until is received, then - * the buffer is processed as a command line. Also used for virtual UART. - */ - uint cbuf_idx; - char cbuf[CBUF_LEN]; -} hndrte_cons_t; - -hndrte_cons_t *hndrte_get_active_cons_state(void); - -#endif /* _HNDRTE_CONS_H */ diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/rkversion.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/rkversion.c index d33563c82200..31ad13445448 100755 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/rkversion.c +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/rkversion.c @@ -10,7 +10,7 @@ */ -const char RKWIFI_DRV_VERSION[] = "5.00.WFD.OOB.64bit"; +const char RKWIFI_DRV_VERSION[] = "5.20.WFD.OOB.64bit"; const char WIFI_MODULE_NAME[] = ""; const char CONFIG_BCMDHD_FW_PATH[] = ""; diff --git a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_cfg80211.c b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_cfg80211.c index bc01cb028cea..7a182b0f159f 100755 --- a/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_cfg80211.c +++ b/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_cfg80211.c @@ -10448,7 +10448,7 @@ static void wl_scan_timeout(unsigned long data) { wl_event_msg_t msg; struct bcm_cfg80211 *cfg = (struct bcm_cfg80211 *)data; - struct net_device *dev = bcmcfg_to_prmry_ndev(cfg); +// struct net_device *dev = bcmcfg_to_prmry_ndev(cfg); if (!(cfg->scan_request)) { WL_ERR(("timer expired but no scan request\n")); @@ -10462,10 +10462,10 @@ static void wl_scan_timeout(unsigned long data) wl_cfg80211_event(bcmcfg_to_prmry_ndev(cfg), &msg, NULL); // terence 20130729: workaround to fix out of memory in firmware - if (dhd_conf_get_chip(dhd_get_pub(dev)) == BCM43362_CHIP_ID) { - WL_ERR(("Send hang event\n")); - net_os_send_hang_message(dev); - } +// if (dhd_conf_get_chip(dhd_get_pub(dev)) == BCM43362_CHIP_ID) { +// WL_ERR(("Send hang event\n")); +// net_os_send_hang_message(dev); +// } } static s32 @@ -10760,7 +10760,7 @@ static s32 wl_escan_handler(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgdev, goto exit; if ((p2p_ie = wl_cfgp2p_find_p2pie(((u8 *) bi) + bi->ie_offset, bi->ie_length)) == NULL) { - WL_INFORM(("Couldn't find P2PIE in probe" + WL_ERR(("Couldn't find P2PIE in probe" " response/beacon\n")); goto exit; } @@ -11509,6 +11509,44 @@ static void wl_wakeup_event(struct bcm_cfg80211 *cfg) } } +#if defined(WL_ENABLE_P2P_IF) +static int wl_is_p2p_event(struct wl_event_q *e) +{ + switch (e->etype) { + /* We have to seperate out the P2P events received + * on primary interface so that it can be send up + * via p2p0 interface. + */ + case WLC_E_P2P_PROBREQ_MSG: + case WLC_E_P2P_DISC_LISTEN_COMPLETE: + case WLC_E_ACTION_FRAME_RX: + case WLC_E_ACTION_FRAME_OFF_CHAN_COMPLETE: + case WLC_E_ACTION_FRAME_COMPLETE: + + if (e->emsg.ifidx != 0) { + WL_TRACE(("P2P event(%d) on virtual interface(ifidx:%d)\n", + e->etype, e->emsg.ifidx)); + /* We are only bothered about the P2P events received + * on primary interface. For rest of them return false + * so that it is sent over the interface corresponding + * to the ifidx. + */ + return FALSE; + } else { + WL_TRACE(("P2P event(%d) on interface(ifidx:%d)\n", + e->etype, e->emsg.ifidx)); + return TRUE; + } + break; + + default: + WL_TRACE(("NON-P2P event(%d) on interface(ifidx:%d)\n", + e->etype, e->emsg.ifidx)); + return FALSE; + } +} +#endif /* BCMDONGLEHOST && (WL_CFG80211_P2P_DEV_IF || WL_ENABLE_P2P_IF) */ + static s32 wl_event_handler(void *data) { struct bcm_cfg80211 *cfg = NULL; @@ -11541,7 +11579,9 @@ static s32 wl_event_handler(void *data) cfgdev = ndev_to_wdev(ndev); } #elif defined(WL_ENABLE_P2P_IF) - if (WL_IS_P2P_DEV_EVENT(e) && (cfg->p2p_net)) { + // terence 20150116: fix for p2p connection in kernel 3.4 +// if (WL_IS_P2P_DEV_EVENT(e) && (cfg->p2p_net)) { + if ((wl_is_p2p_event(e) == TRUE) && (cfg->p2p_net)) { cfgdev = cfg->p2p_net; } else { cfgdev = dhd_idx2net((struct dhd_pub *)(cfg->pub),