diff --git a/drivers/net/wireless/marvell/mwifiex/debugfs.c b/drivers/net/wireless/marvell/mwifiex/debugfs.c
index 7d0465a..0b9c580 100644
--- a/drivers/net/wireless/marvell/mwifiex/debugfs.c
+++ b/drivers/net/wireless/marvell/mwifiex/debugfs.c
@@ -824,43 +824,6 @@
 	return ret;
 }
 
-/*
- * Proc crash write handler.
- *
- * This function is called when the 'crash' file is opened for writing.
- *
- * Write a '1' to this file to simulate a device disconnect/reconnect.  In
- * the future, other numbers may be used to simulate different kinds of
- * crashes.
- */
-static ssize_t
-mwifiex_crash_write(struct file *file,
-			const char __user *ubuf, size_t count, loff_t *ppos)
-{
-	struct mwifiex_private *priv =
-		(struct mwifiex_private *) file->private_data;
-	char buf[16];
-	int mode;
-
-	memset(buf, 0, sizeof(buf));
-	if (simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, ubuf, count) < 0) {
-		return -EFAULT;
-	}
-
-	mode = simple_strtol(buf, NULL, 0);
-	*ppos += count;
-	switch (mode) {
-	case 1:
-		pr_warn("causing crash: disconnect/reconnect");
-		priv->adapter->if_ops.card_reset(priv->adapter);
-		break;
-	default:
-		return -EIO;
-	}
-
-	return count;
-}
-
 static ssize_t
 mwifiex_timeshare_coex_read(struct file *file, char __user *ubuf,
 			    size_t count, loff_t *ppos)
@@ -971,7 +934,6 @@
 MWIFIEX_DFS_FILE_READ_OPS(device_dump);
 MWIFIEX_DFS_FILE_OPS(regrdwr);
 MWIFIEX_DFS_FILE_OPS(rdeeprom);
-MWIFIEX_DFS_FILE_WRITE_OPS(crash);
 MWIFIEX_DFS_FILE_OPS(memrw);
 MWIFIEX_DFS_FILE_OPS(hscfg);
 MWIFIEX_DFS_FILE_OPS(histogram);
@@ -999,7 +961,6 @@
 	MWIFIEX_DFS_ADD_FILE(getlog);
 	MWIFIEX_DFS_ADD_FILE(regrdwr);
 	MWIFIEX_DFS_ADD_FILE(rdeeprom);
-	MWIFIEX_DFS_ADD_FILE(crash);
 	MWIFIEX_DFS_ADD_FILE(device_dump);
 	MWIFIEX_DFS_ADD_FILE(memrw);
 	MWIFIEX_DFS_ADD_FILE(hscfg);
