Merge tag 'ieee802154-for-net-next-2024-03-07' of git://git.kernel.org/pub/scm/linux/kernel/git/wpan/wpan-next
Stefan Schmidt says: ==================== pull-request: ieee802154-next 2024-03-07 Various cross tree patches for ieee802154v drivers and a resource leak fix for ieee802154 llsec. Andy Shevchenko changed GPIO header usage for at86rf230 and mcr20a to only include needed headers. Bo Liu converted the at86rf230, mcr20a and mrf24j40 driver regmap support to use the maple tree register cache. Fedor Pchelkin fixed a resource leak in the llsec key deletion path. Ricardo B. Marliere made wpan_phy_class const. Tejun Heo removed WQ_UNBOUND from a workqueue call in ca8210. * tag 'ieee802154-for-net-next-2024-03-07' of git://git.kernel.org/pub/scm/linux/kernel/git/wpan/wpan-next: ieee802154: cfg802154: make wpan_phy_class constant ieee802154: mcr20a: Remove unused of_gpio.h ieee802154: at86rf230: Replace of_gpio.h by proper one mac802154: fix llsec key resources release in mac802154_llsec_key_del ieee802154: ca8210: Drop spurious WQ_UNBOUND from alloc_ordered_workqueue() call net: ieee802154: mrf24j40: convert to use maple tree register cache net: ieee802154: mcr20a: convert to use maple tree register cache net: ieee802154: at86rf230: convert to use maple tree register cache ==================== Link: https://lore.kernel.org/r/20240307195105.292085-1-stefan@datenfreihafen.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
2612b9f10c
|
@ -11,17 +11,16 @@
|
|||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/hrtimer.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/ieee802154.h>
|
||||
|
||||
#include <net/mac802154.h>
|
||||
|
@ -316,7 +315,7 @@ static const struct regmap_config at86rf230_regmap_spi_config = {
|
|||
.val_bits = 8,
|
||||
.write_flag_mask = CMD_REG | CMD_WRITE,
|
||||
.read_flag_mask = CMD_REG,
|
||||
.cache_type = REGCACHE_RBTREE,
|
||||
.cache_type = REGCACHE_MAPLE,
|
||||
.max_register = AT86RF2XX_NUMREGS,
|
||||
.writeable_reg = at86rf230_reg_writeable,
|
||||
.readable_reg = at86rf230_reg_readable,
|
||||
|
|
|
@ -2857,19 +2857,13 @@ static int ca8210_interrupt_init(struct spi_device *spi)
|
|||
*/
|
||||
static int ca8210_dev_com_init(struct ca8210_priv *priv)
|
||||
{
|
||||
priv->mlme_workqueue = alloc_ordered_workqueue(
|
||||
"MLME work queue",
|
||||
WQ_UNBOUND
|
||||
);
|
||||
priv->mlme_workqueue = alloc_ordered_workqueue("MLME work queue", 0);
|
||||
if (!priv->mlme_workqueue) {
|
||||
dev_crit(&priv->spi->dev, "alloc of mlme_workqueue failed!\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
priv->irq_workqueue = alloc_ordered_workqueue(
|
||||
"ca8210 irq worker",
|
||||
WQ_UNBOUND
|
||||
);
|
||||
priv->irq_workqueue = alloc_ordered_workqueue("ca8210 irq worker", 0);
|
||||
if (!priv->irq_workqueue) {
|
||||
dev_crit(&priv->spi->dev, "alloc of irq_workqueue failed!\n");
|
||||
destroy_workqueue(priv->mlme_workqueue);
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/ieee802154.h>
|
||||
#include <linux/debugfs.h>
|
||||
|
@ -251,7 +250,7 @@ static const struct regmap_config mcr20a_dar_regmap = {
|
|||
.val_bits = 8,
|
||||
.write_flag_mask = REGISTER_ACCESS | REGISTER_WRITE,
|
||||
.read_flag_mask = REGISTER_ACCESS | REGISTER_READ,
|
||||
.cache_type = REGCACHE_RBTREE,
|
||||
.cache_type = REGCACHE_MAPLE,
|
||||
.writeable_reg = mcr20a_dar_writeable,
|
||||
.readable_reg = mcr20a_dar_readable,
|
||||
.volatile_reg = mcr20a_dar_volatile,
|
||||
|
@ -387,7 +386,7 @@ static const struct regmap_config mcr20a_iar_regmap = {
|
|||
.val_bits = 8,
|
||||
.write_flag_mask = REGISTER_ACCESS | REGISTER_WRITE | IAR_INDEX,
|
||||
.read_flag_mask = REGISTER_ACCESS | REGISTER_READ | IAR_INDEX,
|
||||
.cache_type = REGCACHE_RBTREE,
|
||||
.cache_type = REGCACHE_MAPLE,
|
||||
.writeable_reg = mcr20a_iar_writeable,
|
||||
.readable_reg = mcr20a_iar_readable,
|
||||
.volatile_reg = mcr20a_iar_volatile,
|
||||
|
|
|
@ -388,7 +388,7 @@ static const struct regmap_config mrf24j40_short_regmap = {
|
|||
.pad_bits = 1,
|
||||
.write_flag_mask = MRF24J40_SHORT_WRITE,
|
||||
.read_flag_mask = MRF24J40_SHORT_READ,
|
||||
.cache_type = REGCACHE_RBTREE,
|
||||
.cache_type = REGCACHE_MAPLE,
|
||||
.max_register = MRF24J40_SHORT_NUMREGS,
|
||||
.writeable_reg = mrf24j40_short_reg_writeable,
|
||||
.readable_reg = mrf24j40_short_reg_readable,
|
||||
|
@ -495,7 +495,7 @@ static const struct regmap_config mrf24j40_long_regmap = {
|
|||
.pad_bits = 5,
|
||||
.write_flag_mask = MRF24J40_LONG_ACCESS,
|
||||
.read_flag_mask = MRF24J40_LONG_ACCESS,
|
||||
.cache_type = REGCACHE_RBTREE,
|
||||
.cache_type = REGCACHE_MAPLE,
|
||||
.max_register = MRF24J40_LONG_NUMREGS,
|
||||
.writeable_reg = mrf24j40_long_reg_writeable,
|
||||
.readable_reg = mrf24j40_long_reg_readable,
|
||||
|
|
|
@ -401,6 +401,7 @@ struct ieee802154_llsec_key {
|
|||
|
||||
struct ieee802154_llsec_key_entry {
|
||||
struct list_head list;
|
||||
struct rcu_head rcu;
|
||||
|
||||
struct ieee802154_llsec_key_id id;
|
||||
struct ieee802154_llsec_key *key;
|
||||
|
|
|
@ -93,7 +93,7 @@ static SIMPLE_DEV_PM_OPS(wpan_phy_pm_ops, wpan_phy_suspend, wpan_phy_resume);
|
|||
#define WPAN_PHY_PM_OPS NULL
|
||||
#endif
|
||||
|
||||
struct class wpan_phy_class = {
|
||||
const struct class wpan_phy_class = {
|
||||
.name = "ieee802154",
|
||||
.dev_release = wpan_phy_release,
|
||||
.dev_groups = pmib_groups,
|
||||
|
|
|
@ -5,6 +5,6 @@
|
|||
int wpan_phy_sysfs_init(void);
|
||||
void wpan_phy_sysfs_exit(void);
|
||||
|
||||
extern struct class wpan_phy_class;
|
||||
extern const struct class wpan_phy_class;
|
||||
|
||||
#endif /* __IEEE802154_SYSFS_H */
|
||||
|
|
|
@ -265,19 +265,27 @@ fail:
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
static void mac802154_llsec_key_del_rcu(struct rcu_head *rcu)
|
||||
{
|
||||
struct ieee802154_llsec_key_entry *pos;
|
||||
struct mac802154_llsec_key *mkey;
|
||||
|
||||
pos = container_of(rcu, struct ieee802154_llsec_key_entry, rcu);
|
||||
mkey = container_of(pos->key, struct mac802154_llsec_key, key);
|
||||
|
||||
llsec_key_put(mkey);
|
||||
kfree_sensitive(pos);
|
||||
}
|
||||
|
||||
int mac802154_llsec_key_del(struct mac802154_llsec *sec,
|
||||
const struct ieee802154_llsec_key_id *key)
|
||||
{
|
||||
struct ieee802154_llsec_key_entry *pos;
|
||||
|
||||
list_for_each_entry(pos, &sec->table.keys, list) {
|
||||
struct mac802154_llsec_key *mkey;
|
||||
|
||||
mkey = container_of(pos->key, struct mac802154_llsec_key, key);
|
||||
|
||||
if (llsec_key_id_equal(&pos->id, key)) {
|
||||
list_del_rcu(&pos->list);
|
||||
llsec_key_put(mkey);
|
||||
call_rcu(&pos->rcu, mac802154_llsec_key_del_rcu);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue