--- 2412e886e97031bc3a995c5d43dec1afc03bb581 +++ 54229be0af026675e0712bd8348275ee0c470335 @@ -609,6 +609,7 @@ static int dhd_set_pfn(dhd_pub_t *dhd, i wl_pfn_t pfn_element; int i; int config_network = 0; + int iov_len = 0; /* Disable pfn */ bcm_mkiovar("pfn", (char *)&pfn_enabled, 4, iovbuf, sizeof(iovbuf)); dhdcdc_set_ioctl(dhd, 0, WLC_SET_VAR, iovbuf, sizeof(iovbuf)); @@ -617,8 +618,9 @@ static int dhd_set_pfn(dhd_pub_t *dhd, i return 0; /* clear pfn */ - bcm_mkiovar("pfnclear", NULL, 0, iovbuf, sizeof(iovbuf)); - dhdcdc_set_ioctl(dhd, 0, WLC_SET_VAR, iovbuf, sizeof(iovbuf)); + iov_len = bcm_mkiovar("pfnclear", NULL, 0, iovbuf, sizeof(iovbuf)); + if (iov_len) + dhdcdc_set_ioctl(dhd, 0, WLC_SET_VAR, iovbuf, iov_len); /* set pfn parameters */ pfn_param.version = htod32(PFN_VERSION); @@ -704,6 +706,10 @@ int dhd_set_suspend(int value, dhd_pub_t /* set pfn */ dhd_set_pfn(dhd, 1); #endif + +#ifdef MMC_RECOVER + dhdsdio_set_mmc_recover(1); +#endif /* indicate wl_iw screen off */ wl_iw_set_screen_off(1); @@ -731,6 +737,9 @@ int dhd_set_suspend(int value, dhd_pub_t #ifdef WLAN_PFN dhd_set_pfn(dhd, 0); #endif +#ifdef MMC_RECOVER + dhdsdio_set_mmc_recover(0); +#endif /* indicate wl_iw screen on */ wl_iw_set_screen_off(0); } @@ -854,6 +863,9 @@ int dhd_set_pktfilter(int add, int id, i return 0; } +#define WLC_HT_WEP_RESTRICT 0x01 /* restrict HT with TKIP */ +#define WLC_HT_TKIP_RESTRICT 0x02 /* restrict HT with WEP */ + int dhd_preinit_ioctls(dhd_pub_t *dhd) { @@ -893,6 +905,7 @@ dhd_preinit_ioctls(dhd_pub_t *dhd) uint filter_mode = 1; wl_keep_alive_pkt_t keep_alive_pkt; wl_keep_alive_pkt_t *keep_alive_pktp; + int ht_wsec_restrict = WLC_HT_TKIP_RESTRICT | WLC_HT_WEP_RESTRICT; pdhd = dhd; @@ -981,6 +994,9 @@ dhd_preinit_ioctls(dhd_pub_t *dhd) #ifdef WLAN_PFN setbit(eventmask, WLC_E_PFN_NET_FOUND); #endif +#ifdef WLAN_LOW_RSSI_IND + setbit(eventmask, WLC_E_RSSI_LOW); +#endif bcm_mkiovar("event_msgs", eventmask, WL_EVENTING_MASK_LEN, iovbuf, sizeof(iovbuf)); dhdcdc_set_ioctl(dhd, 0, WLC_SET_VAR, iovbuf, sizeof(iovbuf)); @@ -1114,6 +1130,10 @@ dhd_preinit_ioctls(dhd_pub_t *dhd) dhdcdc_set_ioctl(dhd, 0, WLC_SET_VAR, buf, buf_len); + /* set HT restrict */ + bcm_mkiovar("ht_wsec_restrict", (char *)&ht_wsec_restrict, 4, iovbuf, sizeof(iovbuf)); + dhdcdc_set_ioctl(dhd, 0, WLC_SET_VAR, iovbuf, sizeof(iovbuf)); + dhd_os_proto_unblock(dhd); return 0; }