提交 bd28a11f 编写于 作者: A Alexander Aring 提交者: Marcel Holtmann

ieee802154: remove mlme get_phy callback

This patch removes the get_phy callback from mlme ops structure. Instead
we doing a dereference via ieee802154_ptr dev pointer. For backwards
compatibility we need to run get_device after dereference wpan_phy via
ieee802154_ptr.
Signed-off-by: NAlexander Aring <alex.aring@gmail.com>
Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
上级 d5ae67ba
...@@ -423,8 +423,6 @@ struct ieee802154_mlme_ops { ...@@ -423,8 +423,6 @@ struct ieee802154_mlme_ops {
/* The fields below are required. */ /* The fields below are required. */
struct wpan_phy *(*get_phy)(const struct net_device *dev);
/* /*
* FIXME: these should become the part of PIB/MIB interface. * FIXME: these should become the part of PIB/MIB interface.
* However we still don't have IB interface of any kind * However we still don't have IB interface of any kind
...@@ -434,16 +432,6 @@ struct ieee802154_mlme_ops { ...@@ -434,16 +432,6 @@ struct ieee802154_mlme_ops {
u8 (*get_dsn)(const struct net_device *dev); u8 (*get_dsn)(const struct net_device *dev);
}; };
/* The IEEE 802.15.4 standard defines 2 type of the devices:
* - FFD - full functionality device
* - RFD - reduce functionality device
*
* So 2 sets of mlme operations are needed
*/
struct ieee802154_reduced_mlme_ops {
struct wpan_phy *(*get_phy)(const struct net_device *dev);
};
static inline struct ieee802154_mlme_ops * static inline struct ieee802154_mlme_ops *
ieee802154_mlme_ops(const struct net_device *dev) ieee802154_mlme_ops(const struct net_device *dev)
{ {
......
...@@ -407,13 +407,6 @@ static netdev_tx_t lowpan_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -407,13 +407,6 @@ static netdev_tx_t lowpan_xmit(struct sk_buff *skb, struct net_device *dev)
} }
} }
static struct wpan_phy *lowpan_get_phy(const struct net_device *dev)
{
struct net_device *real_dev = lowpan_dev_info(dev)->real_dev;
return ieee802154_mlme_ops(real_dev)->get_phy(real_dev);
}
static __le16 lowpan_get_pan_id(const struct net_device *dev) static __le16 lowpan_get_pan_id(const struct net_device *dev)
{ {
struct net_device *real_dev = lowpan_dev_info(dev)->real_dev; struct net_device *real_dev = lowpan_dev_info(dev)->real_dev;
...@@ -465,7 +458,6 @@ static const struct net_device_ops lowpan_netdev_ops = { ...@@ -465,7 +458,6 @@ static const struct net_device_ops lowpan_netdev_ops = {
static struct ieee802154_mlme_ops lowpan_mlme = { static struct ieee802154_mlme_ops lowpan_mlme = {
.get_pan_id = lowpan_get_pan_id, .get_pan_id = lowpan_get_pan_id,
.get_phy = lowpan_get_phy,
.get_short_addr = lowpan_get_short_addr, .get_short_addr = lowpan_get_short_addr,
.get_dsn = lowpan_get_dsn, .get_dsn = lowpan_get_dsn,
}; };
......
...@@ -94,8 +94,9 @@ static int ieee802154_nl_fill_iface(struct sk_buff *msg, u32 portid, ...@@ -94,8 +94,9 @@ static int ieee802154_nl_fill_iface(struct sk_buff *msg, u32 portid,
goto out; goto out;
ops = ieee802154_mlme_ops(dev); ops = ieee802154_mlme_ops(dev);
phy = ops->get_phy(dev); phy = dev->ieee802154_ptr->wpan_phy;
BUG_ON(!phy); BUG_ON(!phy);
get_device(&phy->dev);
short_addr = ops->get_short_addr(dev); short_addr = ops->get_short_addr(dev);
pan_id = ops->get_pan_id(dev); pan_id = ops->get_pan_id(dev);
...@@ -493,7 +494,8 @@ int ieee802154_set_macparams(struct sk_buff *skb, struct genl_info *info) ...@@ -493,7 +494,8 @@ int ieee802154_set_macparams(struct sk_buff *skb, struct genl_info *info)
!info->attrs[IEEE802154_ATTR_FRAME_RETRIES]) !info->attrs[IEEE802154_ATTR_FRAME_RETRIES])
goto out; goto out;
phy = ops->get_phy(dev); phy = dev->ieee802154_ptr->wpan_phy;
get_device(&phy->dev);
ops->get_mac_params(dev, &params); ops->get_mac_params(dev, &params);
......
...@@ -287,8 +287,9 @@ int ieee802154_del_iface(struct sk_buff *skb, struct genl_info *info) ...@@ -287,8 +287,9 @@ int ieee802154_del_iface(struct sk_buff *skb, struct genl_info *info)
if (!dev) if (!dev)
return -ENODEV; return -ENODEV;
phy = ieee802154_mlme_ops(dev)->get_phy(dev); phy = dev->ieee802154_ptr->wpan_phy;
BUG_ON(!phy); BUG_ON(!phy);
get_device(&phy->dev);
rc = -EINVAL; rc = -EINVAL;
/* phy name is optional, but should be checked if it's given */ /* phy name is optional, but should be checked if it's given */
......
...@@ -428,7 +428,6 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata, int type) ...@@ -428,7 +428,6 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata, int type)
case IEEE802154_DEV_MONITOR: case IEEE802154_DEV_MONITOR:
sdata->dev->destructor = free_netdev; sdata->dev->destructor = free_netdev;
sdata->dev->netdev_ops = &mac802154_monitor_ops; sdata->dev->netdev_ops = &mac802154_monitor_ops;
sdata->dev->ml_priv = &mac802154_mlme_reduced;
sdata->promisuous_mode = true; sdata->promisuous_mode = true;
break; break;
default: default:
......
...@@ -67,15 +67,6 @@ static int mac802154_mlme_start_req(struct net_device *dev, ...@@ -67,15 +67,6 @@ static int mac802154_mlme_start_req(struct net_device *dev,
return rc; return rc;
} }
static struct wpan_phy *mac802154_get_phy(const struct net_device *dev)
{
struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
BUG_ON(dev->type != ARPHRD_IEEE802154);
return to_phy(get_device(&sdata->local->phy->dev));
}
static int mac802154_set_mac_params(struct net_device *dev, static int mac802154_set_mac_params(struct net_device *dev,
const struct ieee802154_mac_params *params) const struct ieee802154_mac_params *params)
{ {
...@@ -134,12 +125,7 @@ static struct ieee802154_llsec_ops mac802154_llsec_ops = { ...@@ -134,12 +125,7 @@ static struct ieee802154_llsec_ops mac802154_llsec_ops = {
.unlock_table = mac802154_unlock_table, .unlock_table = mac802154_unlock_table,
}; };
struct ieee802154_reduced_mlme_ops mac802154_mlme_reduced = {
.get_phy = mac802154_get_phy,
};
struct ieee802154_mlme_ops mac802154_mlme_wpan = { struct ieee802154_mlme_ops mac802154_mlme_wpan = {
.get_phy = mac802154_get_phy,
.start_req = mac802154_mlme_start_req, .start_req = mac802154_mlme_start_req,
.get_pan_id = mac802154_dev_get_pan_id, .get_pan_id = mac802154_dev_get_pan_id,
.get_short_addr = mac802154_dev_get_short_addr, .get_short_addr = mac802154_dev_get_short_addr,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册