History

nl80211: Add per peer statistics to compute FCS error rate

Add support for drivers to report the total number of MPDUs received and the number of MPDUs received with an FCS error from a specific peer. These counters will be incremented only when the TA of the frame matches the MAC address of the peer irrespective of FCS error. It should be noted that the TA field in the frame might be corrupted when there is an FCS error and TA matching logic would fail in such cases. Hence, FCS error counter might not be fully accurate, but it can provide help in detecting bad RX links in significant number of cases. This FCS error counter without full accuracy can be used, e.g., to trigger a kick-out of a connected client with a bad link in AP mode to force such a client to roam to another AP.

Ankita Bajaj committed 8 years ago

Commit 0d4e14a1 parent bc847973 files · +17 −0Browse files

Showing the changes to include/uapi/linux (1 of 3 files). Show all

Unified · Split

include/uapi/linux/nl80211.h+8−0
@@ -3068,6 +3068,12 @@ enum nl80211_sta_bss_param { · 3067 unmodified lines
3068 * @NL80211_STA_INFO_PAD: attribute used for padding for 64-bit alignment3068 * @NL80211_STA_INFO_PAD: attribute used for padding for 64-bit alignment
3069 * @NL80211_STA_INFO_ACK_SIGNAL: signal strength of the last ACK frame(u8, dBm)3069 * @NL80211_STA_INFO_ACK_SIGNAL: signal strength of the last ACK frame(u8, dBm)
3070 * @NL80211_STA_INFO_ACK_SIGNAL_AVG: avg signal strength of ACK frames (s8, dBm)3070 * @NL80211_STA_INFO_ACK_SIGNAL_AVG: avg signal strength of ACK frames (s8, dBm)
3071 * @NL80211_STA_INFO_RX_MPDUS: total number of received packets (MPDUs)
3072 * (u32, from this station)
3073 * @NL80211_STA_INFO_FCS_ERROR_COUNT: total number of packets (MPDUs) received
3074 * with an FCS error (u32, from this station). This count may not include
3075 * some packets with an FCS error due to TA corruption. Hence this counter
3076 * might not be fully accurate.
3071 * @__NL80211_STA_INFO_AFTER_LAST: internal3077 * @__NL80211_STA_INFO_AFTER_LAST: internal
3072 * @NL80211_STA_INFO_MAX: highest possible station info attribute3078 * @NL80211_STA_INFO_MAX: highest possible station info attribute
3073 */3079 */
@@ -3108,6 +3114,8 @@ enum nl80211_sta_info { · 34 unmodified lines
3108 NL80211_STA_INFO_PAD,3114 NL80211_STA_INFO_PAD,
3109 NL80211_STA_INFO_ACK_SIGNAL,3115 NL80211_STA_INFO_ACK_SIGNAL,
3110 NL80211_STA_INFO_ACK_SIGNAL_AVG,3116 NL80211_STA_INFO_ACK_SIGNAL_AVG,
3117 NL80211_STA_INFO_RX_MPDUS,
3118 NL80211_STA_INFO_FCS_ERROR_COUNT,
3111 3119
3112 /* keep last */3120 /* keep last */
3113 __NL80211_STA_INFO_AFTER_LAST,3121 __NL80211_STA_INFO_AFTER_LAST,