aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJuuso Oikarinen <juuso.oikarinen@nokia.com>2010-05-27 08:32:13 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-03 14:10:45 -0400
commit2b2c009ecf71f4c66ff8420b63dddbc9737e04e3 (patch)
tree62f93194843ecf92d871d34963450c03d165af08 /include
parent095dfdb0c479661f437b24b85e31f0d0b841eab6 (diff)
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>
Diffstat (limited to 'include')
-rw-r--r--include/net/mac80211.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index f26440a46df..74b9b49ddfa 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -19,6 +19,7 @@
19#include <linux/wireless.h> 19#include <linux/wireless.h>
20#include <linux/device.h> 20#include <linux/device.h>
21#include <linux/ieee80211.h> 21#include <linux/ieee80211.h>
22#include <linux/inetdevice.h>
22#include <net/cfg80211.h> 23#include <net/cfg80211.h>
23 24
24/** 25/**
@@ -1532,6 +1533,16 @@ enum ieee80211_ampdu_mlme_action {
1532 * of the bss parameters has changed when a call is made. The callback 1533 * of the bss parameters has changed when a call is made. The callback
1533 * can sleep. 1534 * can sleep.
1534 * 1535 *
1536 * @configure_arp_filter: Configuration function for hardware ARP query filter.
1537 * This function is called with all the IP addresses configured to the
1538 * interface as argument - all ARP queries targeted to any of these
1539 * addresses must pass through. If the hardware filter does not support
1540 * enought addresses, hardware filtering must be disabled. The ifa_list
1541 * argument may be NULL, indicating that filtering must be disabled.
1542 * This function is called upon association complete with current
1543 * address(es), and while associated whenever the IP address(es) change.
1544 * The callback can sleep.
1545 *
1535 * @prepare_multicast: Prepare for multicast filter configuration. 1546 * @prepare_multicast: Prepare for multicast filter configuration.
1536 * This callback is optional, and its return value is passed 1547 * This callback is optional, and its return value is passed
1537 * to configure_filter(). This callback must be atomic. 1548 * to configure_filter(). This callback must be atomic.
@@ -1671,6 +1682,9 @@ struct ieee80211_ops {
1671 struct ieee80211_vif *vif, 1682 struct ieee80211_vif *vif,
1672 struct ieee80211_bss_conf *info, 1683 struct ieee80211_bss_conf *info,
1673 u32 changed); 1684 u32 changed);
1685 int (*configure_arp_filter)(struct ieee80211_hw *hw,
1686 struct ieee80211_vif *vif,
1687 struct in_ifaddr *ifa_list);
1674 u64 (*prepare_multicast)(struct ieee80211_hw *hw, 1688 u64 (*prepare_multicast)(struct ieee80211_hw *hw,
1675 struct netdev_hw_addr_list *mc_list); 1689 struct netdev_hw_addr_list *mc_list);
1676 void (*configure_filter)(struct ieee80211_hw *hw, 1690 void (*configure_filter)(struct ieee80211_hw *hw,