Update BCM4329 Wifi drivers to the glacier version
/drivers/net/wireless/bcm4329_204/dhd_cdc.c
blob:2412e886e97031bc3a995c5d43dec1afc03bb581 -> blob:54229be0af026675e0712bd8348275ee0c470335
--- drivers/net/wireless/bcm4329_204/dhd_cdc.c
+++ drivers/net/wireless/bcm4329_204/dhd_cdc.c
@@ -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;
}