aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-01-14 09:14:34 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-01-18 15:55:38 -0500
commita65240c1013222dbf41166c8b2c5ed2720c807c3 (patch)
tree782ebe013571cbf1b83c306964372faffe348b42 /include/net/mac80211.h
parent0a214d3f7e5041685ebff054628a4354bedd78c3 (diff)
mac80211: allow drivers to access IPv6 information
To be able to implement NS response offloading (in regular operation or while in WoWLAN) drivers need to know the IPv6 addresses assigned to interfaces. Implement an IPv6 notifier in mac80211 to call the driver when addresses change. Unlike for IPv4, implement it as a callback rather than as a list in the BSS configuration, that is more flexible. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 679ad4bb222b..ece5733d113d 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2497,6 +2497,9 @@ enum ieee80211_rate_control_changed {
2497 * driver's resume function returned 1, as this is just like an "inline" 2497 * driver's resume function returned 1, as this is just like an "inline"
2498 * hardware restart. This callback may sleep. 2498 * hardware restart. This callback may sleep.
2499 * 2499 *
2500 * @ipv6_addr_change: IPv6 address assignment on the given interface changed.
2501 * Currently, this is only called for managed or P2P client interfaces.
2502 * This callback is optional; it must not sleep.
2500 */ 2503 */
2501struct ieee80211_ops { 2504struct ieee80211_ops {
2502 void (*tx)(struct ieee80211_hw *hw, 2505 void (*tx)(struct ieee80211_hw *hw,
@@ -2672,6 +2675,12 @@ struct ieee80211_ops {
2672 struct ieee80211_chanctx_conf *ctx); 2675 struct ieee80211_chanctx_conf *ctx);
2673 2676
2674 void (*restart_complete)(struct ieee80211_hw *hw); 2677 void (*restart_complete)(struct ieee80211_hw *hw);
2678
2679#if IS_ENABLED(CONFIG_IPV6)
2680 void (*ipv6_addr_change)(struct ieee80211_hw *hw,
2681 struct ieee80211_vif *vif,
2682 struct inet6_dev *idev);
2683#endif
2675}; 2684};
2676 2685
2677/** 2686/**