On 27/01/14 20:03, Phoebe Buckheister wrote:
> Listen-before-talk is an alternative to CSMA in uncoordinated networks
> and prescribed by european regulations if one wants to have a device
> with radio duty cycles above 10% (or less in some bands). Add a phy
> property to enable/disable LBT in the phy, including support in the
> at86rf230 driver for RF212 chips.
> 
> Signed-off-by: Phoebe Buckheister <phoebe.buckheis...@itwm.fraunhofer.de>
> ---

> +static int
> +at86rf230_set_lbt(struct ieee802154_dev *dev, u8 on)

Judging from datasheets I have, this is rf212-specific. Please name it
so. And the argument is bool, isn't it?

> +     IEEE802154_ATTR_LBT_ENABLED,


> + * set_lbt
> + *     Enables or disables listen before talk on the device.
> + *     Returns either zero, or negative errno.

Again, what about pib_lock here?

>   */
>  struct ieee802154_ops {
>       struct module   *owner;
> @@ -134,6 +138,7 @@ struct ieee802154_ops {
>       int             (*ieee_addr)(struct ieee802154_dev *dev,
>                                    u8 addr[IEEE802154_ADDR_LEN]);
>       int             (*set_txpower)(struct ieee802154_dev *dev, int db);
> +     int             (*set_lbt)(struct ieee802154_dev *dev, u8 on);

bool

>  };
>  
>  /* Basic interface to register ieee802154 device */
> diff --git a/include/net/wpan-phy.h b/include/net/wpan-phy.h
> index 44e5e49..30cdae6 100644
> --- a/include/net/wpan-phy.h
> +++ b/include/net/wpan-phy.h
> @@ -47,6 +47,8 @@ struct wpan_phy {
>       u8 transmit_power;
>       u8 cca_mode;
>  
> +     u8 lbt:1;
> +

bool!

>       struct device dev;
>       int idx;
>  
> @@ -55,6 +57,7 @@ struct wpan_phy {
>       void (*del_iface)(struct wpan_phy *phy, struct net_device *dev);
>  
>       int (*set_txpower)(struct wpan_phy *phy, int txpower);
> +     int (*set_lbt)(struct wpan_phy *phy, u8 on);

and here too.


>  
>       char priv[0] __attribute__((__aligned__(NETDEV_ALIGN)));
>  };
> diff --git a/net/ieee802154/nl-phy.c b/net/ieee802154/nl-phy.c
> index 3ade8c6..cda6e0d 100644
> --- a/net/ieee802154/nl-phy.c
> +++ b/net/ieee802154/nl-phy.c
> @@ -57,7 +57,8 @@ static int ieee802154_nl_fill_phy(struct sk_buff *msg, u32 
> portid,
>           nla_put_u8(msg, IEEE802154_ATTR_PAGE, phy->current_page) ||
>           nla_put_u8(msg, IEEE802154_ATTR_CHANNEL, phy->current_channel) ||
>           nla_put_s32(msg, IEEE802154_ATTR_TXPOWER,
> -                             ((signed char) (phy->transmit_power << 2)) >> 
> 2))
> +                 ((signed char) (phy->transmit_power << 2)) >> 2) ||
> +         nla_put_u8(msg, IEEE802154_ATTR_LBT_ENABLED, phy->lbt))

nla_get/put_flag please.

>               goto nla_put_failure;
>       for (i = 0; i < 32; i++) {
>               if (phy->channels_supported[i])

>  }
>  
> +static int mac802154_set_lbt(struct wpan_phy *phy, u8 on)
> +{
> +     struct mac802154_priv *priv = wpan_phy_priv(phy);
> +
> +     return priv->ops->set_lbt(&priv->hw, on);

or return -EOPNOTUSPP

> +}
> +



-- 
With best wishes
Dmitry

------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Linux-zigbee-devel mailing list
Linux-zigbee-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel

Reply via email to