mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 01:24:33 +00:00
mac80211: make alignment warning optional
Driver authors should be aware of the alignment requirements, but not everybody cares about the warning. This patch makes it depend on a new Kconfig symbol MAC80211_DEBUG_PACKET_ALIGNMENT which can be enabled regardless of MAC80211_DEBUG and is recommended for driver authors (only). This also restricts the warning to data packets so other packets need not be realigned to not trigger the warning. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
24e1c13c93
commit
6feeb8aad7
@ -98,6 +98,18 @@ config MAC80211_DEBUGFS
|
|||||||
|
|
||||||
Say N unless you know you need this.
|
Say N unless you know you need this.
|
||||||
|
|
||||||
|
config MAC80211_DEBUG_PACKET_ALIGNMENT
|
||||||
|
bool "Enable packet alignment debugging"
|
||||||
|
depends on MAC80211
|
||||||
|
help
|
||||||
|
This option is recommended for driver authors and strongly
|
||||||
|
discouraged for everybody else, it will trigger a warning
|
||||||
|
when a driver hands mac80211 a buffer that is aligned in
|
||||||
|
a way that will cause problems with the IP stack on some
|
||||||
|
architectures.
|
||||||
|
|
||||||
|
Say N unless you're writing a mac80211 based driver.
|
||||||
|
|
||||||
config MAC80211_DEBUG
|
config MAC80211_DEBUG
|
||||||
bool "Enable debugging output"
|
bool "Enable debugging output"
|
||||||
depends on MAC80211
|
depends on MAC80211
|
||||||
|
@ -340,11 +340,15 @@ static u32 ieee80211_rx_load_stats(struct ieee80211_local *local,
|
|||||||
return load;
|
return load;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT
|
||||||
static ieee80211_txrx_result
|
static ieee80211_txrx_result
|
||||||
ieee80211_rx_h_verify_ip_alignment(struct ieee80211_txrx_data *rx)
|
ieee80211_rx_h_verify_ip_alignment(struct ieee80211_txrx_data *rx)
|
||||||
{
|
{
|
||||||
int hdrlen;
|
int hdrlen;
|
||||||
|
|
||||||
|
if (!WLAN_FC_DATA_PRESENT(rx->fc))
|
||||||
|
return TXRX_CONTINUE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Drivers are required to align the payload data in a way that
|
* Drivers are required to align the payload data in a way that
|
||||||
* guarantees that the contained IP header is aligned to a four-
|
* guarantees that the contained IP header is aligned to a four-
|
||||||
@ -371,11 +375,14 @@ ieee80211_rx_h_verify_ip_alignment(struct ieee80211_txrx_data *rx)
|
|||||||
|
|
||||||
return TXRX_CONTINUE;
|
return TXRX_CONTINUE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ieee80211_rx_handler ieee80211_rx_pre_handlers[] =
|
ieee80211_rx_handler ieee80211_rx_pre_handlers[] =
|
||||||
{
|
{
|
||||||
ieee80211_rx_h_parse_qos,
|
ieee80211_rx_h_parse_qos,
|
||||||
|
#ifdef CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT
|
||||||
ieee80211_rx_h_verify_ip_alignment,
|
ieee80211_rx_h_verify_ip_alignment,
|
||||||
|
#endif
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user