diff --git a/drivers/staging/rt2860/common/ba_action.c b/drivers/staging/rt2860/common/ba_action.c
index 69eea40..174f2a73 100644
--- a/drivers/staging/rt2860/common/ba_action.c
+++ b/drivers/staging/rt2860/common/ba_action.c
@@ -1481,7 +1481,7 @@
 		NdisReleaseSpinLock(&pBAEntry->RxReRingLock);
 	} else {
 		DBGPRINT(RT_DEBUG_ERROR,
-			 ("!!! (%d) Can't allocate reordering mpdu blk\n",
+			 (" (%d) Can't allocate reordering mpdu blk\n",
 			  pBAEntry->list.qlen));
 
 		/*
@@ -1542,7 +1542,7 @@
 		}
 		pBAEntry = &pAd->BATable.BARecEntry[Idx];
 	} else {
-		/* impossible !!! */
+		/* impossible ! */
 		ASSERT(0);
 		/* release packet */
 		RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket,
diff --git a/drivers/staging/rt2860/common/cmm_aes.c b/drivers/staging/rt2860/common/cmm_aes.c
index 6730d78..250357c 100644
--- a/drivers/staging/rt2860/common/cmm_aes.c
+++ b/drivers/staging/rt2860/common/cmm_aes.c
@@ -1279,7 +1279,7 @@
 
 	if (R == NULL) {
 		DBGPRINT(RT_DEBUG_ERROR,
-			 ("!!!AES_GTK_KEY_UNWRAP: no memory!!!\n"));
+			 ("AES_GTK_KEY_UNWRAP: no memory!\n"));
 		return;
 	}
 	/* End of if */
diff --git a/drivers/staging/rt2860/common/cmm_asic.c b/drivers/staging/rt2860/common/cmm_asic.c
index fafba27..4d77e83 100644
--- a/drivers/staging/rt2860/common/cmm_asic.c
+++ b/drivers/staging/rt2860/common/cmm_asic.c
@@ -1005,7 +1005,7 @@
 void AsicResetBBPAgent(struct rt_rtmp_adapter *pAd)
 {
 	BBP_CSR_CFG_STRUC BbpCsr;
-	DBGPRINT(RT_DEBUG_ERROR, ("Reset BBP Agent busy bit.!! \n"));
+	DBGPRINT(RT_DEBUG_ERROR, ("Reset BBP Agent busy bit!\n"));
 	/* Still need to find why BBP agent keeps busy, but in fact, hardware still function ok. Now clear busy first. */
 	RTMP_IO_READ32(pAd, H2M_BBP_AGENT, &BbpCsr.word);
 	BbpCsr.field.Busy = 0;
diff --git a/drivers/staging/rt2860/common/cmm_data.c b/drivers/staging/rt2860/common/cmm_data.c
index 2d2c311..68263ce 100644
--- a/drivers/staging/rt2860/common/cmm_data.c
+++ b/drivers/staging/rt2860/common/cmm_data.c
@@ -397,7 +397,7 @@
 	    && (pAd->CommonCfg.bIEEE80211H == 1)
 	    && (pAd->CommonCfg.RadarDetect.RDMode != RD_NORMAL_MODE)) {
 		DBGPRINT(RT_DEBUG_ERROR,
-			 ("MlmeHardTransmit --> radar detect not in normal mode !!!\n"));
+			 ("MlmeHardTransmit --> radar detect not in normal mode!\n"));
 /*              if (!IrqState) */
 		RTMP_SEM_UNLOCK(&pAd->MgmtRingLock);
 		return (NDIS_STATUS_FAILURE);
@@ -964,7 +964,7 @@
 	IRQL = PASSIVE_LEVEL
 	IRQL = DISPATCH_LEVEL
 
-    See also : BASmartHardTransmit()    !!!
+    See also : BASmartHardTransmit()    !
 
 	========================================================================
 */
@@ -1708,7 +1708,7 @@
 				pProbeEntry = pProbeEntry->pNext;
 			} while (pProbeEntry);
 
-			/* not found !!! */
+			/* not found ! */
 			ASSERT(pProbeEntry != NULL);
 
 			RTMP_STA_ENTRY_KEY_DEL(pAd, BSS0, wcid);
@@ -1729,7 +1729,7 @@
 				  pAd->MacTab.Size));
 		} else {
 			DBGPRINT(RT_DEBUG_OFF,
-				 ("\n%s: Impossible Wcid = %d !!!!!\n",
+				 ("\n%s: Impossible Wcid = %d !\n",
 				  __func__, wcid));
 		}
 	}
diff --git a/drivers/staging/rt2860/common/cmm_data_2860.c b/drivers/staging/rt2860/common/cmm_data_2860.c
index 857ff45..d3ae7ca 100644
--- a/drivers/staging/rt2860/common/cmm_data_2860.c
+++ b/drivers/staging/rt2860/common/cmm_data_2860.c
@@ -847,7 +847,7 @@
 		AutoWakeupCfg.word = 0;
 		RTMP_IO_WRITE32(pAd, AUTO_WAKEUP_CFG, AutoWakeupCfg.word);
 
-		// If this is called from Halt. ALWAYS force wakeup!!!
+		// If this is called from Halt. ALWAYS force wakeup!
 		if (Level == RTMP_HALT)
 		{
 			RT28xxPciAsicRadioOn(pAd, RTMP_HALT);
diff --git a/drivers/staging/rt2860/common/cmm_data_pci.c b/drivers/staging/rt2860/common/cmm_data_pci.c
index e6cb55a..43d73a0 100644
--- a/drivers/staging/rt2860/common/cmm_data_pci.c
+++ b/drivers/staging/rt2860/common/cmm_data_pci.c
@@ -979,7 +979,7 @@
 	    && (pAd->CommonCfg.bIEEE80211H == 1)
 	    && (pAd->CommonCfg.RadarDetect.RDMode != RD_NORMAL_MODE)) {
 		DBGPRINT(RT_DEBUG_ERROR,
-			 ("MlmeHardTransmit --> radar detect not in normal mode !!!\n"));
+			 ("MlmeHardTransmit --> radar detect not in normal mode!\n"));
 		/*NdisReleaseSpinLock(&pAd->TxRingLock); */
 		return (NDIS_STATUS_FAILURE);
 	}
diff --git a/drivers/staging/rt2860/common/cmm_mac_pci.c b/drivers/staging/rt2860/common/cmm_mac_pci.c
index 11dfdc5..560ebd3 100644
--- a/drivers/staging/rt2860/common/cmm_mac_pci.c
+++ b/drivers/staging/rt2860/common/cmm_mac_pci.c
@@ -1650,7 +1650,7 @@
 
 		if (brc == FALSE) {
 			DBGPRINT(RT_DEBUG_ERROR,
-				 ("%s call RT28xxPciAsicRadioOff fail !!\n",
+				 ("%s call RT28xxPciAsicRadioOff fail!\n",
 				  __func__));
 		}
 	}
diff --git a/drivers/staging/rt2860/common/cmm_mac_usb.c b/drivers/staging/rt2860/common/cmm_mac_usb.c
index 010c37c..9dd6959 100644
--- a/drivers/staging/rt2860/common/cmm_mac_usb.c
+++ b/drivers/staging/rt2860/common/cmm_mac_usb.c
@@ -205,9 +205,9 @@
 			/*Allocate URB */
 			LM_USB_ALLOC(pObj, pHTTXContext, struct rt_httx_buffer *,
 				     sizeof(struct rt_httx_buffer), Status,
-				     ("<-- ERROR in Alloc TX TxContext[%d] urb!! \n",
+				     ("<-- ERROR in Alloc TX TxContext[%d] urb!\n",
 				      acidx), done,
-				     ("<-- ERROR in Alloc TX TxContext[%d] struct rt_httx_buffer !! \n",
+				     ("<-- ERROR in Alloc TX TxContext[%d] struct rt_httx_buffer!\n",
 				      acidx), out1);
 
 			NdisZeroMemory(pHTTXContext->TransferBuffer->
@@ -259,7 +259,7 @@
 			pMLMEContext->pUrb = RTUSB_ALLOC_URB(0);
 			if (pMLMEContext->pUrb == NULL) {
 				DBGPRINT(RT_DEBUG_ERROR,
-					 ("<-- ERROR in Alloc TX MLMEContext[%d] urb!! \n",
+					 ("<-- ERROR in Alloc TX MLMEContext[%d] urb!\n",
 					  i));
 				Status = NDIS_STATUS_RESOURCES;
 				goto out2;
@@ -296,9 +296,9 @@
 			/*Allocate URB */
 			LM_USB_ALLOC(pObj, pBeaconContext, struct rt_tx_buffer *,
 				     sizeof(struct rt_tx_buffer), Status,
-				     ("<-- ERROR in Alloc TX BeaconContext[%d] urb!! \n",
+				     ("<-- ERROR in Alloc TX BeaconContext[%d] urb!\n",
 				      i), out2,
-				     ("<-- ERROR in Alloc TX BeaconContext[%d] struct rt_tx_buffer !! \n",
+				     ("<-- ERROR in Alloc TX BeaconContext[%d] struct rt_tx_buffer!\n",
 				      i), out3);
 
 			pBeaconContext->pAd = pAd;
@@ -315,9 +315,9 @@
 		/*Allocate URB */
 		LM_USB_ALLOC(pObj, pNullContext, struct rt_tx_buffer *, sizeof(struct rt_tx_buffer),
 			     Status,
-			     ("<-- ERROR in Alloc TX NullContext urb!! \n"),
+			     ("<-- ERROR in Alloc TX NullContext urb!\n"),
 			     out3,
-			     ("<-- ERROR in Alloc TX NullContext struct rt_tx_buffer !! \n"),
+			     ("<-- ERROR in Alloc TX NullContext struct rt_tx_buffer!\n"),
 			     out4);
 
 		pNullContext->pAd = pAd;
@@ -333,9 +333,9 @@
 		/*Allocate URB */
 		LM_USB_ALLOC(pObj, pRTSContext, struct rt_tx_buffer *, sizeof(struct rt_tx_buffer),
 			     Status,
-			     ("<-- ERROR in Alloc TX RTSContext urb!! \n"),
+			     ("<-- ERROR in Alloc TX RTSContext urb!\n"),
 			     out4,
-			     ("<-- ERROR in Alloc TX RTSContext struct rt_tx_buffer !! \n"),
+			     ("<-- ERROR in Alloc TX RTSContext struct rt_tx_buffer!\n"),
 			     out5);
 
 		pRTSContext->pAd = pAd;
@@ -350,9 +350,9 @@
 		/*Allocate URB */
 		LM_USB_ALLOC(pObj, pPsPollContext, struct rt_tx_buffer *,
 			     sizeof(struct rt_tx_buffer), Status,
-			     ("<-- ERROR in Alloc TX PsPollContext urb!! \n"),
+			     ("<-- ERROR in Alloc TX PsPollContext urb!\n"),
 			     out5,
-			     ("<-- ERROR in Alloc TX PsPollContext struct rt_tx_buffer !! \n"),
+			     ("<-- ERROR in Alloc TX PsPollContext struct rt_tx_buffer!\n"),
 			     out6);
 
 		pPsPollContext->pAd = pAd;
diff --git a/drivers/staging/rt2860/common/cmm_sanity.c b/drivers/staging/rt2860/common/cmm_sanity.c
index 556e3d0..6b003c9 100644
--- a/drivers/staging/rt2860/common/cmm_sanity.c
+++ b/drivers/staging/rt2860/common/cmm_sanity.c
@@ -256,7 +256,7 @@
 
 	/* For some 11a AP which didn't have DS_IE, we use two conditions to decide the channel */
 	/*      1. If the AP is 11n enabled, then check the control channel. */
-	/*      2. If the AP didn't have any info about channel, use the channel we received this frame as the channel. (May inaccuracy!!) */
+	/*      2. If the AP didn't have any info about channel, use the channel we received this frame as the channel. (May inaccuracy!) */
 	u8 CtrlChannel = 0;
 
 	/* Add for 3 necessary EID field check */
@@ -371,7 +371,7 @@
 			break;
 
 		case IE_HT_CAP:
-			if (pEid->Len >= SIZE_HT_CAP_IE)	/*Note: allow extension.!! */
+			if (pEid->Len >= SIZE_HT_CAP_IE)	/*Note: allow extension! */
 			{
 				NdisMoveMemory(pHtCapability, pEid->Octet,
 					       sizeof(struct rt_ht_capability_ie));
diff --git a/drivers/staging/rt2860/common/cmm_tkip.c b/drivers/staging/rt2860/common/cmm_tkip.c
index 7a2a48e..4881ef9 100644
--- a/drivers/staging/rt2860/common/cmm_tkip.c
+++ b/drivers/staging/rt2860/common/cmm_tkip.c
@@ -828,6 +828,6 @@
 		/*RTMPReportMicError(pAd, &pWpaKey[KeyID]);     // marked by AlbertY @ 20060630 */
 		return (FALSE);
 	}
-	/*DBGPRINT(RT_DEBUG_TRACE, "RTMPSoftDecryptTKIP Decript done!!\n"); */
+	/*DBGPRINT(RT_DEBUG_TRACE, "RTMPSoftDecryptTKIP Decript done!\n"); */
 	return TRUE;
 }
diff --git a/drivers/staging/rt2860/common/cmm_wep.c b/drivers/staging/rt2860/common/cmm_wep.c
index c728355..76f880c 100644
--- a/drivers/staging/rt2860/common/cmm_wep.c
+++ b/drivers/staging/rt2860/common/cmm_wep.c
@@ -245,7 +245,7 @@
 	crc32 ^= 0xffffffff;	/* complement */
 
 	if (crc32 != cpu2le32(trailfcs)) {
-		DBGPRINT(RT_DEBUG_TRACE, ("! WEP Data CRC Error !\n"));	/*CRC error. */
+		DBGPRINT(RT_DEBUG_TRACE, ("WEP Data CRC Error!\n"));	/*CRC error. */
 		return (FALSE);
 	}
 	return (TRUE);
diff --git a/drivers/staging/rt2860/common/cmm_wpa.c b/drivers/staging/rt2860/common/cmm_wpa.c
index 7b51be0..94e119f 100644
--- a/drivers/staging/rt2860/common/cmm_wpa.c
+++ b/drivers/staging/rt2860/common/cmm_wpa.c
@@ -1292,7 +1292,7 @@
 	os_alloc_mem(NULL, (u8 **) & input, 1024);
 
 	if (input == NULL) {
-		DBGPRINT(RT_DEBUG_ERROR, ("!!!PRF: no memory!!!\n"));
+		DBGPRINT(RT_DEBUG_ERROR, ("PRF: no memory!\n"));
 		return;
 	}
 	/* Generate concatenation input */
@@ -2672,7 +2672,7 @@
 	os_alloc_mem(NULL, (u8 **) & OutBuffer, 512);
 
 	if (OutBuffer == NULL) {
-		DBGPRINT(RT_DEBUG_ERROR, ("!!!CalculateMIC: no memory!!!\n"));
+		DBGPRINT(RT_DEBUG_ERROR, ("CalculateMIC: no memory!\n"));
 		return;
 	}
 	/* make a frame for calculating MIC. */
diff --git a/drivers/staging/rt2860/common/mlme.c b/drivers/staging/rt2860/common/mlme.c
index 8cd8f53..9fc34a8 100644
--- a/drivers/staging/rt2860/common/mlme.c
+++ b/drivers/staging/rt2860/common/mlme.c
@@ -483,7 +483,7 @@
 #ifdef RTMP_MAC_USB
 			if (Elem->MsgType == MT2_RESET_CONF) {
 				DBGPRINT_RAW(RT_DEBUG_TRACE,
-					     ("!!! reset MLME state machine !!!\n"));
+					     ("reset MLME state machine!\n"));
 				MlmeRestartStateMachine(pAd);
 				Elem->Occupied = FALSE;
 				Elem->MsgLen = 0;
@@ -4042,7 +4042,7 @@
 			}
 			/* Since the AP is using hidden SSID, and we are trying to connect to ANY */
 			/* It definitely will fail. So, skip it. */
-			/* CCX also require not even try to connect it!! */
+			/* CCX also require not even try to connect it! */
 			if (SsidLen == 0)
 				continue;
 
@@ -4600,8 +4600,8 @@
  * input params:
  *		Buffer - pointer to a pre-allocated memory segment
  *		args - a list of <int arg_size, arg> pairs.
- *		NOTE NOTE NOTE!!!! the last argument must be NULL, otherwise this
- *						   function will FAIL!!!
+ *		NOTE NOTE NOTE! the last argument must be NULL, otherwise this
+ *						   function will FAIL!
  * return:
  *		Size of the buffer
  * usage:
diff --git a/drivers/staging/rt2860/common/rt_rf.c b/drivers/staging/rt2860/common/rt_rf.c
index fb0ca88..519121d 100644
--- a/drivers/staging/rt2860/common/rt_rf.c
+++ b/drivers/staging/rt2860/common/rt_rf.c
@@ -72,7 +72,7 @@
 	if ((i == RETRY_LIMIT)
 	    || (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))) {
 		DBGPRINT_RAW(RT_DEBUG_ERROR,
-			     ("Retry count exhausted or device removed!!!\n"));
+			     ("Retry count exhausted or device removed!\n"));
 		return STATUS_UNSUCCESSFUL;
 	}
 
diff --git a/drivers/staging/rt2860/common/rtmp_init.c b/drivers/staging/rt2860/common/rtmp_init.c
index d3c7c17..21a95ff 100644
--- a/drivers/staging/rt2860/common/rtmp_init.c
+++ b/drivers/staging/rt2860/common/rtmp_init.c
@@ -75,7 +75,7 @@
 	{BCN_OFFSET0, 0xece8e4e0},	/* 0x3800, 0x3A00, 0x3C00, 0x3E00, 512B for each beacon */
 	{BCN_OFFSET1, 0xfcf8f4f0},	/* 0x3800, 0x3A00, 0x3C00, 0x3E00, 512B for each beacon */
 #else
-#error You must re-calculate new value for BCN_OFFSET0 & BCN_OFFSET1 in MACRegTable[]!!!
+#error You must re-calculate new value for BCN_OFFSET0 & BCN_OFFSET1 in MACRegTable[]!
 #endif /* HW_BEACON_OFFSET // */
 
 	{LEGACY_BASIC_RATE, 0x0000013f},	/*  Basic rate set bitmap */
@@ -1272,7 +1272,7 @@
 		pAd->bAutoTxAgcA = pAd->bAutoTxAgcG = FALSE;
 	/* */
 	/* Since BBP has been progamed, to make sure BBP setting will be */
-	/* upate inside of AsicAntennaSelect, so reset to UNKNOWN_BAND!! */
+	/* upate inside of AsicAntennaSelect, so reset to UNKNOWN_BAND! */
 	/* */
 	pAd->CommonCfg.BandState = UNKNOWN_BAND;
 
@@ -3470,7 +3470,7 @@
 err0:
 #endif /* ST // */
 
-	DBGPRINT(RT_DEBUG_ERROR, ("!!! rt28xx Initialized fail !!!\n"));
+	DBGPRINT(RT_DEBUG_ERROR, ("rt28xx Initialized fail!\n"));
 	return FALSE;
 }
 
diff --git a/drivers/staging/rt2860/oid.h b/drivers/staging/rt2860/oid.h
index fa4a2e6..fd1c141 100644
--- a/drivers/staging/rt2860/oid.h
+++ b/drivers/staging/rt2860/oid.h
@@ -557,7 +557,7 @@
 /* New for MeetingHouse Api support */
 #define OID_MH_802_1X_SUPPORTED               0xFFEDC100
 
-/* MIMO Tx parameter, ShortGI, MCS, STBC, etc.  these are fields in TXWI. Don't change this definition!!! */
+/* MIMO Tx parameter, ShortGI, MCS, STBC, etc.  these are fields in TXWI. Don't change this definition! */
 typedef union _HTTRANSMIT_SETTING {
 	struct {
 		u16 MCS:7;	/* MCS */
@@ -614,7 +614,7 @@
 	struct rt_802_11_event_log Log[MAX_NUMBER_OF_EVENT];
 };
 
-/* MIMO Tx parameter, ShortGI, MCS, STBC, etc.  these are fields in TXWI. Don't change this definition!!! */
+/* MIMO Tx parameter, ShortGI, MCS, STBC, etc.  these are fields in TXWI. Don't change this definition! */
 typedef union _MACHTTRANSMIT_SETTING {
 	struct {
 		u16 MCS:7;	/* MCS */
diff --git a/drivers/staging/rt2860/rt_linux.c b/drivers/staging/rt2860/rt_linux.c
index d84ac32..9357fb2 100644
--- a/drivers/staging/rt2860/rt_linux.c
+++ b/drivers/staging/rt2860/rt_linux.c
@@ -51,7 +51,7 @@
 	"connects with our wireless client",	/* IW_STA_LINKUP_EVENT_FLAG */
 	"disconnects with our wireless client",	/* IW_STA_LINKDOWN_EVENT_FLAG */
 	"scan completed"	/* IW_SCAN_COMPLETED_EVENT_FLAG */
-	    "scan terminate!! Busy!! Enqueue fail!!"	/* IW_SCAN_ENQUEUE_FAIL_EVENT_FLAG */
+	    "scan terminate! Busy! Enqueue fail!"	/* IW_SCAN_ENQUEUE_FAIL_EVENT_FLAG */
 };
 
 /* for wireless IDS_spoof_attack event message */
@@ -1282,7 +1282,7 @@
 {
 
 	/* TODO: Need to fix this */
-	printk("WARNING: This function(%s) not implement yet!!!\n", __func__);
+	printk("WARNING: This function(%s) not implement yet!\n", __func__);
 	return 0;
 }
 
diff --git a/drivers/staging/rt2860/rt_linux.h b/drivers/staging/rt2860/rt_linux.h
index 7efc109..f85508d 100644
--- a/drivers/staging/rt2860/rt_linux.h
+++ b/drivers/staging/rt2860/rt_linux.h
@@ -427,7 +427,7 @@
 
 #define DBGPRINT_ERR(Fmt)           \
 {                                   \
-    printk("ERROR!!! ");          \
+    printk("ERROR! ");          \
     printk Fmt;                  \
 }
 
diff --git a/drivers/staging/rt2860/rt_main_dev.c b/drivers/staging/rt2860/rt_main_dev.c
index fbbec9d..c3d92802 100644
--- a/drivers/staging/rt2860/rt_main_dev.c
+++ b/drivers/staging/rt2860/rt_main_dev.c
@@ -321,7 +321,7 @@
 
 		if (brc == FALSE) {
 			DBGPRINT(RT_DEBUG_ERROR,
-				 ("%s call RT28xxPciAsicRadioOff fail !!\n",
+				 ("%s call RT28xxPciAsicRadioOff fail!\n",
 				  __func__));
 		}
 	}
diff --git a/drivers/staging/rt2860/rtmp_chip.h b/drivers/staging/rt2860/rtmp_chip.h
index 32ff350..0adf2cd 100644
--- a/drivers/staging/rt2860/rtmp_chip.h
+++ b/drivers/staging/rt2860/rtmp_chip.h
@@ -197,7 +197,7 @@
 		u16 DynamicTxAgcControl:1;	/* */
 		u16 ExternalLNAForG:1;	/* */
 		u16 ExternalLNAForA:1;	/* external LNA enable for 2.4G */
-		u16 CardbusAcceleration:1;	/* !!! NOTE: 0 - enable, 1 - disable */
+		u16 CardbusAcceleration:1;	/* ! NOTE: 0 - enable, 1 - disable */
 		u16 BW40MSidebandForG:1;
 		u16 BW40MSidebandForA:1;
 		u16 EnableWPSPBC:1;	/* WPS PBC Control bit */
diff --git a/drivers/staging/rt2860/rtmp_def.h b/drivers/staging/rt2860/rtmp_def.h
index c79eceb..9c54bac 100644
--- a/drivers/staging/rt2860/rtmp_def.h
+++ b/drivers/staging/rt2860/rtmp_def.h
@@ -409,7 +409,7 @@
 #define MAX_LEN_OF_MAC_TABLE            MAX_NUMBER_OF_MAC	/* if MAX_MBSSID_NUM is 8, this value can't be larger than 211 */
 
 #if MAX_LEN_OF_MAC_TABLE>MAX_AVAILABLE_CLIENT_WCID
-#error MAX_LEN_OF_MAC_TABLE can not be larger than MAX_AVAILABLE_CLIENT_WCID!!!!
+#error MAX_LEN_OF_MAC_TABLE can not be larger than MAX_AVAILABLE_CLIENT_WCID!
 #endif
 
 #define MAX_NUM_OF_WDS_LINK_PERBSSID	            3
diff --git a/drivers/staging/rt2860/sta/assoc.c b/drivers/staging/rt2860/sta/assoc.c
index 733bc08..7055f22 100644
--- a/drivers/staging/rt2860/sta/assoc.c
+++ b/drivers/staging/rt2860/sta/assoc.c
@@ -563,7 +563,7 @@
 		pAd->Mlme.AssocMachine.CurrState = ASSOC_WAIT_RSP;
 	} else {
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("ASSOC - MlmeAssocReqAction() sanity check failed. BUG!!!!!! \n"));
+			 ("ASSOC - MlmeAssocReqAction() sanity check failed. BUG!\n"));
 		pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
 		Status = MLME_INVALID_FORMAT;
 		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_ASSOC_CONF, 2,
@@ -746,7 +746,7 @@
 		pAd->Mlme.AssocMachine.CurrState = REASSOC_WAIT_RSP;
 	} else {
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("ASSOC - MlmeReassocReqAction() sanity check failed. BUG!!!! \n"));
+			 ("ASSOC - MlmeReassocReqAction() sanity check failed. BUG!\n"));
 		pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
 		Status = MLME_INVALID_FORMAT;
 		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_REASSOC_CONF, 2,
diff --git a/drivers/staging/rt2860/sta/connect.c b/drivers/staging/rt2860/sta/connect.c
index 9c77520..17e59ba 100644
--- a/drivers/staging/rt2860/sta/connect.c
+++ b/drivers/staging/rt2860/sta/connect.c
@@ -214,7 +214,7 @@
 		break;
 #endif /* RTMP_MAC_USB // */
 	default:
-		DBGPRINT_ERR(("!ERROR! CNTL - Illegal message type(=%ld)",
+		DBGPRINT_ERR(("ERROR! CNTL - Illegal message type(=%ld)",
 			      Elem->MsgType));
 		break;
 	}
@@ -911,7 +911,7 @@
 				  pAd->CommonCfg.Bssid[5]));
 		} else {
 			DBGPRINT(RT_DEBUG_TRACE,
-				 ("CNTL - Start IBSS fail. BUG!!!!!\n"));
+				 ("CNTL - Start IBSS fail. BUG!\n"));
 			pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
 		}
 	}
@@ -1184,7 +1184,7 @@
 	/* */
 	/* ASSOC - DisassocTimeoutAction */
 	/* CNTL - Dis-associate successful */
-	/* !!! LINK DOWN !!! */
+	/* ! LINK DOWN ! */
 	/* [88888] OID_802_11_SSID should have returned NDTEST_WEP_AP2(Returned: ) */
 	/* */
 	/* To prevent DisassocTimeoutAction to call Link down after we link up, */
@@ -1218,12 +1218,12 @@
 		if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED)
 			AdhocTurnOnQos(pAd);
 
-		DBGPRINT(RT_DEBUG_TRACE, ("!!!Adhoc LINK UP !!! \n"));
+		DBGPRINT(RT_DEBUG_TRACE, ("Adhoc LINK UP!\n"));
 	} else {
 		OPSTATUS_SET_FLAG(pAd, fOP_STATUS_INFRA_ON);
 		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_ADHOC_ON);
 
-		DBGPRINT(RT_DEBUG_TRACE, ("!!!Infra LINK UP !!! \n"));
+		DBGPRINT(RT_DEBUG_TRACE, ("Infra LINK UP!\n"));
 	}
 
 	/* 3*3 */
@@ -1262,11 +1262,11 @@
 			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x1A);
 			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
 			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x16);
-			DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n"));
+			DBGPRINT(RT_DEBUG_TRACE, ("rt2860C !\n"));
 		}
 
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("!!!40MHz Lower LINK UP !!! Control Channel at Below. Central = %d \n",
+			 ("40MHz Lower LINK UP! Control Channel at Below. Central = %d \n",
 			  pAd->CommonCfg.CentralChannel));
 	} else if ((pAd->CommonCfg.CentralChannel < pAd->CommonCfg.Channel)
 		   && (pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth ==
@@ -1296,11 +1296,11 @@
 			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x1A);
 			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
 			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x16);
-			DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n"));
+			DBGPRINT(RT_DEBUG_TRACE, ("rt2860C !\n"));
 		}
 
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("!!! 40MHz Upper LINK UP !!! Control Channel at UpperCentral = %d \n",
+			 ("40MHz Upper LINK UP! Control Channel at UpperCentral = %d \n",
 			  pAd->CommonCfg.CentralChannel));
 	} else {
 		pAd->CommonCfg.BBPCurrentBW = BW_20;
@@ -1327,10 +1327,10 @@
 			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x16);
 			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x08);
 			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x11);
-			DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n"));
+			DBGPRINT(RT_DEBUG_TRACE, ("rt2860C !\n"));
 		}
 
-		DBGPRINT(RT_DEBUG_TRACE, ("!!! 20MHz LINK UP !!! \n"));
+		DBGPRINT(RT_DEBUG_TRACE, ("20MHz LINK UP!\n"));
 	}
 
 	RTMPSetAGCInitValue(pAd, pAd->CommonCfg.BBPCurrentBW);
@@ -1342,12 +1342,12 @@
 				    &pAd->BbpTuning.R66CurrentValue);
 
 	DBGPRINT(RT_DEBUG_TRACE,
-		 ("!!! LINK UP !!! (BssType=%d, AID=%d, ssid=%s, Channel=%d, CentralChannel = %d)\n",
+		 ("LINK UP! (BssType=%d, AID=%d, ssid=%s, Channel=%d, CentralChannel = %d)\n",
 		  BssType, pAd->StaActive.Aid, pAd->CommonCfg.Ssid,
 		  pAd->CommonCfg.Channel, pAd->CommonCfg.CentralChannel));
 
 	DBGPRINT(RT_DEBUG_TRACE,
-		 ("!!! LINK UP !!! (Density =%d, )\n",
+		 ("LINK UP! (Density =%d, )\n",
 		  pAd->MacTab.Content[BSSID_WCID].MpduDensity));
 
 	AsicSetBssid(pAd, pAd->CommonCfg.Bssid);
@@ -1634,13 +1634,13 @@
 		NdisReleaseSpinLock(&pAd->MacTabLock);
 
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("!!! LINK UP !!!  ClientStatusFlags=%lx)\n",
+			 ("LINK UP!  ClientStatusFlags=%lx)\n",
 			  pAd->MacTab.Content[BSSID_WCID].ClientStatusFlags));
 
 		MlmeUpdateTxRates(pAd, TRUE, BSS0);
 		MlmeUpdateHtTxRates(pAd, BSS0);
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("!!! LINK UP !! (StaActive.bHtEnable =%d, )\n",
+			 ("LINK UP! (StaActive.bHtEnable =%d, )\n",
 			  pAd->StaActive.SupportedPhyInfo.bHtEnable));
 
 		if (pAd->CommonCfg.bAggregationCapable) {
@@ -1811,7 +1811,7 @@
 	pAd->CommonCfg.IOTestParm.bLastAtheros = FALSE;
 	COPY_MAC_ADDR(pAd->CommonCfg.LastBssid, pAd->CommonCfg.Bssid);
 	DBGPRINT(RT_DEBUG_TRACE,
-		 ("!!!pAd->bNextDisableRxBA= %d \n",
+		 ("pAd->bNextDisableRxBA= %d \n",
 		  pAd->CommonCfg.IOTestParm.bNextDisableRxBA));
 	/* BSSID add in one MAC entry too.  Because in Tx, ASIC need to check Cipher and IV/EIV, BAbitmap */
 	/* Pther information in MACTab.Content[BSSID_WCID] is not necessary for driver. */
@@ -1893,7 +1893,7 @@
 				      BSS0, 0);
 	}
 
-	DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK DOWN !!!\n"));
+	DBGPRINT(RT_DEBUG_TRACE, ("LINK DOWN!\n"));
 	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED);
 
 #ifdef RTMP_MAC_PCI
@@ -1921,7 +1921,7 @@
 
 	if (ADHOC_ON(pAd))	/* Adhoc mode link down */
 	{
-		DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK DOWN 1!!!\n"));
+		DBGPRINT(RT_DEBUG_TRACE, ("LINK DOWN 1!\n"));
 
 		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_ADHOC_ON);
 		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
@@ -1931,10 +1931,10 @@
 		BssTableDeleteEntry(&pAd->ScanTab, pAd->CommonCfg.Bssid,
 				    pAd->CommonCfg.Channel);
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("!!! MacTab.Size=%d !!!\n", pAd->MacTab.Size));
+			 (" MacTab.Size=%d !\n", pAd->MacTab.Size));
 	} else			/* Infra structure mode */
 	{
-		DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK DOWN 2!!!\n"));
+		DBGPRINT(RT_DEBUG_TRACE, ("LINK DOWN 2!\n"));
 
 		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_INFRA_ON);
 		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
diff --git a/drivers/staging/rt2860/sta/rtmp_data.c b/drivers/staging/rt2860/sta/rtmp_data.c
index 8c0ab2d..c503947 100644
--- a/drivers/staging/rt2860/sta/rtmp_data.c
+++ b/drivers/staging/rt2860/sta/rtmp_data.c
@@ -192,7 +192,7 @@
 						  pRxWI->RSSI1, pRxWI->RSSI2,
 						  pRxD->PlcpSignal);
 			DBGPRINT_RAW(RT_DEBUG_TRACE,
-				     ("!!! report EAPOL/AIRONET DATA to MLME (len=%d) !!!\n",
+				     ("report EAPOL/AIRONET DATA to MLME (len=%d) !\n",
 				      pRxBlk->DataSize));
 		}
 	}
@@ -940,7 +940,7 @@
 
 	if (pSrcBufVA == NULL) {
 		DBGPRINT(RT_DEBUG_ERROR,
-			 ("STASendPacket --> pSrcBufVA == NULL !!!SrcBufLen=%x\n",
+			 ("STASendPacket --> pSrcBufVA == NULL !SrcBufLen=%x\n",
 			  SrcBufLen));
 		/* Resourece is low, system did not allocate virtual address */
 		/* return NDIS_STATUS_FAILURE directly to upper layer */
@@ -950,7 +950,7 @@
 
 	if (SrcBufLen < 14) {
 		DBGPRINT(RT_DEBUG_ERROR,
-			 ("STASendPacket --> Ndis Packet buffer error !!!\n"));
+			 ("STASendPacket --> Ndis Packet buffer error!\n"));
 		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
 		return (NDIS_STATUS_FAILURE);
 	}
@@ -1007,7 +1007,7 @@
 	    && (RTMP_GET_PACKET_EAPOL(pPacket) == FALSE)
 	    ) {
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("STASendPacket --> Drop packet before port secured !!!\n"));
+			 ("STASendPacket --> Drop packet before port secured!\n"));
 		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
 
 		return (NDIS_STATUS_FAILURE);
@@ -1680,7 +1680,7 @@
 
 		pMacEntry = pTxBlk->pMacEntry;
 		if (pMacEntry->isCached) {
-			/* NOTE: Please make sure the size of pMacEntry->CachedBuf[] is smaller than pTxBlk->HeaderBuf[]!!!! */
+			/* NOTE: Please make sure the size of pMacEntry->CachedBuf[] is smaller than pTxBlk->HeaderBuf[]! */
 			NdisMoveMemory((u8 *)& pTxBlk->
 				       HeaderBuf[TXINFO_SIZE],
 				       (u8 *)& pMacEntry->CachedBuf[0],
@@ -2506,7 +2506,7 @@
 		{
 			/* It should not happened! */
 			DBGPRINT(RT_DEBUG_ERROR,
-				 ("Send a pacekt was not classified!! It should not happen!\n"));
+				 ("Send a packet was not classified! It should not happen!\n"));
 			while (pTxBlk->TxPacketList.Number) {
 				pQEntry =
 				    RemoveHeadQueue(&pTxBlk->TxPacketList);
diff --git a/drivers/staging/rt2860/sta/sanity.c b/drivers/staging/rt2860/sta/sanity.c
index 64a0e87..8f9fd19 100644
--- a/drivers/staging/rt2860/sta/sanity.c
+++ b/drivers/staging/rt2860/sta/sanity.c
@@ -150,7 +150,7 @@
 
 		case IE_HT_CAP:
 		case IE_HT_CAP2:
-			if (pEid->Len >= SIZE_HT_CAP_IE)	/*Note: allow extension.!! */
+			if (pEid->Len >= SIZE_HT_CAP_IE)	/*Note: allow extension! */
 			{
 				NdisMoveMemory(pHtCapability, pEid->Octet,
 					       SIZE_HT_CAP_IE);
diff --git a/drivers/staging/rt2860/sta_ioctl.c b/drivers/staging/rt2860/sta_ioctl.c
index 04f81bd..d8fbe6c 100644
--- a/drivers/staging/rt2860/sta_ioctl.c
+++ b/drivers/staging/rt2860/sta_ioctl.c
@@ -600,7 +600,7 @@
 	if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) {
 		RTMP_MLME_RESET_STATE_MACHINE(pAdapter);
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("!!! MLME busy, reset MLME state machine !!!\n"));
+			 ("MLME busy, reset MLME state machine!\n"));
 	}
 	/* tell CNTL state machine to call NdisMSetInformationComplete() after completing */
 	/* this request, because this request is initiated by NDIS. */
@@ -741,7 +741,7 @@
 
 	if (MONITOR_ON(pAdapter)) {
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("!!! Driver is in Monitor Mode now !!!\n"));
+			 ("Driver is in Monitor Mode now!\n"));
 		return -EINVAL;
 	}
 
@@ -758,7 +758,7 @@
 		if ((pAdapter->StaCfg.WpaSupplicantUP == WPA_SUPPLICANT_ENABLE)
 		    && (pAdapter->StaCfg.WpaSupplicantScanCount > 3)) {
 			DBGPRINT(RT_DEBUG_TRACE,
-				 ("!!! WpaSupplicantScanCount > 3\n"));
+				 ("WpaSupplicantScanCount > 3\n"));
 			Status = NDIS_STATUS_SUCCESS;
 			break;
 		}
@@ -771,7 +771,7 @@
 		    && (pAdapter->StaCfg.PortSecured ==
 			WPA_802_1X_PORT_NOT_SECURED)) {
 			DBGPRINT(RT_DEBUG_TRACE,
-				 ("!!! Link UP, Port Not Secured! ignore this set::OID_802_11_BSSID_LIST_SCAN\n"));
+				 ("Link UP, Port Not Secured! ignore this set::OID_802_11_BSSID_LIST_SCAN\n"));
 			Status = NDIS_STATUS_SUCCESS;
 			break;
 		}
@@ -779,7 +779,7 @@
 		if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) {
 			RTMP_MLME_RESET_STATE_MACHINE(pAdapter);
 			DBGPRINT(RT_DEBUG_TRACE,
-				 ("!!! MLME busy, reset MLME state machine !!!\n"));
+				 ("MLME busy, reset MLME state machine!\n"));
 		}
 		/* tell CNTL state machine to call NdisMSetInformationComplete() after completing */
 		/* this request, because this request is initiated by NDIS. */
@@ -2256,7 +2256,7 @@
 		break;
 	default:
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("rt_ioctl_siwpmksa - Unknow Command!!\n"));
+			 ("rt_ioctl_siwpmksa - Unknown Command!\n"));
 		break;
 	}
 
@@ -2664,7 +2664,7 @@
 		if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE) {
 			RTMP_MLME_RESET_STATE_MACHINE(pAdapter);
 			DBGPRINT(RT_DEBUG_TRACE,
-				 ("!!! MLME busy, reset MLME state machine !!!\n"));
+				 ("MLME busy, reset MLME state machine!\n"));
 		}
 
 		if ((pAdapter->StaCfg.WpaPassPhraseLen >= 8) &&
diff --git a/drivers/staging/rt2860/usb_main_dev.c b/drivers/staging/rt2860/usb_main_dev.c
index c1d1fb5..925a236 100644
--- a/drivers/staging/rt2860/usb_main_dev.c
+++ b/drivers/staging/rt2860/usb_main_dev.c
@@ -584,7 +584,7 @@
 	RTMP_IO_READ32(pAd, TXRXQ_PCNT, &MACValue);
 	if ((MACValue & 0xff) != 0) {
 		DBGPRINT(RT_DEBUG_TRACE,
-			 ("TX QUEUE 0 Not EMPTY(Value=0x%0x). !!!!!!!!!!!!!!!\n",
+			 ("TX QUEUE 0 Not EMPTY(Value=0x%0x)!\n",
 			  MACValue));
 		RTMP_IO_WRITE32(pAd, PBF_CFG, 0xf40012);
 		while ((MACValue & 0xff) != 0 && (idx++ < 10)) {
@@ -707,7 +707,7 @@
 					}
 				} else {
 					DBGPRINT(RT_DEBUG_ERROR,
-						 ("Unkonw bulkOut URB maybe hanged!!!!!!!!!!!!\n"));
+						 ("Unknown bulkOut URB maybe hanged!\n"));
 				}
 			} else {
 				RTMP_IRQ_UNLOCK(&pAd->BulkOutLock[idx],
