svn commit: r189981 - head/sys/net80211

Sam Leffler sam at FreeBSD.org
Wed Mar 18 12:38:40 PDT 2009


Author: sam
Date: Wed Mar 18 19:38:39 2009
New Revision: 189981
URL: http://svn.freebsd.org/changeset/base/189981

Log:
  rate limit printfs for invalid tdma ie contents; probably want this to
  be less than 1/sec

Modified:
  head/sys/net80211/ieee80211_tdma.c
  head/sys/net80211/ieee80211_tdma.h

Modified: head/sys/net80211/ieee80211_tdma.c
==============================================================================
--- head/sys/net80211/ieee80211_tdma.c	Wed Mar 18 19:28:17 2009	(r189980)
+++ head/sys/net80211/ieee80211_tdma.c	Wed Mar 18 19:38:39 2009	(r189981)
@@ -387,8 +387,9 @@ tdma_update(struct ieee80211vap *vap, co
 	update = 0;
 	if (tdma->tdma_slotcnt != ts->tdma_slotcnt) {
 		if (!TDMA_SLOTCNT_VALID(tdma->tdma_slotcnt)) {
-			printf("%s: bad slot cnt %u\n",
-			    __func__, tdma->tdma_slotcnt);
+			if (ppsratecheck(&ts->tdma_lastprint, &ts->tdma_fails, 1))
+				printf("%s: bad slot cnt %u\n",
+				    __func__, tdma->tdma_slotcnt);
 			return 0;
 		}
 		update |= TDMA_UPDATE_SLOTCNT;
@@ -396,16 +397,18 @@ tdma_update(struct ieee80211vap *vap, co
 	slotlen = le16toh(tdma->tdma_slotlen) * 100;
 	if (slotlen != ts->tdma_slotlen) {
 		if (!TDMA_SLOTLEN_VALID(slotlen)) {
-			printf("%s: bad slot len %u\n",
-			    __func__, slotlen);
+			if (ppsratecheck(&ts->tdma_lastprint, &ts->tdma_fails, 1))
+				printf("%s: bad slot len %u\n",
+				    __func__, slotlen);
 			return 0;
 		}
 		update |= TDMA_UPDATE_SLOTLEN;
  	}
 	if (tdma->tdma_bintval != ts->tdma_bintval) {
 		if (!TDMA_BINTVAL_VALID(tdma->tdma_bintval)) {
-			printf("%s: bad beacon interval %u\n",
-			    __func__, tdma->tdma_bintval);
+			if (ppsratecheck(&ts->tdma_lastprint, &ts->tdma_fails, 1))
+				printf("%s: bad beacon interval %u\n",
+				    __func__, tdma->tdma_bintval);
 			return 0;
 		}
 		update |= TDMA_UPDATE_BINTVAL;

Modified: head/sys/net80211/ieee80211_tdma.h
==============================================================================
--- head/sys/net80211/ieee80211_tdma.h	Wed Mar 18 19:28:17 2009	(r189980)
+++ head/sys/net80211/ieee80211_tdma.h	Wed Mar 18 19:38:39 2009	(r189981)
@@ -38,9 +38,11 @@ struct ieee80211_tdma_state {
 	uint8_t	tdma_bintval;		/* beacon interval (slots) */
 	uint8_t	tdma_slot;		/* station slot # */
 	uint8_t	tdma_inuse[1];		/* mask of slots in use */
-	void	*tdma_peer;		/* peer station cookie */
 	uint8_t	tdma_active[1];		/* mask of active slots */
 	int	tdma_count;		/* active/inuse countdown */
+	void	*tdma_peer;		/* peer station cookie */
+	struct timeval tdma_lastprint;	/* time of last rate-limited printf */
+	int	tdma_fails;		/* fail count for rate-limiting */
 
 	/* parent method pointers */
 	int	(*tdma_newstate)(struct ieee80211vap *, enum ieee80211_state,


More information about the svn-src-all mailing list