|
@@ -126,6 +126,7 @@ EXPORT_SYMBOL(ieee802154_free_hw);
|
|
int ieee802154_register_hw(struct ieee802154_hw *hw)
|
|
int ieee802154_register_hw(struct ieee802154_hw *hw)
|
|
{
|
|
{
|
|
struct ieee802154_local *local = hw_to_local(hw);
|
|
struct ieee802154_local *local = hw_to_local(hw);
|
|
|
|
+ struct net_device *dev;
|
|
int rc = -ENOSYS;
|
|
int rc = -ENOSYS;
|
|
|
|
|
|
local->workqueue =
|
|
local->workqueue =
|
|
@@ -141,6 +142,17 @@ int ieee802154_register_hw(struct ieee802154_hw *hw)
|
|
if (rc < 0)
|
|
if (rc < 0)
|
|
goto out_wq;
|
|
goto out_wq;
|
|
|
|
|
|
|
|
+ rtnl_lock();
|
|
|
|
+
|
|
|
|
+ dev = ieee802154_if_add(local, "wpan%d", NULL, IEEE802154_DEV_WPAN);
|
|
|
|
+ if (IS_ERR(dev)) {
|
|
|
|
+ rtnl_unlock();
|
|
|
|
+ rc = PTR_ERR(dev);
|
|
|
|
+ goto out_wq;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ rtnl_unlock();
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
out_wq:
|
|
out_wq:
|