]> git.ipfire.org Git - thirdparty/iw.git/commitdiff
wowlan: don't require pattern offset
authorJohannes Berg <johannes.berg@intel.com>
Thu, 10 Apr 2014 07:42:30 +0000 (09:42 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 10 Apr 2014 07:42:30 +0000 (09:42 +0200)
Not all kernels have offset support, so don't treat it
being absent as an error.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
wowlan.c

index d323ca7938c0dfb5eda9bf6c8f1ad4b5f4981254..fc8e2c3b0a4ffd50f7663cd3fb3146d877103bde 100644 (file)
--- a/wowlan.c
+++ b/wowlan.c
@@ -357,25 +357,26 @@ static int print_wowlan_handler(struct nl_msg *msg, void *arg)
                                    trig[NL80211_WOWLAN_TRIG_PKT_PATTERN],
                                    rem_pattern) {
                        struct nlattr *patattr[NUM_NL80211_PKTPAT];
-                       int i, patlen, masklen, pkt_offset;
+                       int i, patlen, masklen;
                        uint8_t *mask, *pat;
                        nla_parse(patattr, MAX_NL80211_PKTPAT,
                                  nla_data(pattern), nla_len(pattern), NULL);
                        if (!patattr[NL80211_PKTPAT_MASK] ||
-                           !patattr[NL80211_PKTPAT_PATTERN] ||
-                           !patattr[NL80211_PKTPAT_OFFSET]) {
+                           !patattr[NL80211_PKTPAT_PATTERN]) {
                                printf(" * (invalid pattern specification)\n");
                                continue;
                        }
                        masklen = nla_len(patattr[NL80211_PKTPAT_MASK]);
                        patlen = nla_len(patattr[NL80211_PKTPAT_PATTERN]);
-                       pkt_offset =
-                               nla_get_u32(patattr[NL80211_PKTPAT_OFFSET]);
                        if (DIV_ROUND_UP(patlen, 8) != masklen) {
                                printf(" * (invalid pattern specification)\n");
                                continue;
                        }
-                       printf(" * wake up on packet offset: %d", pkt_offset);
+                       if (patattr[NL80211_PKTPAT_OFFSET]) {
+                               int pkt_offset =
+                                       nla_get_u32(patattr[NL80211_PKTPAT_OFFSET]);
+                               printf(" * wake up on packet offset: %d", pkt_offset);
+                       }
                        printf(" pattern: ");
                        pat = nla_data(patattr[NL80211_PKTPAT_PATTERN]);
                        mask = nla_data(patattr[NL80211_PKTPAT_MASK]);