mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
ieee802154: avoid deprecated .ndo_do_ioctl callback
The ieee802154 socket implementation is the last remaining caller of the netdevice ioctl callback. In order to completely remove this, add a custom pointer to the existing wpan_dev specific operations structure. Since that structure is currently only used to wrap the 'create' header operation, adjust the naming slightly to make this more generic. It would be a good idea to adjust the calling conventions and split the get/set operations into separate functions, but that can be a follow-up cleanup. For the moment, I kept the actual changes to a minimum to avoid regressions. Link: https://lore.kernel.org/all/20231011140225.253106-2-arnd@kernel.org/ Signed-off-by: Arnd Bergmann <arnd@arndb.de> Link: https://patch.msgid.link/20260915211538.1519815-1-arnd@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
c440250e9c
commit
52fb7cca01
|
|
@ -458,15 +458,16 @@ struct ieee802154_llsec_device_key {
|
|||
u32 frame_counter;
|
||||
};
|
||||
|
||||
struct wpan_dev_header_ops {
|
||||
struct wpan_dev_ops {
|
||||
/* TODO create callback currently assumes ieee802154_mac_cb inside
|
||||
* skb->cb. This should be changed to give these information as
|
||||
* parameter.
|
||||
*/
|
||||
int (*create)(struct sk_buff *skb, struct net_device *dev,
|
||||
int (*header_create)(struct sk_buff *skb, struct net_device *dev,
|
||||
const struct ieee802154_addr *daddr,
|
||||
const struct ieee802154_addr *saddr,
|
||||
unsigned int len);
|
||||
int (*ioctl)(struct net_device *dev, struct ifreq *ifr, int cmd);
|
||||
};
|
||||
|
||||
struct wpan_dev {
|
||||
|
|
@ -477,7 +478,7 @@ struct wpan_dev {
|
|||
struct list_head list;
|
||||
struct net_device *netdev;
|
||||
|
||||
const struct wpan_dev_header_ops *header_ops;
|
||||
const struct wpan_dev_ops *ops;
|
||||
|
||||
/* lowpan interface, set when the wpan_dev belongs to one lowpan_dev */
|
||||
struct net_device *lowpan_dev;
|
||||
|
|
@ -523,7 +524,7 @@ wpan_dev_hard_header(struct sk_buff *skb, struct net_device *dev,
|
|||
{
|
||||
struct wpan_dev *wpan_dev = dev->ieee802154_ptr;
|
||||
|
||||
return wpan_dev->header_ops->create(skb, dev, daddr, saddr, len);
|
||||
return wpan_dev->ops->header_create(skb, dev, daddr, saddr, len);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -139,8 +139,9 @@ static int ieee802154_dev_ioctl(struct sock *sk, struct ifreq __user *arg,
|
|||
if (!dev)
|
||||
return -ENODEV;
|
||||
|
||||
if (dev->type == ARPHRD_IEEE802154 && dev->netdev_ops->ndo_do_ioctl)
|
||||
ret = dev->netdev_ops->ndo_do_ioctl(dev, &ifr, cmd);
|
||||
if (dev->type == ARPHRD_IEEE802154 && dev->ieee802154_ptr &&
|
||||
dev->ieee802154_ptr->ops)
|
||||
ret = dev->ieee802154_ptr->ops->ioctl(dev, &ifr, cmd);
|
||||
|
||||
if (!ret && put_user_ifreq(&ifr, arg))
|
||||
ret = -EFAULT;
|
||||
|
|
|
|||
|
|
@ -406,8 +406,9 @@ static int ieee802154_header_create(struct sk_buff *skb,
|
|||
return hlen;
|
||||
}
|
||||
|
||||
static const struct wpan_dev_header_ops ieee802154_header_ops = {
|
||||
.create = ieee802154_header_create,
|
||||
static const struct wpan_dev_ops ieee802154_ops = {
|
||||
.header_create = ieee802154_header_create,
|
||||
.ioctl = mac802154_wpan_ioctl,
|
||||
};
|
||||
|
||||
/* This header create functionality assumes a 8 byte array for
|
||||
|
|
@ -497,7 +498,6 @@ static const struct net_device_ops mac802154_wpan_ops = {
|
|||
.ndo_open = mac802154_wpan_open,
|
||||
.ndo_stop = mac802154_slave_close,
|
||||
.ndo_start_xmit = ieee802154_subif_start_xmit,
|
||||
.ndo_do_ioctl = mac802154_wpan_ioctl,
|
||||
.ndo_set_mac_address = mac802154_wpan_mac_addr,
|
||||
};
|
||||
|
||||
|
|
@ -583,7 +583,7 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata,
|
|||
sdata->dev->netdev_ops = &mac802154_wpan_ops;
|
||||
sdata->dev->ml_priv = &mac802154_mlme_wpan;
|
||||
sdata->iface_default_filtering = IEEE802154_FILTERING_4_FRAME_FIELDS;
|
||||
wpan_dev->header_ops = &ieee802154_header_ops;
|
||||
wpan_dev->ops = &ieee802154_ops;
|
||||
|
||||
mutex_init(&sdata->sec_mtx);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user