-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mac80211: use the new drop reasons infrastructure
It can be really hard to analyse or debug why packets are going missing in mac80211, so add the needed infrastructure to use use the new per-subsystem drop reasons. We actually use two drop reason subsystems here because of the different handling of frames that are dropped but still go to monitor for old versions of hostapd, and those that are just completely unusable (e.g. crypto failed.) Annotate a few reasons here just to illustrate this, we'll need to go through and annotate more of them later. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
- Loading branch information
Johannes Berg
authored and
Jakub Kicinski
committed
Apr 21, 2023
1 parent
071c0fc
commit baa951a
Showing
6 changed files
with
138 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/* SPDX-License-Identifier: GPL-2.0-only */ | ||
/* | ||
* mac80211 drop reason list | ||
* | ||
* Copyright (C) 2023 Intel Corporation | ||
*/ | ||
|
||
#ifndef MAC80211_DROP_H | ||
#define MAC80211_DROP_H | ||
#include <net/dropreason.h> | ||
|
||
typedef unsigned int __bitwise ieee80211_rx_result; | ||
|
||
#define MAC80211_DROP_REASONS_MONITOR(R) \ | ||
R(RX_DROP_M_UNEXPECTED_4ADDR_FRAME) \ | ||
R(RX_DROP_M_BAD_BCN_KEYIDX) \ | ||
R(RX_DROP_M_BAD_MGMT_KEYIDX) \ | ||
/* this line for the trailing \ - add before this */ | ||
|
||
#define MAC80211_DROP_REASONS_UNUSABLE(R) \ | ||
R(RX_DROP_U_MIC_FAIL) \ | ||
R(RX_DROP_U_REPLAY) \ | ||
R(RX_DROP_U_BAD_MMIE) \ | ||
/* this line for the trailing \ - add before this */ | ||
|
||
/* having two enums allows for checking ieee80211_rx_result use with sparse */ | ||
enum ___mac80211_drop_reason { | ||
/* if we get to the end of handlers with RX_CONTINUE this will be the reason */ | ||
___RX_CONTINUE = SKB_CONSUMED, | ||
|
||
/* this never gets used as an argument to kfree_skb_reason() */ | ||
___RX_QUEUED = SKB_NOT_DROPPED_YET, | ||
|
||
#define ENUM(x) ___ ## x, | ||
___RX_DROP_MONITOR = SKB_DROP_REASON_SUBSYS_MAC80211_MONITOR << | ||
SKB_DROP_REASON_SUBSYS_SHIFT, | ||
MAC80211_DROP_REASONS_MONITOR(ENUM) | ||
|
||
___RX_DROP_UNUSABLE = SKB_DROP_REASON_SUBSYS_MAC80211_UNUSABLE << | ||
SKB_DROP_REASON_SUBSYS_SHIFT, | ||
MAC80211_DROP_REASONS_UNUSABLE(ENUM) | ||
#undef ENUM | ||
}; | ||
|
||
enum mac80211_drop_reason { | ||
RX_CONTINUE = (__force ieee80211_rx_result)___RX_CONTINUE, | ||
RX_QUEUED = (__force ieee80211_rx_result)___RX_QUEUED, | ||
RX_DROP_MONITOR = (__force ieee80211_rx_result)___RX_DROP_MONITOR, | ||
RX_DROP_UNUSABLE = (__force ieee80211_rx_result)___RX_DROP_UNUSABLE, | ||
#define DEF(x) x = (__force ieee80211_rx_result)___ ## x, | ||
MAC80211_DROP_REASONS_MONITOR(DEF) | ||
MAC80211_DROP_REASONS_UNUSABLE(DEF) | ||
#undef DEF | ||
}; | ||
|
||
#endif /* MAC80211_DROP_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters