driver: Add a packet filtering function declaration

Add a new function declaration that will allow wpa_supplicant to request
the driver to configure data frame filters for specific cases.

Add definitions that will allow frame filtering for stations as
required by Hotspot 2.0:

1. Gratuitous ARP
2. Unsolicited NA
3. Unicast IP packets encrypted with GTK

Signed-off-by: Matti Gottlieb <matti.gottlieb@intel.com>
This commit is contained in:
Matti Gottlieb 2016-04-06 17:14:40 +03:00 committed by Jouni Malinen
parent ae33239c55
commit e42adb9a75
2 changed files with 25 additions and 0 deletions

View File

@ -54,6 +54,13 @@
#define HOSTAPD_CHAN_VHT_130_30 0x04000000
#define HOSTAPD_CHAN_VHT_150_10 0x08000000
/* Filter gratuitous ARP */
#define WPA_DATA_FRAME_FILTER_FLAG_ARP BIT(0)
/* Filter unsolicited Neighbor Advertisement */
#define WPA_DATA_FRAME_FILTER_FLAG_NA BIT(1)
/* Filter unicast IP packets encrypted using the GTK */
#define WPA_DATA_FRAME_FILTER_FLAG_GTK BIT(2)
/**
* enum reg_change_initiator - Regulatory change initiator
*/
@ -3538,6 +3545,15 @@ struct wpa_driver_ops {
* Returns 0 on success, -1 on failure
*/
int (*abort_scan)(void *priv);
/**
* configure_data_frame_filters - Request to configure frame filters
* @priv: Private driver interface data
* @filter_flags: The type of frames to filter (bitfield of
* WPA_DATA_FRAME_FILTER_FLAG_*)
* Returns: 0 on success or -1 on failure
*/
int (*configure_data_frame_filters)(void *priv, u32 filter_flags);
};

View File

@ -917,4 +917,13 @@ static inline int wpa_drv_abort_scan(struct wpa_supplicant *wpa_s)
return wpa_s->driver->abort_scan(wpa_s->drv_priv);
}
static inline int wpa_drv_configure_frame_filters(struct wpa_supplicant *wpa_s,
u32 filters)
{
if (!wpa_s->driver->configure_data_frame_filters)
return -1;
return wpa_s->driver->configure_data_frame_filters(wpa_s->drv_priv,
filters);
}
#endif /* DRIVER_I_H */