@ -908,7 +908,7 @@ nla_put_failure:
static int nl80211_send_wowlan_tcp_caps ( struct cfg80211_registered_device * rdev ,
struct sk_buff * msg )
{
const struct wiphy_wowlan_tcp_support * tcp = rdev - > wiphy . wowlan . tcp ;
const struct wiphy_wowlan_tcp_support * tcp = rdev - > wiphy . wowlan - > tcp ;
struct nlattr * nl_tcp ;
if ( ! tcp )
@ -951,37 +951,37 @@ static int nl80211_send_wowlan(struct sk_buff *msg,
{
struct nlattr * nl_wowlan ;
if ( ! dev - > wiphy . wowlan . flags & & ! dev - > wiphy . wowlan . n_patterns )
if ( ! dev - > wiphy . wowlan )
return 0 ;
nl_wowlan = nla_nest_start ( msg , NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED ) ;
if ( ! nl_wowlan )
return - ENOBUFS ;
if ( ( ( dev - > wiphy . wowlan . flags & WIPHY_WOWLAN_ANY ) & &
if ( ( ( dev - > wiphy . wowlan - > flags & WIPHY_WOWLAN_ANY ) & &
nla_put_flag ( msg , NL80211_WOWLAN_TRIG_ANY ) ) | |
( ( dev - > wiphy . wowlan . flags & WIPHY_WOWLAN_DISCONNECT ) & &
( ( dev - > wiphy . wowlan - > flags & WIPHY_WOWLAN_DISCONNECT ) & &
nla_put_flag ( msg , NL80211_WOWLAN_TRIG_DISCONNECT ) ) | |
( ( dev - > wiphy . wowlan . flags & WIPHY_WOWLAN_MAGIC_PKT ) & &
( ( dev - > wiphy . wowlan - > flags & WIPHY_WOWLAN_MAGIC_PKT ) & &
nla_put_flag ( msg , NL80211_WOWLAN_TRIG_MAGIC_PKT ) ) | |
( ( dev - > wiphy . wowlan . flags & WIPHY_WOWLAN_SUPPORTS_GTK_REKEY ) & &
( ( dev - > wiphy . wowlan - > flags & WIPHY_WOWLAN_SUPPORTS_GTK_REKEY ) & &
nla_put_flag ( msg , NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED ) ) | |
( ( dev - > wiphy . wowlan . flags & WIPHY_WOWLAN_GTK_REKEY_FAILURE ) & &
( ( dev - > wiphy . wowlan - > flags & WIPHY_WOWLAN_GTK_REKEY_FAILURE ) & &
nla_put_flag ( msg , NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE ) ) | |
( ( dev - > wiphy . wowlan . flags & WIPHY_WOWLAN_EAP_IDENTITY_REQ ) & &
( ( dev - > wiphy . wowlan - > flags & WIPHY_WOWLAN_EAP_IDENTITY_REQ ) & &
nla_put_flag ( msg , NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST ) ) | |
( ( dev - > wiphy . wowlan . flags & WIPHY_WOWLAN_4WAY_HANDSHAKE ) & &
( ( dev - > wiphy . wowlan - > flags & WIPHY_WOWLAN_4WAY_HANDSHAKE ) & &
nla_put_flag ( msg , NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE ) ) | |
( ( dev - > wiphy . wowlan . flags & WIPHY_WOWLAN_RFKILL_RELEASE ) & &
( ( dev - > wiphy . wowlan - > flags & WIPHY_WOWLAN_RFKILL_RELEASE ) & &
nla_put_flag ( msg , NL80211_WOWLAN_TRIG_RFKILL_RELEASE ) ) )
return - ENOBUFS ;
if ( dev - > wiphy . wowlan . n_patterns ) {
if ( dev - > wiphy . wowlan - > n_patterns ) {
struct nl80211_wowlan_pattern_support pat = {
. max_patterns = dev - > wiphy . wowlan . n_patterns ,
. min_pattern_len = dev - > wiphy . wowlan . pattern_min_len ,
. max_pattern_len = dev - > wiphy . wowlan . pattern_max_len ,
. max_pkt_offset = dev - > wiphy . wowlan . max_pkt_offset ,
. max_patterns = dev - > wiphy . wowlan - > n_patterns ,
. min_pattern_len = dev - > wiphy . wowlan - > pattern_min_len ,
. max_pattern_len = dev - > wiphy . wowlan - > pattern_max_len ,
. max_pkt_offset = dev - > wiphy . wowlan - > max_pkt_offset ,
} ;
if ( nla_put ( msg , NL80211_WOWLAN_TRIG_PKT_PATTERN ,
@ -7580,8 +7580,7 @@ static int nl80211_get_wowlan(struct sk_buff *skb, struct genl_info *info)
void * hdr ;
u32 size = NLMSG_DEFAULT_SIZE ;
if ( ! rdev - > wiphy . wowlan . flags & & ! rdev - > wiphy . wowlan . n_patterns & &
! rdev - > wiphy . wowlan . tcp )
if ( ! rdev - > wiphy . wowlan )
return - EOPNOTSUPP ;
if ( rdev - > wiphy . wowlan_config & & rdev - > wiphy . wowlan_config - > tcp ) {
@ -7654,7 +7653,7 @@ static int nl80211_parse_wowlan_tcp(struct cfg80211_registered_device *rdev,
u32 data_size , wake_size , tokens_size = 0 , wake_mask_size ;
int err , port ;
if ( ! rdev - > wiphy . wowlan . tcp )
if ( ! rdev - > wiphy . wowlan - > tcp )
return - EINVAL ;
err = nla_parse ( tb , MAX_NL80211_WOWLAN_TCP ,
@ -7674,16 +7673,16 @@ static int nl80211_parse_wowlan_tcp(struct cfg80211_registered_device *rdev,
return - EINVAL ;
data_size = nla_len ( tb [ NL80211_WOWLAN_TCP_DATA_PAYLOAD ] ) ;
if ( data_size > rdev - > wiphy . wowlan . tcp - > data_payload_max )
if ( data_size > rdev - > wiphy . wowlan - > tcp - > data_payload_max )
return - EINVAL ;
if ( nla_get_u32 ( tb [ NL80211_WOWLAN_TCP_DATA_INTERVAL ] ) >
rdev - > wiphy . wowlan . tcp - > data_interval_max | |
rdev - > wiphy . wowlan - > tcp - > data_interval_max | |
nla_get_u32 ( tb [ NL80211_WOWLAN_TCP_DATA_INTERVAL ] ) = = 0 )
return - EINVAL ;
wake_size = nla_len ( tb [ NL80211_WOWLAN_TCP_WAKE_PAYLOAD ] ) ;
if ( wake_size > rdev - > wiphy . wowlan . tcp - > wake_payload_max )
if ( wake_size > rdev - > wiphy . wowlan - > tcp - > wake_payload_max )
return - EINVAL ;
wake_mask_size = nla_len ( tb [ NL80211_WOWLAN_TCP_WAKE_MASK ] ) ;
@ -7698,13 +7697,13 @@ static int nl80211_parse_wowlan_tcp(struct cfg80211_registered_device *rdev,
if ( ! tok - > len | | tokens_size % tok - > len )
return - EINVAL ;
if ( ! rdev - > wiphy . wowlan . tcp - > tok )
if ( ! rdev - > wiphy . wowlan - > tcp - > tok )
return - EINVAL ;
if ( tok - > len > rdev - > wiphy . wowlan . tcp - > tok - > max_len )
if ( tok - > len > rdev - > wiphy . wowlan - > tcp - > tok - > max_len )
return - EINVAL ;
if ( tok - > len < rdev - > wiphy . wowlan . tcp - > tok - > min_len )
if ( tok - > len < rdev - > wiphy . wowlan - > tcp - > tok - > min_len )
return - EINVAL ;
if ( tokens_size > rdev - > wiphy . wowlan . tcp - > tok - > bufsize )
if ( tokens_size > rdev - > wiphy . wowlan - > tcp - > tok - > bufsize )
return - EINVAL ;
if ( tok - > offset + tok - > len > data_size )
return - EINVAL ;
@ -7712,7 +7711,7 @@ static int nl80211_parse_wowlan_tcp(struct cfg80211_registered_device *rdev,
if ( tb [ NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ ] ) {
seq = nla_data ( tb [ NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ ] ) ;
if ( ! rdev - > wiphy . wowlan . tcp - > seq )
if ( ! rdev - > wiphy . wowlan - > tcp - > seq )
return - EINVAL ;
if ( seq - > len = = 0 | | seq - > len > 4 )
return - EINVAL ;
@ -7793,12 +7792,11 @@ static int nl80211_set_wowlan(struct sk_buff *skb, struct genl_info *info)
struct nlattr * tb [ NUM_NL80211_WOWLAN_TRIG ] ;
struct cfg80211_wowlan new_triggers = { } ;
struct cfg80211_wowlan * ntrig ;
struct wiphy_wowlan_support * wowlan = & rdev - > wiphy . wowlan ;
const struct wiphy_wowlan_support * wowlan = rdev - > wiphy . wowlan ;
int err , i ;
bool prev_enabled = rdev - > wiphy . wowlan_config ;
if ( ! rdev - > wiphy . wowlan . flags & & ! rdev - > wiphy . wowlan . n_patterns & &
! rdev - > wiphy . wowlan . tcp )
if ( ! wowlan )
return - EOPNOTSUPP ;
if ( ! info - > attrs [ NL80211_ATTR_WOWLAN_TRIGGERS ] ) {