Alexander Wetzel 286e696770 wifi: mac80211: Drop cooked monitor support
Hostapd switched from cooked monitor interfaces to nl80211 Dec 2011.
Drop support for the outdated cooked monitor interfaces and fix
creating the virtual monitor interfaces in the following cases:

 1) We have one non-monitor and one monitor interface with
    %MONITOR_FLAG_ACTIVE enabled and then delete the non-monitor
    interface.

 2) We only have monitor interfaces enabled on resume while at least one
    has %MONITOR_FLAG_ACTIVE set.

Signed-off-by: Alexander Wetzel <Alexander@wetzel-home.de>
Link: https://patch.msgid.link/20250204111352.7004-2-Alexander@wetzel-home.de
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2025-02-11 11:58:17 +01:00

98 lines
2.9 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* mac80211 drop reason list
*
* Copyright (C) 2023-2024 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_UNUSABLE(R) \
/* 0x00 == ___RX_DROP_UNUSABLE */ \
R(RX_DROP_U_MIC_FAIL) \
R(RX_DROP_U_REPLAY) \
R(RX_DROP_U_BAD_MMIE) \
R(RX_DROP_U_DUP) \
R(RX_DROP_U_SPURIOUS) \
R(RX_DROP_U_DECRYPT_FAIL) \
R(RX_DROP_U_NO_KEY_ID) \
R(RX_DROP_U_BAD_CIPHER) \
R(RX_DROP_U_OOM) \
R(RX_DROP_U_NONSEQ_PN) \
R(RX_DROP_U_BAD_KEY_COLOR) \
R(RX_DROP_U_BAD_4ADDR) \
R(RX_DROP_U_BAD_AMSDU) \
R(RX_DROP_U_BAD_AMSDU_CIPHER) \
R(RX_DROP_U_INVALID_8023) \
/* 0x10 */ \
R(RX_DROP_U_RUNT_ACTION) \
R(RX_DROP_U_UNPROT_ACTION) \
R(RX_DROP_U_UNPROT_DUAL) \
R(RX_DROP_U_UNPROT_UCAST_MGMT) \
R(RX_DROP_U_UNPROT_MCAST_MGMT) \
R(RX_DROP_U_UNPROT_BEACON) \
R(RX_DROP_U_UNPROT_UNICAST_PUB_ACTION) \
R(RX_DROP_U_UNPROT_ROBUST_ACTION) \
R(RX_DROP_U_ACTION_UNKNOWN_SRC) \
R(RX_DROP_U_REJECTED_ACTION_RESPONSE) \
R(RX_DROP_U_EXPECT_DEFRAG_PROT) \
R(RX_DROP_U_WEP_DEC_FAIL) \
R(RX_DROP_U_NO_IV) \
R(RX_DROP_U_NO_ICV) \
R(RX_DROP_U_AP_RX_GROUPCAST) \
R(RX_DROP_U_SHORT_MMIC) \
/* 0x20 */ \
R(RX_DROP_U_MMIC_FAIL) \
R(RX_DROP_U_SHORT_TKIP) \
R(RX_DROP_U_TKIP_FAIL) \
R(RX_DROP_U_SHORT_CCMP) \
R(RX_DROP_U_SHORT_CCMP_MIC) \
R(RX_DROP_U_SHORT_GCMP) \
R(RX_DROP_U_SHORT_GCMP_MIC) \
R(RX_DROP_U_SHORT_CMAC) \
R(RX_DROP_U_SHORT_CMAC256) \
R(RX_DROP_U_SHORT_GMAC) \
R(RX_DROP_U_UNEXPECTED_VLAN_4ADDR) \
R(RX_DROP_U_UNEXPECTED_STA_4ADDR) \
R(RX_DROP_U_UNEXPECTED_VLAN_MCAST) \
R(RX_DROP_U_NOT_PORT_CONTROL) \
R(RX_DROP_U_UNEXPECTED_4ADDR_FRAME) \
R(RX_DROP_U_BAD_BCN_KEYIDX) \
/* 0x30 */ \
R(RX_DROP_U_BAD_MGMT_KEYIDX) \
R(RX_DROP_U_UNKNOWN_ACTION_REJECTED) \
/* 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_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 = (__force ieee80211_rx_result)___RX_DROP_UNUSABLE,
#define DEF(x) x = (__force ieee80211_rx_result)___ ## x,
MAC80211_DROP_REASONS_UNUSABLE(DEF)
#undef DEF
};
#define RX_RES_IS_UNUSABLE(result) \
(((__force u32)(result) & SKB_DROP_REASON_SUBSYS_MASK) == ___RX_DROP_UNUSABLE)
#endif /* MAC80211_DROP_H */