> +static int nl80211_tx_control_port(struct sk_buff *skb, struct genl_info *info) > +{ > + struct cfg80211_registered_device *rdev = info->user_ptr[0]; > + struct net_device *dev = info->user_ptr[1]; > + struct wireless_dev *wdev = dev->ieee80211_ptr; > + const u8 *buf; > + size_t len; > + u8 *dest; > + u16 proto; > + bool noencrypt; > + int err; > + > + if (!wiphy_ext_feature_isset(&rdev->wiphy, > + NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211)) > + return -EOPNOTSUPP; > + > + if (!rdev->ops->tx_control_port) > + return -EOPNOTSUPP; I wonder if maybe we should accept this command only from the socket owner? Is there a use case for something else? Actually, then again, that's awkward because doing events and commands on the same socket doesn't mix all _that_ well. Perhaps we just need to fix that problem in libnl or something and be done with it ... johannes