1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * mac80211 drop reason list 4 * 5 * Copyright (C) 2023 Intel Corporation 6 */ 7 8 #ifndef MAC80211_DROP_H 9 #define MAC80211_DROP_H 10 #include <net/dropreason.h> 11 12 typedef unsigned int __bitwise ieee80211_rx_result; 13 14 #define MAC80211_DROP_REASONS_MONITOR(R) \ 15 R(RX_DROP_M_UNEXPECTED_4ADDR_FRAME) \ 16 R(RX_DROP_M_BAD_BCN_KEYIDX) \ 17 R(RX_DROP_M_BAD_MGMT_KEYIDX) \ 18 /* this line for the trailing \ - add before this */ 19 20 #define MAC80211_DROP_REASONS_UNUSABLE(R) \ 21 R(RX_DROP_U_MIC_FAIL) \ 22 R(RX_DROP_U_REPLAY) \ 23 R(RX_DROP_U_BAD_MMIE) \ 24 /* this line for the trailing \ - add before this */ 25 26 /* having two enums allows for checking ieee80211_rx_result use with sparse */ 27 enum ___mac80211_drop_reason { 28 /* if we get to the end of handlers with RX_CONTINUE this will be the reason */ 29 ___RX_CONTINUE = SKB_CONSUMED, 30 31 /* this never gets used as an argument to kfree_skb_reason() */ 32 ___RX_QUEUED = SKB_NOT_DROPPED_YET, 33 34 #define ENUM(x) ___ ## x, 35 ___RX_DROP_MONITOR = SKB_DROP_REASON_SUBSYS_MAC80211_MONITOR << 36 SKB_DROP_REASON_SUBSYS_SHIFT, 37 MAC80211_DROP_REASONS_MONITOR(ENUM) 38 39 ___RX_DROP_UNUSABLE = SKB_DROP_REASON_SUBSYS_MAC80211_UNUSABLE << 40 SKB_DROP_REASON_SUBSYS_SHIFT, 41 MAC80211_DROP_REASONS_UNUSABLE(ENUM) 42 #undef ENUM 43 }; 44 45 enum mac80211_drop_reason { 46 RX_CONTINUE = (__force ieee80211_rx_result)___RX_CONTINUE, 47 RX_QUEUED = (__force ieee80211_rx_result)___RX_QUEUED, 48 RX_DROP_MONITOR = (__force ieee80211_rx_result)___RX_DROP_MONITOR, 49 RX_DROP_UNUSABLE = (__force ieee80211_rx_result)___RX_DROP_UNUSABLE, 50 #define DEF(x) x = (__force ieee80211_rx_result)___ ## x, 51 MAC80211_DROP_REASONS_MONITOR(DEF) 52 MAC80211_DROP_REASONS_UNUSABLE(DEF) 53 #undef DEF 54 }; 55 56 #define RX_RES_IS_UNUSABLE(result) \ 57 (((__force u32)(result) & SKB_DROP_REASON_SUBSYS_MASK) == ___RX_DROP_UNUSABLE) 58 59 #endif /* MAC80211_DROP_H */ 60