If user knows the location of a wowlan pattern to be matched in Rx packet, he can provide an offset with the pattern. This will help drivers to ignore initial bytes and match the pattern efficiently.
Showing the changes to include/uapi (1 of 3 files). Show all
Unified · Split
| @@ -2910,6 +2910,8 @@ enum nl80211_tx_power_setting { · 2909 unmodified lines | ||
| 2910 | 2910 | * Note that the pattern matching is done as though frames were not |
| 2911 | 2911 | * 802.11 frames but 802.3 frames, i.e. the frame is fully unpacked |
| 2912 | 2912 | * first (including SNAP header unpacking) and then matched. |
| 2913 | + * @NL80211_WOWLAN_PKTPAT_OFFSET: packet offset, pattern is matched after | |
| 2914 | + * these fixed number of bytes of received packet | |
| 2913 | 2915 | * @NUM_NL80211_WOWLAN_PKTPAT: number of attributes |
| 2914 | 2916 | * @MAX_NL80211_WOWLAN_PKTPAT: max attribute number |
| 2915 | 2917 | */ |
| @@ -2917,6 +2919,7 @@ enum nl80211_wowlan_packet_pattern_attr { · 1 unmodified line | ||
| 2917 | 2919 | __NL80211_WOWLAN_PKTPAT_INVALID, |
| 2918 | 2920 | NL80211_WOWLAN_PKTPAT_MASK, |
| 2919 | 2921 | NL80211_WOWLAN_PKTPAT_PATTERN, |
| 2922 | + NL80211_WOWLAN_PKTPAT_OFFSET, | |
| 2920 | 2923 | |
| 2921 | 2924 | NUM_NL80211_WOWLAN_PKTPAT, |
| 2922 | 2925 | MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1, |
| @@ -2927,6 +2930,7 @@ enum nl80211_wowlan_packet_pattern_attr { · 4 unmodified lines | ||
| 2927 | 2930 | * @max_patterns: maximum number of patterns supported |
| 2928 | 2931 | * @min_pattern_len: minimum length of each pattern |
| 2929 | 2932 | * @max_pattern_len: maximum length of each pattern |
| 2933 | + * @max_pkt_offset: maximum Rx packet offset | |
| 2930 | 2934 | * |
| 2931 | 2935 | * This struct is carried in %NL80211_WOWLAN_TRIG_PKT_PATTERN when |
| 2932 | 2936 | * that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED in the |
| @@ -2936,6 +2940,7 @@ struct nl80211_wowlan_pattern_support { · 3 unmodified lines | ||
| 2936 | 2940 | __u32 max_patterns; |
| 2937 | 2941 | __u32 min_pattern_len; |
| 2938 | 2942 | __u32 max_pattern_len; |
| 2943 | + __u32 max_pkt_offset; | |
| 2939 | 2944 | } __attribute__((packed)); |
| 2940 | 2945 | |
| 2941 | 2946 | /** |
| @@ -2951,9 +2956,10 @@ struct nl80211_wowlan_pattern_support { · 9 unmodified lines | ||
| 2951 | 2956 | * @NL80211_WOWLAN_TRIG_PKT_PATTERN: wake up on the specified packet patterns |
| 2952 | 2957 | * which are passed in an array of nested attributes, each nested attribute |
| 2953 | 2958 | * defining a with attributes from &struct nl80211_wowlan_trig_pkt_pattern. |
| 2954 | − * Each pattern defines a wakeup packet. The matching is done on the MSDU, | |
| 2955 | − * i.e. as though the packet was an 802.3 packet, so the pattern matching | |
| 2956 | − * is done after the packet is converted to the MSDU. | |
| 2959 | + * Each pattern defines a wakeup packet. Packet offset is associated with | |
| 2960 | + * each pattern which is used while matching the pattern. The matching is | |
| 2961 | + * done on the MSDU, i.e. as though the packet was an 802.3 packet, so the | |
| 2962 | + * pattern matching is done after the packet is converted to the MSDU. | |
| 2957 | 2963 | * |
| 2958 | 2964 | * In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute |
| 2959 | 2965 | * carrying a &struct nl80211_wowlan_pattern_support. |