mac80211: Use #define IEEE80211_CCMP_PN_LEN and bool
Subsystems (3)
PATCH 1/1 mac80211: Use #define IEEE80211_CCMP_PN_LEN and bool
Use a #define constant instead of a hardcoded value and use bool for an int used as a bool to reduce structure size.
Miscellanea:
Neaten comments in structure definition.
Add #include of ieee80211.h
--- net/mac80211/ieee80211_i.h | 7 ++++--- net/mac80211/rx.c | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-)
net/mac80211/ieee80211_i.h +4 -3
@@ -26,6 +26,7 @@#include <linux/etherdevice.h> #include <linux/leds.h> #include <linux/idr.h> +#include <linux/ieee80211.h> #include <net/ieee80211_radiotap.h> #include <net/cfg80211.h> #include <net/mac80211.h>
@@ -89,11 +90,11 @@ struct ieee80211_fragment_entry {unsigned int last_frag;unsigned int extra_len;struct sk_buff_head skb_list; -int ccmp;/* Whether fragments were encrypted with CCMP */ -u8 last_pn[6 ];/* PN of the last fragment if CCMP was used */ +/* for CCMP fragments */ +bool ccmp;/* encrypted with CCMP */ +u8 last_pn[IEEE80211_CCMP_PN_LEN ];/* PN of the last fragment */ }; -struct ieee80211_bss {u32 device_ts_beacon, device_ts_presp;
net/mac80211/rx.c +2 -2
@@ -1711,7 +1711,7 @@ ieee80211_reassemble_add(struct ieee80211_sub_if_data *sdata, entry->seq = seq; entry->rx_queue = rx_queue; entry->last_frag = frag; - entry->ccmp =0 ; + entry->ccmp = false; entry->extra_len =0 ;return entry;
@@ -1812,7 +1812,7 @@ ieee80211_rx_h_defragment(struct ieee80211_rx_data *rx)int queue = rx->security_idx;/* Store CCMP PN so that we can verify that the next * fragment has a sequential PN value. */ - entry->ccmp =1 ; + entry->ccmp = true;memcpy (entry->last_pn, rx->key->u.ccmp.rx_pn[queue],IEEE80211_CCMP_PN_LEN );
Johannes Berg
maintainernet/mac80211/ieee80211_i.h struct ieee80211_fragment_entry { · line 95
Quoted 9 lines · Joe Perches
net/mac80211/ieee80211_i.h +3
-2@@ -89,11 +90,11 @@ struct ieee80211_fragment_entry {unsigned int last_frag;unsigned int extra_len;struct sk_buff_head skb_list; -int ccmp;/* Whether fragments were encrypted with CCMP */ -u8 last_pn[6 ];/* PN of the last fragment if CCMP was used */ +/* for CCMP fragments */ +bool ccmp;/* encrypted with CCMP */ +u8 last_pn[IEEE80211_CCMP_PN_LEN ];/* PN of the last fragment */
I took your patch as an opportunity to check into this, and it turns out all of this logic is also going to be needed for GCMP. As a result, I'm not going to take this patch but instead we'll fix it up for GCMP (where using CCMP_PN_LEN would not be appropriate anyway - perhaps we need a union or just keep '8' which is the right size for both anyway, or we'll go to a u64 value or something)
johannes
Quoted 18 lines · Johannes Berg
net/mac80211/ieee80211_i.h struct ieee80211_fragment_entry { · line 95
Quoted 9 lines · Joe Perches
net/mac80211/ieee80211_i.h +3
-2@@ -89,11 +90,11 @@ struct ieee80211_fragment_entry {unsigned int last_frag;unsigned int extra_len;struct sk_buff_head skb_list; -int ccmp;/* Whether fragments were encrypted with CCMP */ -u8 last_pn[6 ];/* PN of the last fragment if CCMP was used */ +/* for CCMP fragments */ +bool ccmp;/* encrypted with CCMP */ +u8 last_pn[IEEE80211_CCMP_PN_LEN ];/* PN of the last fragment */ I took your patch as an opportunity to check into this, and it turns out all of this logic is also going to be needed for GCMP. As a result, I'm not going to take this patch but instead we'll fix it up for GCMP (where using
CCMP_PN_LENwould not be appropriate anyway - perhaps we need a union or just keep '8' which is the right size for both anyway, or we'll go to a u64 value or something)
No worries. Whatever's right.