All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback
@ 2016-04-19 14:28 Stefan Schmidt
  2016-04-19 14:28 ` [PATCH bluetooth-next 2/4] ieee802154: atusb: implement .set_cca_ed_level " Stefan Schmidt
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Stefan Schmidt @ 2016-04-19 14:28 UTC (permalink / raw)
  To: linux-wpan; +Cc: Alexander Aring, Stefan Schmidt

Catching up with the stack here and implement CSMA parameter setting.

Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
---
 drivers/net/ieee802154/atusb.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c
index b1cd865..2d8de9f 100644
--- a/drivers/net/ieee802154/atusb.c
+++ b/drivers/net/ieee802154/atusb.c
@@ -473,6 +473,23 @@ atusb_set_txpower(struct ieee802154_hw *hw, s32 mbm)
 }
 
 static int
+atusb_set_csma_params(struct ieee802154_hw *hw, u8 min_be, u8 max_be, u8 retries)
+{
+	struct atusb *atusb = hw->priv;
+	int ret;
+
+	ret = atusb_write_subreg(atusb, SR_MIN_BE, min_be);
+	if (ret)
+		return ret;
+
+	ret = atusb_write_subreg(atusb, SR_MAX_BE, max_be);
+	if (ret)
+		return ret;
+
+	return atusb_write_subreg(atusb, SR_MAX_CSMA_RETRIES, retries);
+}
+
+static int
 atusb_set_promiscuous_mode(struct ieee802154_hw *hw, const bool on)
 {
 	struct atusb *atusb = hw->priv;
@@ -508,6 +525,7 @@ static struct ieee802154_ops atusb_ops = {
 	.stop			= atusb_stop,
 	.set_hw_addr_filt	= atusb_set_hw_addr_filt,
 	.set_txpower		= atusb_set_txpower,
+	.set_csma_params	= atusb_set_csma_params,
 	.set_promiscuous_mode	= atusb_set_promiscuous_mode,
 };
 
@@ -636,7 +654,7 @@ static int atusb_probe(struct usb_interface *interface,
 
 	hw->parent = &usb_dev->dev;
 	hw->flags = IEEE802154_HW_TX_OMIT_CKSUM | IEEE802154_HW_AFILT |
-		    IEEE802154_HW_PROMISCUOUS;
+		    IEEE802154_HW_PROMISCUOUS | IEEE802154_HW_CSMA_PARAMS;
 
 	hw->phy->flags = WPAN_PHY_FLAG_TXPOWER;
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH bluetooth-next 2/4] ieee802154: atusb: implement .set_cca_ed_level ops callback
  2016-04-19 14:28 [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Stefan Schmidt
@ 2016-04-19 14:28 ` Stefan Schmidt
  2016-04-19 14:28 ` [PATCH bluetooth-next 3/4] ieee802154: atusb: implement .set_cca_mode " Stefan Schmidt
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Stefan Schmidt @ 2016-04-19 14:28 UTC (permalink / raw)
  To: linux-wpan; +Cc: Alexander Aring, Stefan Schmidt

Catching up with the stack here and implement CCA ED level setting.

Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
---
 drivers/net/ieee802154/atusb.c | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c
index 2d8de9f..94f8457 100644
--- a/drivers/net/ieee802154/atusb.c
+++ b/drivers/net/ieee802154/atusb.c
@@ -472,6 +472,26 @@ atusb_set_txpower(struct ieee802154_hw *hw, s32 mbm)
 	return -EINVAL;
 }
 
+#define ATUSB_MAX_ED_LEVELS 0xF
+static const s32 atusb_ed_levels[ATUSB_MAX_ED_LEVELS + 1] = {
+	-9100, -8900, -8700, -8500, -8300, -8100, -7900, -7700, -7500, -7300,
+	-7100, -6900, -6700, -6500, -6300, -6100,
+};
+
+static int
+atusb_set_cca_ed_level(struct ieee802154_hw *hw, s32 mbm)
+{
+	struct atusb *atusb = hw->priv;
+	u32 i;
+
+	for (i = 0; i < hw->phy->supported.cca_ed_levels_size; i++) {
+		if (hw->phy->supported.cca_ed_levels[i] == mbm)
+			return atusb_write_subreg(atusb, SR_CCA_ED_THRES, i);
+	}
+
+	return -EINVAL;
+}
+
 static int
 atusb_set_csma_params(struct ieee802154_hw *hw, u8 min_be, u8 max_be, u8 retries)
 {
@@ -525,6 +545,7 @@ static struct ieee802154_ops atusb_ops = {
 	.stop			= atusb_stop,
 	.set_hw_addr_filt	= atusb_set_hw_addr_filt,
 	.set_txpower		= atusb_set_txpower,
+	.set_cca_ed_level	= atusb_set_cca_ed_level,
 	.set_csma_params	= atusb_set_csma_params,
 	.set_promiscuous_mode	= atusb_set_promiscuous_mode,
 };
@@ -656,7 +677,10 @@ static int atusb_probe(struct usb_interface *interface,
 	hw->flags = IEEE802154_HW_TX_OMIT_CKSUM | IEEE802154_HW_AFILT |
 		    IEEE802154_HW_PROMISCUOUS | IEEE802154_HW_CSMA_PARAMS;
 
-	hw->phy->flags = WPAN_PHY_FLAG_TXPOWER;
+	hw->phy->flags = WPAN_PHY_FLAG_TXPOWER | WPAN_PHY_FLAG_CCA_ED_LEVEL;
+
+	hw->phy->supported.cca_ed_levels = atusb_ed_levels;
+	hw->phy->supported.cca_ed_levels_size = ARRAY_SIZE(atusb_ed_levels);
 
 	hw->phy->current_page = 0;
 	hw->phy->current_channel = 11;	/* reset default */
@@ -665,6 +689,7 @@ static int atusb_probe(struct usb_interface *interface,
 	hw->phy->supported.tx_powers_size = ARRAY_SIZE(atusb_powers);
 	hw->phy->transmit_power = hw->phy->supported.tx_powers[0];
 	ieee802154_random_extended_addr(&hw->phy->perm_extended_addr);
+	hw->phy->cca_ed_level = hw->phy->supported.cca_ed_levels[7];
 
 	atusb_command(atusb, ATUSB_RF_RESET, 0);
 	atusb_get_and_show_chip(atusb);
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH bluetooth-next 3/4] ieee802154: atusb: implement .set_cca_mode ops callback
  2016-04-19 14:28 [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Stefan Schmidt
  2016-04-19 14:28 ` [PATCH bluetooth-next 2/4] ieee802154: atusb: implement .set_cca_ed_level " Stefan Schmidt
@ 2016-04-19 14:28 ` Stefan Schmidt
  2016-04-19 14:28 ` [PATCH bluetooth-next 4/4] ieee802154: atusb: update my copyright years for this driver Stefan Schmidt
  2016-04-20 18:55 ` [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Alexander Aring
  3 siblings, 0 replies; 8+ messages in thread
From: Stefan Schmidt @ 2016-04-19 14:28 UTC (permalink / raw)
  To: linux-wpan; +Cc: Alexander Aring, Stefan Schmidt

Catching up with the stack here and implement CCA mode setting.

Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
---
 drivers/net/ieee802154/atusb.c | 44 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c
index 94f8457..72128b3 100644
--- a/drivers/net/ieee802154/atusb.c
+++ b/drivers/net/ieee802154/atusb.c
@@ -479,6 +479,39 @@ static const s32 atusb_ed_levels[ATUSB_MAX_ED_LEVELS + 1] = {
 };
 
 static int
+atusb_set_cca_mode(struct ieee802154_hw *hw, const struct wpan_phy_cca *cca)
+{
+	struct atusb *atusb = hw->priv;
+	u8 val;
+
+	/* mapping 802.15.4 to driver spec */
+	switch (cca->mode) {
+	case NL802154_CCA_ENERGY:
+		val = 1;
+		break;
+	case NL802154_CCA_CARRIER:
+		val = 2;
+		break;
+	case NL802154_CCA_ENERGY_CARRIER:
+		switch (cca->opt) {
+		case NL802154_CCA_OPT_ENERGY_CARRIER_AND:
+			val = 3;
+			break;
+		case NL802154_CCA_OPT_ENERGY_CARRIER_OR:
+			val = 0;
+			break;
+		default:
+			return -EINVAL;
+		}
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	return atusb_write_subreg(atusb, SR_CCA_MODE, val);
+}
+
+static int
 atusb_set_cca_ed_level(struct ieee802154_hw *hw, s32 mbm)
 {
 	struct atusb *atusb = hw->priv;
@@ -545,6 +578,7 @@ static struct ieee802154_ops atusb_ops = {
 	.stop			= atusb_stop,
 	.set_hw_addr_filt	= atusb_set_hw_addr_filt,
 	.set_txpower		= atusb_set_txpower,
+	.set_cca_mode		= atusb_set_cca_mode,
 	.set_cca_ed_level	= atusb_set_cca_ed_level,
 	.set_csma_params	= atusb_set_csma_params,
 	.set_promiscuous_mode	= atusb_set_promiscuous_mode,
@@ -677,11 +711,19 @@ static int atusb_probe(struct usb_interface *interface,
 	hw->flags = IEEE802154_HW_TX_OMIT_CKSUM | IEEE802154_HW_AFILT |
 		    IEEE802154_HW_PROMISCUOUS | IEEE802154_HW_CSMA_PARAMS;
 
-	hw->phy->flags = WPAN_PHY_FLAG_TXPOWER | WPAN_PHY_FLAG_CCA_ED_LEVEL;
+	hw->phy->flags = WPAN_PHY_FLAG_TXPOWER | WPAN_PHY_FLAG_CCA_ED_LEVEL |
+			 WPAN_PHY_FLAG_CCA_MODE;
+
+	hw->phy->supported.cca_modes = BIT(NL802154_CCA_ENERGY) |
+		BIT(NL802154_CCA_CARRIER) | BIT(NL802154_CCA_ENERGY_CARRIER);
+	hw->phy->supported.cca_opts = BIT(NL802154_CCA_OPT_ENERGY_CARRIER_AND) |
+		BIT(NL802154_CCA_OPT_ENERGY_CARRIER_OR);
 
 	hw->phy->supported.cca_ed_levels = atusb_ed_levels;
 	hw->phy->supported.cca_ed_levels_size = ARRAY_SIZE(atusb_ed_levels);
 
+	hw->phy->cca.mode = NL802154_CCA_ENERGY;
+
 	hw->phy->current_page = 0;
 	hw->phy->current_channel = 11;	/* reset default */
 	hw->phy->supported.channels[0] = 0x7FFF800;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH bluetooth-next 4/4] ieee802154: atusb: update my copyright years for this driver
  2016-04-19 14:28 [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Stefan Schmidt
  2016-04-19 14:28 ` [PATCH bluetooth-next 2/4] ieee802154: atusb: implement .set_cca_ed_level " Stefan Schmidt
  2016-04-19 14:28 ` [PATCH bluetooth-next 3/4] ieee802154: atusb: implement .set_cca_mode " Stefan Schmidt
@ 2016-04-19 14:28 ` Stefan Schmidt
  2016-04-20 18:55 ` [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Alexander Aring
  3 siblings, 0 replies; 8+ messages in thread
From: Stefan Schmidt @ 2016-04-19 14:28 UTC (permalink / raw)
  To: linux-wpan; +Cc: Alexander Aring, Stefan Schmidt

Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
---
 drivers/net/ieee802154/atusb.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c
index 72128b3..52c9051 100644
--- a/drivers/net/ieee802154/atusb.c
+++ b/drivers/net/ieee802154/atusb.c
@@ -3,6 +3,8 @@
  *
  * Written 2013 by Werner Almesberger <werner@almesberger.net>
  *
+ * Copyright (c) 2015 - 2016 Stefan Schmidt <stefan@datenfreihafen.org>
+ *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
  * published by the Free Software Foundation, version 2
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback
  2016-04-19 14:28 [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Stefan Schmidt
                   ` (2 preceding siblings ...)
  2016-04-19 14:28 ` [PATCH bluetooth-next 4/4] ieee802154: atusb: update my copyright years for this driver Stefan Schmidt
@ 2016-04-20 18:55 ` Alexander Aring
  2016-04-20 22:22   ` Marcel Holtmann
  2016-04-21 10:00   ` Stefan Schmidt
  3 siblings, 2 replies; 8+ messages in thread
From: Alexander Aring @ 2016-04-20 18:55 UTC (permalink / raw)
  To: Stefan Schmidt, linux-wpan


Hi,

On 04/19/2016 04:28 PM, Stefan Schmidt wrote:
> Catching up with the stack here and implement CSMA parameter setting.
> 
> Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>

all patches are fine. I want to remember this settings have no effects
until atusb has TX_ARET support and drops basic operation mode.

But I am sure you already known that and this will part of next firmware
version.

Also please care of ed-levels if they are the same on at86rf230, don't
known yet. There is some calculation with rssi_base_val parameter which
is on 2.4 Ghz always -91.

- Alex

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback
  2016-04-20 18:55 ` [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Alexander Aring
@ 2016-04-20 22:22   ` Marcel Holtmann
  2016-04-21 10:00   ` Stefan Schmidt
  1 sibling, 0 replies; 8+ messages in thread
From: Marcel Holtmann @ 2016-04-20 22:22 UTC (permalink / raw)
  To: Alexander Aring; +Cc: Stefan Schmidt, linux-wpan

Hi Alex,

>> Catching up with the stack here and implement CSMA parameter setting.
>> 
>> Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
> 
> all patches are fine. I want to remember this settings have no effects
> until atusb has TX_ARET support and drops basic operation mode.

I have applied all 4 patches to bluetooth-next tree.

Regards

Marcel


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback
  2016-04-20 18:55 ` [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Alexander Aring
  2016-04-20 22:22   ` Marcel Holtmann
@ 2016-04-21 10:00   ` Stefan Schmidt
  2016-04-21 18:49     ` Stefan Schmidt
  1 sibling, 1 reply; 8+ messages in thread
From: Stefan Schmidt @ 2016-04-21 10:00 UTC (permalink / raw)
  To: Alexander Aring, linux-wpan

Hello.

On 20/04/16 20:55, Alexander Aring wrote:
> Hi,
>
> On 04/19/2016 04:28 PM, Stefan Schmidt wrote:
>> Catching up with the stack here and implement CSMA parameter setting.
>>
>> Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
> all patches are fine. I want to remember this settings have no effects
> until atusb has TX_ARET support and drops basic operation mode.
>
> But I am sure you already known that and this will part of next firmware
> version.

Yes, thats what I'm working on right now.

> Also please care of ed-levels if they are the same on at86rf230, don't
> known yet. There is some calculation with rssi_base_val parameter which
> is on 2.4 Ghz always -91.

I will have a look at the 230 ed level table and see if anything special 
is needed for it when running atusb with the rzusb dongle.

regards
Stefan Schmidt


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback
  2016-04-21 10:00   ` Stefan Schmidt
@ 2016-04-21 18:49     ` Stefan Schmidt
  0 siblings, 0 replies; 8+ messages in thread
From: Stefan Schmidt @ 2016-04-21 18:49 UTC (permalink / raw)
  To: Alexander Aring, linux-wpan

Hello.

On 21/04/16 12:00, Stefan Schmidt wrote:
> Hello.
>
> On 20/04/16 20:55, Alexander Aring wrote:
>> Hi,
>>
>> On 04/19/2016 04:28 PM, Stefan Schmidt wrote:
>>> Catching up with the stack here and implement CSMA parameter setting.
>>>
>>> Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
>> all patches are fine. I want to remember this settings have no effects
>> until atusb has TX_ARET support and drops basic operation mode.
>>
>> But I am sure you already known that and this will part of next firmware
>> version.
>
> Yes, thats what I'm working on right now.
>
>> Also please care of ed-levels if they are the same on at86rf230, don't
>> known yet. There is some calculation with rssi_base_val parameter which
>> is on 2.4 Ghz always -91.
>
> I will have a look at the 230 ed level table and see if anything 
> special is needed for it when running atusb with the rzusb dongle.

I looked it up in the datasheets (231 on page 91ff and for 230 page 50ff).

Both have 85 ED levels in 1dB steps and the range is 0 - 84 on both as well.

Nothing I can see where 230 and 231 have any difference how we would 
need to handle them.

regards
Stefan Schmidt

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-04-21 18:50 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-19 14:28 [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Stefan Schmidt
2016-04-19 14:28 ` [PATCH bluetooth-next 2/4] ieee802154: atusb: implement .set_cca_ed_level " Stefan Schmidt
2016-04-19 14:28 ` [PATCH bluetooth-next 3/4] ieee802154: atusb: implement .set_cca_mode " Stefan Schmidt
2016-04-19 14:28 ` [PATCH bluetooth-next 4/4] ieee802154: atusb: update my copyright years for this driver Stefan Schmidt
2016-04-20 18:55 ` [PATCH bluetooth-next 1/4] ieee802154: atusb: implement .set_csma_params ops callback Alexander Aring
2016-04-20 22:22   ` Marcel Holtmann
2016-04-21 10:00   ` Stefan Schmidt
2016-04-21 18:49     ` Stefan Schmidt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.