ieee802154: add support for current cca ed level
Subsystems (2)
Alexander Aring
maintainercover ieee802154: add support for current cca ed level
Hi,
this patch series based on ("ieee802154: add set transmit power support") and support handling for setting current phy cca ed level. This value should only be necessary if cca_mode is something with an energy detection level threshold and max frame retries is 0 or above, which do the CSMA-CA handling. Currently this value is printed always out, doesn't depend if it's really used or not. It's just represent the current register setting when phy supports this handling.
- Alex
Alexander Aring (2):
nl802154: add support for cca ed level info
nl802154: add support to set cca ed level
include/net/cfg802154.h | 1 + net/ieee802154/nl802154.c | 37 +++++++++++++++++++++++++++++++++++++ net/ieee802154/rdev-ops.h | 11 +++++++++++ net/ieee802154/trace.h | 15 +++++++++++++++ net/mac802154/cfg.c | 19 +++++++++++++++++++ 5 files changed, 83 insertions(+)
Signature · 1 line
2.4.1
Alexander Aring
maintainerPATCH 1/2 nl802154: add support for cca ed level info
This patch adds information about the current cca ed level when the phy is dumped over nl802154.
--- net/ieee802154/nl802154.c | 7 +++++++ 1 file changed, 7 insertions(+)
net/ieee802154/nl802154.c +7 -0
@@ -211,6 +211,7 @@ static const struct nla_policy nl802154_policy[NL802154_ATTR_MAX+1] = { [NL802154_ATTR_CCA_MODE] = { .type = NLA_U32, }, [NL802154_ATTR_CCA_OPT] = { .type = NLA_U32, }, + [NL802154_ATTR_CCA_ED_LEVEL] = { .type = NLA_S32, }, [NL802154_ATTR_SUPPORTED_CHANNEL] = { .type = NLA_U32, },
@@ -421,6 +422,12 @@ static int nl802154_send_wpan_phy(struct cfg802154_registered_device *rdev, goto nla_put_failure; } +if (rdev->wpan_phy.flags &WPAN_PHY_FLAG_CCA_ED_LEVEL ) { +if (nla_put_s32 (msg,NL802154_ATTR_CCA_ED_LEVEL , + rdev->wpan_phy.cca_ed_level)) + goto nla_put_failure; + } +if (nl802154_put_capabilities (msg, rdev)) goto nla_put_failure;
Signature · 1 line
2.4.1
Re: [PATCH bluetooth-next 1/2] nl802154: add support for cca ed level info
Quoted 23 lines · Alexander Aring
This patch adds information about the current cca ed level when the phy is dumped over nl802154.
Signed-off-by Alexander Aring <[email protected]>--- net/ieee802154/nl802154.c | 7 +++++++ 1 file changed, 7 insertions(+)net/ieee802154/nl802154.c +1
-0@@ -211,6 +211,7 @@ static const struct nla_policy nl802154_policy[NL802154_ATTR_MAX+1] = { [NL802154_ATTR_CCA_MODE] = { .type = NLA_U32, }, [NL802154_ATTR_CCA_OPT] = { .type = NLA_U32, }, + [NL802154_ATTR_CCA_ED_LEVEL] = { .type = NLA_S32, }, [NL802154_ATTR_SUPPORTED_CHANNEL] = { .type = NLA_U32, },@@ -421,6 +422,12 @@ static int nl802154_send_wpan_phy(struct cfg802154_registered_device *rdev, goto nla_put_failure; }
net/ieee802154/nl802154.c static int nl802154_send_wpan_phy(struct cfg802154_registered_device *rdev, · line 433
Quoted 10 lines
net/ieee802154/nl802154.c +6
-0+if (rdev->wpan_phy.flags &WPAN_PHY_FLAG_CCA_ED_LEVEL ) { +if (nla_put_s32 (msg,NL802154_ATTR_CCA_ED_LEVEL , + rdev->wpan_phy.cca_ed_level)) + goto nla_put_failure; + } +if (nl802154_put_capabilities (msg, rdev)) goto nla_put_failure;
Signature · 1 line
Varka Bhadram
Re: [PATCH bluetooth-next 1/2] nl802154: add support for cca ed level info
In reply to Alexander AringHi Alex,
Quoted 7 lines
This patch adds information about the current cca ed level when the phy is dumped over nl802154.
Signed-off-by Alexander Aring <[email protected]>---
net/ieee802154/nl802154.c| 7 +++++++1 file changed, 7 insertions(+)
patch has been applied to bluetooth-next tree.
Regards
Marcel
Alexander Aring
maintainerPATCH 2/2 nl802154: add support to set cca ed level
In reply to Alexander AringThis patch adds support for setting the current cca ed level value over nl802154.
--- include/net/cfg802154.h | 1 + net/ieee802154/nl802154.c | 30 ++++++++++++++++++++++++++++++ net/ieee802154/rdev-ops.h | 11 +++++++++++ net/ieee802154/trace.h | 15 +++++++++++++++ net/mac802154/cfg.c | 19 +++++++++++++++++++ 5 files changed, 76 insertions(+)
include/net/cfg802154.h +1 -0
@@ -44,6 +44,7 @@ struct cfg802154_ops {int (*set_channel)(struct wpan_phy *wpan_phy,u8 page,u8 channel);int (*set_cca_mode)(struct wpan_phy *wpan_phy,const struct wpan_phy_cca *cca); +int (*set_cca_ed_level)(struct wpan_phy *wpan_phy,s32 ed_level);int (*set_tx_power)(struct wpan_phy *wpan_phy,s32 power);int (*set_pan_id)(struct wpan_phy *wpan_phy,struct wpan_dev *wpan_dev,__le16 pan_id);
net/ieee802154/nl802154.c +30 -0
@@ -790,6 +790,28 @@ static int nl802154_set_cca_mode(struct sk_buff *skb, struct genl_info *info)return rdev_set_cca_mode (rdev, &cca); } +static int nl802154_set_cca_ed_level (struct sk_buff *skb,struct genl_info *info) +{ +struct cfg802154_registered_device *rdev = info->user_ptr[0 ]; +s32 ed_level; +int i; + +if (!(rdev->wpan_phy.flags &WPAN_PHY_FLAG_CCA_ED_LEVEL )) +return -EOPNOTSUPP ; + +if (!info->attrs[NL802154_ATTR_CCA_ED_LEVEL ]) +return -EINVAL ; + + ed_level =nla_get_s32 (info->attrs[NL802154_ATTR_CCA_ED_LEVEL ]); + +for (i =0 ; i < rdev->wpan_phy.supported.cca_ed_levels_size; i++) { +if (ed_level == rdev->wpan_phy.supported.cca_ed_levels[i]) +return rdev_set_cca_ed_level (rdev, ed_level); + } + +return -EINVAL ; +} +static int nl802154_set_tx_power (struct sk_buff *skb,struct genl_info *info) {struct cfg802154_registered_device *rdev = info->user_ptr[0 ];
@@ -1123,6 +1145,14 @@ static const struct genl_ops nl802154_ops[] = { NL802154_FLAG_NEED_RTNL, }, { + .cmd = NL802154_CMD_SET_CCA_ED_LEVEL, + .doit = nl802154_set_cca_ed_level, + .policy = nl802154_policy, + .flags = GENL_ADMIN_PERM, + .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | + NL802154_FLAG_NEED_RTNL, + }, + { .cmd = NL802154_CMD_SET_TX_POWER, .doit = nl802154_set_tx_power, .policy = nl802154_policy,
net/ieee802154/rdev-ops.h +11 -0
@@ -75,6 +75,17 @@ rdev_set_cca_mode(struct cfg802154_registered_device *rdev, }static inline int +rdev_set_cca_ed_level (struct cfg802154_registered_device *rdev,s32 ed_level) +{ +int ret; + +trace_802154_rdev_set_cca_ed_level (&rdev->wpan_phy, ed_level); + ret = rdev->ops->set_cca_ed_level (&rdev->wpan_phy, ed_level); +trace_802154_rdev_return_int (&rdev->wpan_phy, ret); +return ret; +} + +static inline int rdev_set_tx_power (struct cfg802154_registered_device *rdev,s32 power) {
net/ieee802154/trace.h +15 -0
@@ -123,6 +123,21 @@ TRACE_EVENT(802154_rdev_set_cca_mode, WPAN_CCA_PR_ARG) ); +TRACE_EVENT(802154_rdev_set_cca_ed_level, + TP_PROTO(struct wpan_phy *wpan_phy, s32 ed_level), +TP_ARGS (wpan_phy, ed_level), +TP_STRUCT__entry ( + WPAN_PHY_ENTRY +__field (s32, ed_level) + ), +TP_fast_assign ( + WPAN_PHY_ASSIGN; + __entry->ed_level = ed_level; + ), +TP_printk (WPAN_PHY_PR_FMT ", ed_level: %d" ,WPAN_PHY_PR_ARG , + __entry->ed_level) +); + DECLARE_EVENT_CLASS(802154_le16_template, TP_PROTO(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev, __le16 le16arg),
net/mac802154/cfg.c +19 -0
@@ -106,6 +106,24 @@ ieee802154_set_cca_mode(struct wpan_phy *wpan_phy, }static int +ieee802154_set_cca_ed_level (struct wpan_phy *wpan_phy,s32 ed_level) +{ +struct ieee802154_local *local =wpan_phy_priv (wpan_phy); +int ret; + +ASSERT_RTNL (); + +if (wpan_phy->cca_ed_level == ed_level) +return 0 ; + + ret =drv_set_cca_ed_level (local, ed_level); +if (!ret) + wpan_phy->cca_ed_level = ed_level; + +return ret; +} + +static int ieee802154_set_tx_power (struct wpan_phy *wpan_phy,s32 power) {struct ieee802154_local *local =wpan_phy_priv (wpan_phy);
@@ -213,6 +231,7 @@ const struct cfg802154_ops mac802154_config_ops = { .del_virtual_intf = ieee802154_del_iface, .set_channel = ieee802154_set_channel, .set_cca_mode = ieee802154_set_cca_mode, + .set_cca_ed_level = ieee802154_set_cca_ed_level, .set_tx_power = ieee802154_set_tx_power, .set_pan_id = ieee802154_set_pan_id, .set_short_addr = ieee802154_set_short_addr,
Signature · 1 line
2.4.1
Re: [PATCH bluetooth-next 2/2] nl802154: add support to set cca ed level
Quoted 4 lines · Alexander Aring
This patch adds support for setting the current cca ed level value over nl802154.
Signed-off-by Alexander Aring <[email protected]>
Signature · 1 line
Varka Bhadram
Re: [PATCH bluetooth-next 2/2] nl802154: add support to set cca ed level
In reply to Alexander AringHi Alex,
Quoted 11 lines
This patch adds support for setting the current cca ed level value over nl802154.
Signed-off-by Alexander Aring <[email protected]>---
include/net/cfg802154.h | 1 + net/ieee802154/nl802154.c | 30 ++++++++++++++++++++++++++++++ net/ieee802154/rdev-ops.h | 11 +++++++++++ net/ieee802154/trace.h | 15 +++++++++++++++ net/mac802154/cfg.c | 19 +++++++++++++++++++ 5 files changed, 76 insertions(+)
patch has been applied to bluetooth-next tree.
Regards
Marcel