From aa8f9fcdc8ba8d5e9e238ba83a072d2122c05f6e Mon Sep 17 00:00:00 2001
From: Greg Goldman <ggoldman@broadcom.com>
Date: Tue, 9 Nov 2010 13:28:20 -0800
Subject: [PATCH] net: wireless: bcm4329: Add FW Reload event processing

Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
---
 drivers/net/wireless/bcm4329/dhd_linux.c              |  1 +
 drivers/net/wireless/bcm4329/include/epivers.h        | 10 +++++-----
 drivers/net/wireless/bcm4329/include/proto/bcmevent.h | 11 ++++++-----
 drivers/net/wireless/bcm4329/wl_iw.c                  |  6 ++++++
 4 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/bcm4329/dhd_linux.c b/drivers/net/wireless/bcm4329/dhd_linux.c
index 3426b252c8b8..424f6b2d0a4b 100644
--- a/drivers/net/wireless/bcm4329/dhd_linux.c
+++ b/drivers/net/wireless/bcm4329/dhd_linux.c
@@ -2229,6 +2229,7 @@ dhd_bus_start(dhd_pub_t *dhdp)
 	setbit(dhdp->eventmask, WLC_E_TXFAIL);
 	setbit(dhdp->eventmask, WLC_E_JOIN_START);
 	setbit(dhdp->eventmask, WLC_E_SCAN_COMPLETE);
+	setbit(dhdp->eventmask, WLC_E_RELOAD);
 #ifdef PNO_SUPPORT
 	setbit(dhdp->eventmask, WLC_E_PFN_NET_FOUND);
 #endif /* PNO_SUPPORT */
diff --git a/drivers/net/wireless/bcm4329/include/epivers.h b/drivers/net/wireless/bcm4329/include/epivers.h
index 9e6942b5ab3e..9b5a2f1f20d7 100644
--- a/drivers/net/wireless/bcm4329/include/epivers.h
+++ b/drivers/net/wireless/bcm4329/include/epivers.h
@@ -33,16 +33,16 @@
 
 #define	EPI_RC_NUMBER		248
 
-#define	EPI_INCREMENTAL_NUMBER	12
+#define	EPI_INCREMENTAL_NUMBER	13
 
 #define	EPI_BUILD_NUMBER	0
 
-#define	EPI_VERSION		4, 218, 248, 12
+#define	EPI_VERSION		4, 218, 248, 13
 
-#define	EPI_VERSION_NUM		0x04daf80c
+#define	EPI_VERSION_NUM		0x04daf80d
 
 
-#define	EPI_VERSION_STR		"4.218.248.12"
-#define	EPI_ROUTER_VERSION_STR	"4.219.248.12"
+#define	EPI_VERSION_STR		"4.218.248.13"
+#define	EPI_ROUTER_VERSION_STR	"4.219.248.13"
 
 #endif 
diff --git a/drivers/net/wireless/bcm4329/include/proto/bcmevent.h b/drivers/net/wireless/bcm4329/include/proto/bcmevent.h
index 46c04d379227..1f8ecb14d97a 100644
--- a/drivers/net/wireless/bcm4329/include/proto/bcmevent.h
+++ b/drivers/net/wireless/bcm4329/include/proto/bcmevent.h
@@ -24,7 +24,7 @@
  *
  * Dependencies: proto/bcmeth.h
  *
- * $Id: bcmevent.h,v 9.34.4.1.20.16 2009/09/25 23:52:38 Exp $
+ * $Id: bcmevent.h,v 9.34.4.1.20.16.64.1 2010/11/08 21:57:03 Exp $
  *
  */
 
@@ -131,10 +131,10 @@ typedef BWL_PRE_PACKED_STRUCT struct bcm_event {
 #define WLC_E_ACTION_FRAME      58      
 #define WLC_E_ACTION_FRAME_COMPLETE 59  
 
-#define WLC_E_ESCAN_RESULT 69               
-#define WLC_E_WAKE_EVENT	70	
-#define WLC_E_LAST		71	
-	
+#define WLC_E_ESCAN_RESULT	69
+#define WLC_E_WAKE_EVENT	70
+#define WLC_E_RELOAD		71
+#define WLC_E_LAST		72
 
 
 
@@ -205,6 +205,7 @@ typedef BWL_PRE_PACKED_STRUCT struct bcm_event {
 #define WLC_E_IF_ADD		1	
 #define WLC_E_IF_DEL		2	
 
+#define WLC_E_RELOAD_STATUS1	1
 
 #include <packed_section_end.h>
 
diff --git a/drivers/net/wireless/bcm4329/wl_iw.c b/drivers/net/wireless/bcm4329/wl_iw.c
index 70c258c27d37..c8a5033a304a 100644
--- a/drivers/net/wireless/bcm4329/wl_iw.c
+++ b/drivers/net/wireless/bcm4329/wl_iw.c
@@ -7514,6 +7514,12 @@ wl_iw_event(struct net_device *dev, wl_event_msg_t *e, void* data)
 	WL_TRACE(("%s: dev=%s event=%d \n", __FUNCTION__, dev->name, event_type));
 
 	switch (event_type) {
+
+	case WLC_E_RELOAD:
+		WL_ERROR(("%s: Firmware ERROR %d\n", __FUNCTION__, status));
+		net_os_send_hang_message(dev);
+		goto wl_iw_event_end;
+
 #if defined(SOFTAP)
 	case WLC_E_PRUNE:
 		if (ap_cfg_running) {
-- 
2.34.1