mac80211: Add support for hardware ARP query filtering

Some hardware allow extended filtering of ARP frames not intended for
the host. To perform such filtering, the hardware needs to know the current
IP address(es) of the host, bound to its interface.

Add support for ARP filtering to mac80211 by adding a new op to the driver
interface, allowing to configure the current IP addresses. This op is called
upon association with the currently configured address(es), and when
associated whenever the IP address(es) change.

This patch adds configuration of IPv4 addresses only, as IPv6 addresses don't
need ARP filtering.

Signed-off-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Juuso Oikarinen
2010-05-27 15:32:13 +03:00
committed by John W. Linville
parent 095dfdb0c4
commit 2b2c009ecf
6 changed files with 130 additions and 2 deletions

View File

@ -219,6 +219,31 @@ TRACE_EVENT(drv_bss_info_changed,
)
);
TRACE_EVENT(drv_configure_arp_filter,
TP_PROTO(struct ieee80211_local *local,
struct ieee80211_sub_if_data *sdata,
struct in_ifaddr *ifa_list, int ret),
TP_ARGS(local, sdata, ifa_list, ret),
TP_STRUCT__entry(
LOCAL_ENTRY
VIF_ENTRY
__field(int, ret)
),
TP_fast_assign(
LOCAL_ASSIGN;
VIF_ASSIGN;
__entry->ret = ret;
),
TP_printk(
VIF_PR_FMT LOCAL_PR_FMT " ret:%d",
VIF_PR_ARG, LOCAL_PR_ARG, __entry->ret
)
);
TRACE_EVENT(drv_prepare_multicast,
TP_PROTO(struct ieee80211_local *local, int mc_count, u64 ret),