| 1 | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|---|
| 2 | /* | 
|---|
| 3 | * mac80211 drop reason list | 
|---|
| 4 | * | 
|---|
| 5 | * Copyright (C) 2023-2024 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_UNUSABLE(R)	\ | 
|---|
| 15 | /* 0x00 == ___RX_DROP_UNUSABLE */	\ | 
|---|
| 16 | R(RX_DROP_U_MIC_FAIL)			\ | 
|---|
| 17 | R(RX_DROP_U_REPLAY)			\ | 
|---|
| 18 | R(RX_DROP_U_BAD_MMIE)			\ | 
|---|
| 19 | R(RX_DROP_U_DUP)			\ | 
|---|
| 20 | R(RX_DROP_U_SPURIOUS)			\ | 
|---|
| 21 | R(RX_DROP_U_DECRYPT_FAIL)		\ | 
|---|
| 22 | R(RX_DROP_U_NO_KEY_ID)			\ | 
|---|
| 23 | R(RX_DROP_U_BAD_CIPHER)			\ | 
|---|
| 24 | R(RX_DROP_U_OOM)			\ | 
|---|
| 25 | R(RX_DROP_U_NONSEQ_PN)			\ | 
|---|
| 26 | R(RX_DROP_U_BAD_KEY_COLOR)		\ | 
|---|
| 27 | R(RX_DROP_U_BAD_4ADDR)			\ | 
|---|
| 28 | R(RX_DROP_U_BAD_AMSDU)			\ | 
|---|
| 29 | R(RX_DROP_U_BAD_AMSDU_CIPHER)		\ | 
|---|
| 30 | R(RX_DROP_U_INVALID_8023)		\ | 
|---|
| 31 | /* 0x10 */				\ | 
|---|
| 32 | R(RX_DROP_U_RUNT_ACTION)		\ | 
|---|
| 33 | R(RX_DROP_U_UNPROT_ACTION)		\ | 
|---|
| 34 | R(RX_DROP_U_UNPROT_DUAL)		\ | 
|---|
| 35 | R(RX_DROP_U_UNPROT_UCAST_MGMT)		\ | 
|---|
| 36 | R(RX_DROP_U_UNPROT_MCAST_MGMT)		\ | 
|---|
| 37 | R(RX_DROP_U_UNPROT_BEACON)		\ | 
|---|
| 38 | R(RX_DROP_U_UNPROT_UNICAST_PUB_ACTION)	\ | 
|---|
| 39 | R(RX_DROP_U_UNPROT_ROBUST_ACTION)	\ | 
|---|
| 40 | R(RX_DROP_U_ACTION_UNKNOWN_SRC)		\ | 
|---|
| 41 | R(RX_DROP_U_REJECTED_ACTION_RESPONSE)	\ | 
|---|
| 42 | R(RX_DROP_U_EXPECT_DEFRAG_PROT)		\ | 
|---|
| 43 | R(RX_DROP_U_WEP_DEC_FAIL)		\ | 
|---|
| 44 | R(RX_DROP_U_NO_IV)			\ | 
|---|
| 45 | R(RX_DROP_U_NO_ICV)			\ | 
|---|
| 46 | R(RX_DROP_U_AP_RX_GROUPCAST)		\ | 
|---|
| 47 | R(RX_DROP_U_SHORT_MMIC)			\ | 
|---|
| 48 | /* 0x20 */				\ | 
|---|
| 49 | R(RX_DROP_U_MMIC_FAIL)			\ | 
|---|
| 50 | R(RX_DROP_U_SHORT_TKIP)			\ | 
|---|
| 51 | R(RX_DROP_U_TKIP_FAIL)			\ | 
|---|
| 52 | R(RX_DROP_U_SHORT_CCMP)			\ | 
|---|
| 53 | R(RX_DROP_U_SHORT_CCMP_MIC)		\ | 
|---|
| 54 | R(RX_DROP_U_SHORT_GCMP)			\ | 
|---|
| 55 | R(RX_DROP_U_SHORT_GCMP_MIC)		\ | 
|---|
| 56 | R(RX_DROP_U_SHORT_CMAC)			\ | 
|---|
| 57 | R(RX_DROP_U_SHORT_CMAC256)		\ | 
|---|
| 58 | R(RX_DROP_U_SHORT_GMAC)			\ | 
|---|
| 59 | R(RX_DROP_U_UNEXPECTED_VLAN_4ADDR)	\ | 
|---|
| 60 | R(RX_DROP_U_UNEXPECTED_STA_4ADDR)	\ | 
|---|
| 61 | R(RX_DROP_U_UNEXPECTED_VLAN_MCAST)	\ | 
|---|
| 62 | R(RX_DROP_U_NOT_PORT_CONTROL)		\ | 
|---|
| 63 | R(RX_DROP_U_UNEXPECTED_4ADDR_FRAME)	\ | 
|---|
| 64 | R(RX_DROP_U_BAD_BCN_KEYIDX)		\ | 
|---|
| 65 | /* 0x30 */				\ | 
|---|
| 66 | R(RX_DROP_U_BAD_MGMT_KEYIDX)		\ | 
|---|
| 67 | R(RX_DROP_U_UNKNOWN_ACTION_REJECTED)	\ | 
|---|
| 68 | /* this line for the trailing \ - add before this */ | 
|---|
| 69 |  | 
|---|
| 70 | /* having two enums allows for checking ieee80211_rx_result use with sparse */ | 
|---|
| 71 | enum ___mac80211_drop_reason { | 
|---|
| 72 | /* if we get to the end of handlers with RX_CONTINUE this will be the reason */ | 
|---|
| 73 | ___RX_CONTINUE	= SKB_CONSUMED, | 
|---|
| 74 |  | 
|---|
| 75 | /* this never gets used as an argument to kfree_skb_reason() */ | 
|---|
| 76 | ___RX_QUEUED	= SKB_NOT_DROPPED_YET, | 
|---|
| 77 |  | 
|---|
| 78 | #define ENUM(x) ___ ## x, | 
|---|
| 79 | ___RX_DROP_UNUSABLE = SKB_DROP_REASON_SUBSYS_MAC80211_UNUSABLE << | 
|---|
| 80 | SKB_DROP_REASON_SUBSYS_SHIFT, | 
|---|
| 81 | MAC80211_DROP_REASONS_UNUSABLE(ENUM) | 
|---|
| 82 | #undef ENUM | 
|---|
| 83 | }; | 
|---|
| 84 |  | 
|---|
| 85 | enum mac80211_drop_reason { | 
|---|
| 86 | RX_CONTINUE	= (__force ieee80211_rx_result)___RX_CONTINUE, | 
|---|
| 87 | RX_QUEUED	= (__force ieee80211_rx_result)___RX_QUEUED, | 
|---|
| 88 | RX_DROP		= (__force ieee80211_rx_result)___RX_DROP_UNUSABLE, | 
|---|
| 89 | #define DEF(x) x = (__force ieee80211_rx_result)___ ## x, | 
|---|
| 90 | MAC80211_DROP_REASONS_UNUSABLE(DEF) | 
|---|
| 91 | #undef DEF | 
|---|
| 92 | }; | 
|---|
| 93 |  | 
|---|
| 94 | #define RX_RES_IS_UNUSABLE(result)	\ | 
|---|
| 95 | (((__force u32)(result) & SKB_DROP_REASON_SUBSYS_MASK) == ___RX_DROP_UNUSABLE) | 
|---|
| 96 |  | 
|---|
| 97 | #endif /* MAC80211_DROP_H */ | 
|---|
| 98 |  | 
|---|