提交 8ba40417 编写于 作者: A Alexander Aring 提交者: Marcel Holtmann

mrf24j40: add promiscuous mode support

This patch adds support for promiscuous mode by setting promiscuous (no
frame filtering), disable automatic ack handling and not filtering
frames where the crc is invalid.
Reviewed-by: NStefan Schmidt <stefan@osg.samsung.com>
Signed-off-by: NAlexander Aring <alex.aring@gmail.com>
Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
上级 00250f78
......@@ -923,6 +923,24 @@ static int mrf24j40_set_txpower(struct ieee802154_hw *hw, s32 mbm)
return regmap_update_bits(devrec->regmap_long, REG_RFCON3, 0xf8, val);
}
static int mrf24j40_set_promiscuous_mode(struct ieee802154_hw *hw, bool on)
{
struct mrf24j40 *devrec = hw->priv;
int ret;
if (on) {
/* set PROMI, ERRPKT and NOACKRSP */
ret = regmap_update_bits(devrec->regmap_short, REG_RXMCR, 0x23,
0x23);
} else {
/* clear PROMI, ERRPKT and NOACKRSP */
ret = regmap_update_bits(devrec->regmap_short, REG_RXMCR, 0x23,
0x00);
}
return ret;
}
static const struct ieee802154_ops mrf24j40_ops = {
.owner = THIS_MODULE,
.xmit_async = mrf24j40_tx,
......@@ -935,6 +953,7 @@ static const struct ieee802154_ops mrf24j40_ops = {
.set_cca_mode = mrf24j40_set_cca_mode,
.set_cca_ed_level = mrf24j40_set_cca_ed_level,
.set_txpower = mrf24j40_set_txpower,
.set_promiscuous_mode = mrf24j40_set_promiscuous_mode,
};
static void mrf24j40_intstat_complete(void *context)
......@@ -1182,7 +1201,8 @@ static int mrf24j40_probe(struct spi_device *spi)
devrec->hw->parent = &spi->dev;
devrec->hw->phy->supported.channels[0] = CHANNEL_MASK;
devrec->hw->flags = IEEE802154_HW_TX_OMIT_CKSUM | IEEE802154_HW_AFILT |
IEEE802154_HW_CSMA_PARAMS;
IEEE802154_HW_CSMA_PARAMS |
IEEE802154_HW_PROMISCUOUS;
devrec->hw->phy->flags = WPAN_PHY_FLAG_CCA_MODE |
WPAN_PHY_FLAG_CCA_ED_LEVEL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册