aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2014-12-10 09:33:12 -0500
committerMarcel Holtmann <marcel@holtmann.org>2014-12-18 18:19:23 -0500
commit7fe9a3882bb37195c41ab125a0f2852398d2646a (patch)
tree2575090079228f59a93466eaf2d1b69524b97e8a /net
parentb40d6376ff470572e2fafb20ca06a68f2d7940cb (diff)
ieee802154: rework cca setting
The current cca setting handle is a driver specific call. We need to introduce some 802.15.4 specific layer and mapping 802.15.4 cca modes to driver specific ones inside the 802.15.4 driver. This patch will add such 802.15.4 layer and mapping the cca settings to driver specific ones. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net')
-rw-r--r--net/ieee802154/nl-mac.c4
-rw-r--r--net/ieee802154/nl802154.c2
-rw-r--r--net/ieee802154/sysfs.c2
-rw-r--r--net/mac802154/driver-ops.h5
-rw-r--r--net/mac802154/mac_cmd.c6
5 files changed, 10 insertions, 9 deletions
diff --git a/net/ieee802154/nl-mac.c b/net/ieee802154/nl-mac.c
index cd919493c976..3c902e9516fb 100644
--- a/net/ieee802154/nl-mac.c
+++ b/net/ieee802154/nl-mac.c
@@ -121,7 +121,7 @@ static int ieee802154_nl_fill_iface(struct sk_buff *msg, u32 portid,
121 params.transmit_power) || 121 params.transmit_power) ||
122 nla_put_u8(msg, IEEE802154_ATTR_LBT_ENABLED, params.lbt) || 122 nla_put_u8(msg, IEEE802154_ATTR_LBT_ENABLED, params.lbt) ||
123 nla_put_u8(msg, IEEE802154_ATTR_CCA_MODE, 123 nla_put_u8(msg, IEEE802154_ATTR_CCA_MODE,
124 params.cca_mode) || 124 params.cca.mode) ||
125 nla_put_s32(msg, IEEE802154_ATTR_CCA_ED_LEVEL, 125 nla_put_s32(msg, IEEE802154_ATTR_CCA_ED_LEVEL,
126 params.cca_ed_level) || 126 params.cca_ed_level) ||
127 nla_put_u8(msg, IEEE802154_ATTR_CSMA_RETRIES, 127 nla_put_u8(msg, IEEE802154_ATTR_CSMA_RETRIES,
@@ -516,7 +516,7 @@ int ieee802154_set_macparams(struct sk_buff *skb, struct genl_info *info)
516 params.lbt = nla_get_u8(info->attrs[IEEE802154_ATTR_LBT_ENABLED]); 516 params.lbt = nla_get_u8(info->attrs[IEEE802154_ATTR_LBT_ENABLED]);
517 517
518 if (info->attrs[IEEE802154_ATTR_CCA_MODE]) 518 if (info->attrs[IEEE802154_ATTR_CCA_MODE])
519 params.cca_mode = nla_get_u8(info->attrs[IEEE802154_ATTR_CCA_MODE]); 519 params.cca.mode = nla_get_u8(info->attrs[IEEE802154_ATTR_CCA_MODE]);
520 520
521 if (info->attrs[IEEE802154_ATTR_CCA_ED_LEVEL]) 521 if (info->attrs[IEEE802154_ATTR_CCA_ED_LEVEL])
522 params.cca_ed_level = nla_get_s32(info->attrs[IEEE802154_ATTR_CCA_ED_LEVEL]); 522 params.cca_ed_level = nla_get_s32(info->attrs[IEEE802154_ATTR_CCA_ED_LEVEL]);
diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c
index 889647744697..1efbe4250024 100644
--- a/net/ieee802154/nl802154.c
+++ b/net/ieee802154/nl802154.c
@@ -291,7 +291,7 @@ static int nl802154_send_wpan_phy(struct cfg802154_registered_device *rdev,
291 291
292 /* cca mode */ 292 /* cca mode */
293 if (nla_put_u8(msg, NL802154_ATTR_CCA_MODE, 293 if (nla_put_u8(msg, NL802154_ATTR_CCA_MODE,
294 rdev->wpan_phy.cca_mode)) 294 rdev->wpan_phy.cca.mode))
295 goto nla_put_failure; 295 goto nla_put_failure;
296 296
297 if (nla_put_s8(msg, NL802154_ATTR_TX_POWER, 297 if (nla_put_s8(msg, NL802154_ATTR_TX_POWER,
diff --git a/net/ieee802154/sysfs.c b/net/ieee802154/sysfs.c
index 1613b9c65dfa..dff55c2d87f3 100644
--- a/net/ieee802154/sysfs.c
+++ b/net/ieee802154/sysfs.c
@@ -68,7 +68,7 @@ static DEVICE_ATTR_RO(name)
68MASTER_SHOW(current_channel, "%d"); 68MASTER_SHOW(current_channel, "%d");
69MASTER_SHOW(current_page, "%d"); 69MASTER_SHOW(current_page, "%d");
70MASTER_SHOW(transmit_power, "%d +- 1 dB"); 70MASTER_SHOW(transmit_power, "%d +- 1 dB");
71MASTER_SHOW(cca_mode, "%d"); 71MASTER_SHOW_COMPLEX(cca_mode, "%d", phy->cca.mode);
72 72
73static ssize_t channels_supported_show(struct device *dev, 73static ssize_t channels_supported_show(struct device *dev,
74 struct device_attribute *attr, 74 struct device_attribute *attr,
diff --git a/net/mac802154/driver-ops.h b/net/mac802154/driver-ops.h
index f21e864613d0..98180a9fff4a 100644
--- a/net/mac802154/driver-ops.h
+++ b/net/mac802154/driver-ops.h
@@ -70,7 +70,8 @@ static inline int drv_set_tx_power(struct ieee802154_local *local, s8 dbm)
70 return local->ops->set_txpower(&local->hw, dbm); 70 return local->ops->set_txpower(&local->hw, dbm);
71} 71}
72 72
73static inline int drv_set_cca_mode(struct ieee802154_local *local, u8 cca_mode) 73static inline int drv_set_cca_mode(struct ieee802154_local *local,
74 const struct wpan_phy_cca *cca)
74{ 75{
75 might_sleep(); 76 might_sleep();
76 77
@@ -79,7 +80,7 @@ static inline int drv_set_cca_mode(struct ieee802154_local *local, u8 cca_mode)
79 return -EOPNOTSUPP; 80 return -EOPNOTSUPP;
80 } 81 }
81 82
82 return local->ops->set_cca_mode(&local->hw, cca_mode); 83 return local->ops->set_cca_mode(&local->hw, cca);
83} 84}
84 85
85static inline int drv_set_lbt_mode(struct ieee802154_local *local, bool mode) 86static inline int drv_set_lbt_mode(struct ieee802154_local *local, bool mode)
diff --git a/net/mac802154/mac_cmd.c b/net/mac802154/mac_cmd.c
index 6aacb1816889..bdccb4ecd30f 100644
--- a/net/mac802154/mac_cmd.c
+++ b/net/mac802154/mac_cmd.c
@@ -81,7 +81,7 @@ static int mac802154_set_mac_params(struct net_device *dev,
81 81
82 /* PHY */ 82 /* PHY */
83 wpan_dev->wpan_phy->transmit_power = params->transmit_power; 83 wpan_dev->wpan_phy->transmit_power = params->transmit_power;
84 wpan_dev->wpan_phy->cca_mode = params->cca_mode; 84 wpan_dev->wpan_phy->cca = params->cca;
85 wpan_dev->wpan_phy->cca_ed_level = params->cca_ed_level; 85 wpan_dev->wpan_phy->cca_ed_level = params->cca_ed_level;
86 86
87 /* MAC */ 87 /* MAC */
@@ -98,7 +98,7 @@ static int mac802154_set_mac_params(struct net_device *dev,
98 } 98 }
99 99
100 if (local->hw.flags & IEEE802154_HW_CCA_MODE) { 100 if (local->hw.flags & IEEE802154_HW_CCA_MODE) {
101 ret = drv_set_cca_mode(local, params->cca_mode); 101 ret = drv_set_cca_mode(local, &params->cca);
102 if (ret < 0) 102 if (ret < 0)
103 return ret; 103 return ret;
104 } 104 }
@@ -122,7 +122,7 @@ static void mac802154_get_mac_params(struct net_device *dev,
122 122
123 /* PHY */ 123 /* PHY */
124 params->transmit_power = wpan_dev->wpan_phy->transmit_power; 124 params->transmit_power = wpan_dev->wpan_phy->transmit_power;
125 params->cca_mode = wpan_dev->wpan_phy->cca_mode; 125 params->cca = wpan_dev->wpan_phy->cca;
126 params->cca_ed_level = wpan_dev->wpan_phy->cca_ed_level; 126 params->cca_ed_level = wpan_dev->wpan_phy->cca_ed_level;
127 127
128 /* MAC */ 128 /* MAC */