ieee802154: add netlink APIs for smartMAC configuration
Introduce new netlink attributes for SET_PHY_ATTRS: * CSMA minimal backoff exponent * CSMA maximal backoff exponent * CSMA retry limit * frame retransmission limit The CSMA attributes shall correspond to minBE, maxBE and maxCSMABackoffs of 802.15.4, respectively. The frame retransmission shall correspond to maxFrameRetries of 802.15.4, unless given as -1: then the old behaviour of the stack shall apply. For RF2xy, the old behaviour is to not do channel sensing at all and simply send *right now*, which is not intended behaviour for most applications and actually prohibited for some channel/page combinations. For all values except frame retransmission limit, the defaults of 802.15.4 apply. Frame retransmission limits are set to -1 to indicate backward-compatible behaviour. Signed-off-by: Phoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
7dcbd22a97
commit
4244db1b0b
@@ -205,6 +205,27 @@ static int mac802154_set_cca_ed_level(struct wpan_phy *phy, s32 level)
|
||||
return priv->ops->set_cca_ed_level(&priv->hw, level);
|
||||
}
|
||||
|
||||
static int mac802154_set_csma_params(struct wpan_phy *phy, u8 min_be,
|
||||
u8 max_be, u8 retries)
|
||||
{
|
||||
struct mac802154_priv *priv = wpan_phy_priv(phy);
|
||||
|
||||
if (!priv->ops->set_csma_params)
|
||||
return -ENOTSUPP;
|
||||
|
||||
return priv->ops->set_csma_params(&priv->hw, min_be, max_be, retries);
|
||||
}
|
||||
|
||||
static int mac802154_set_frame_retries(struct wpan_phy *phy, s8 retries)
|
||||
{
|
||||
struct mac802154_priv *priv = wpan_phy_priv(phy);
|
||||
|
||||
if (!priv->ops->set_frame_retries)
|
||||
return -ENOTSUPP;
|
||||
|
||||
return priv->ops->set_frame_retries(&priv->hw, retries);
|
||||
}
|
||||
|
||||
struct ieee802154_dev *
|
||||
ieee802154_alloc_device(size_t priv_data_len, struct ieee802154_ops *ops)
|
||||
{
|
||||
@@ -286,6 +307,8 @@ int ieee802154_register_device(struct ieee802154_dev *dev)
|
||||
priv->phy->set_lbt = mac802154_set_lbt;
|
||||
priv->phy->set_cca_mode = mac802154_set_cca_mode;
|
||||
priv->phy->set_cca_ed_level = mac802154_set_cca_ed_level;
|
||||
priv->phy->set_csma_params = mac802154_set_csma_params;
|
||||
priv->phy->set_frame_retries = mac802154_set_frame_retries;
|
||||
|
||||
rc = wpan_phy_register(priv->phy);
|
||||
if (rc < 0)
|
||||
|
Reference in New Issue
Block a user