On Wed, Jul 28, 2010 at 6:10 PM, Dmitry Eremin-Solenikov <[email protected]> wrote: > On the one hand this is correct patch and fixes the problem. OTOH I > would like to > restrain from monitor devices (and later Freescale SMAC) providing full MLME > access (it's not logical for monitor devices and completely bogus and strange > for SMAC). So for now I'd like to NAK this patch. I'll think about this for > some > days. If I can't come with better solution, I'll apply this patch temporary. > > My current ideas are: > > 1) to select some kind of 'common MLME routines', make ml_priv point > to that struct and make ieee802154_mlme_ops extend that common_mlme > > 2) Make PHY argument of DEL_IFACE required (maybe for non-wpan devices).
Make another MLME struct that only has the DEL_IFACE routine set? > > 3) As in wifi stack, pass some more info about netdev to core layers (e.g. > wifi core layers bear info about netdev -> phy relationship). > > What do you think? > > On Wed, Jul 28, 2010 at 10:25 PM, Jon Smirl <[email protected]> wrote: >> Fix a segfault when deleting the monitor interface >> >> Signed-off-by: Jon Smirl <[email protected]> >> --- >> net/mac802154/main.c | 2 +- >> net/mac802154/mib.c | 2 +- >> net/mac802154/monitor.c | 1 + >> 3 files changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/net/mac802154/main.c b/net/mac802154/main.c >> index 7d97756..f5b3cb3 100644 >> --- a/net/mac802154/main.c >> +++ b/net/mac802154/main.c >> @@ -99,7 +99,7 @@ static void ieee802154_del_iface(struct wpan_phy *phy, >> struct ieee802154_sub_if_data *sdata; >> ASSERT_RTNL(); >> >> - BUG_ON(dev->type != ARPHRD_IEEE802154); >> + BUG_ON((dev->type != ARPHRD_IEEE802154) && (dev->type != >> ARPHRD_IEEE802154_MONITOR)); >> >> sdata = netdev_priv(dev); >> >> diff --git a/net/mac802154/mib.c b/net/mac802154/mib.c >> index 73bf62f..6fd17fd 100644 >> --- a/net/mac802154/mib.c >> +++ b/net/mac802154/mib.c >> @@ -250,7 +250,7 @@ struct ieee802154_priv *ieee802154_slave_get_priv(struct >> net_device *dev) >> struct wpan_phy *ieee802154_get_phy(const struct net_device *dev) >> { >> struct ieee802154_sub_if_data *priv = netdev_priv(dev); >> - BUG_ON(dev->type != ARPHRD_IEEE802154); >> + BUG_ON((dev->type != ARPHRD_IEEE802154) && (dev->type != >> ARPHRD_IEEE802154_MONITOR)); >> >> return to_phy(get_device(&priv->hw->phy->dev)); >> } >> diff --git a/net/mac802154/monitor.c b/net/mac802154/monitor.c >> index 68101d2..98710da 100644 >> --- a/net/mac802154/monitor.c >> +++ b/net/mac802154/monitor.c >> @@ -99,6 +99,7 @@ void ieee802154_monitor_setup(struct net_device *dev) >> >> dev->destructor = free_netdev; >> dev->netdev_ops = &ieee802154_monitor_ops; >> + dev->ml_priv = &mac802154_mlme; >> >> priv = netdev_priv(dev); >> priv->type = IEEE802154_DEV_MONITOR; >> >> >> ------------------------------------------------------------------------------ >> The Palm PDK Hot Apps Program offers developers who use the >> Plug-In Development Kit to bring their C/C++ apps to Palm for a share >> of $1 Million in cash or HP Products. Visit us here for more details: >> http://p.sf.net/sfu/dev2dev-palm >> _______________________________________________ >> Linux-zigbee-devel mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel >> > > > > -- > With best wishes > Dmitry > -- Jon Smirl [email protected] ------------------------------------------------------------------------------ The Palm PDK Hot Apps Program offers developers who use the Plug-In Development Kit to bring their C/C++ apps to Palm for a share of $1 Million in cash or HP Products. Visit us here for more details: http://p.sf.net/sfu/dev2dev-palm _______________________________________________ Linux-zigbee-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel
