Hi, On Wed, 12 Jan 2022 at 12:34, Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote: > > The Cascada 8210 hardware transceiver is kind of a hardMAC which > interfaces with the softMAC and in practice does not support sending > anything else than dataframes. This means we cannot send any BEACON_REQ > during active scans nor any BEACON in general. Refuse these operations > officially so that the user is aware of the limitation. > > Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx> > --- > drivers/net/ieee802154/ca8210.c | 25 ++++++++++++++++++++++++- > 1 file changed, 24 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c > index d3a9e4fe05f4..49c274280e3c 100644 > --- a/drivers/net/ieee802154/ca8210.c > +++ b/drivers/net/ieee802154/ca8210.c > @@ -2385,6 +2385,25 @@ static int ca8210_set_promiscuous_mode(struct ieee802154_hw *hw, const bool on) > return link_to_linux_err(status); > } > > +static int ca8210_enter_scan_mode(struct ieee802154_hw *hw, > + struct cfg802154_scan_request *request) > +{ > + /* This xceiver can only send dataframes */ > + if (request->type != NL802154_SCAN_PASSIVE) > + return -EOPNOTSUPP; > + > + return 0; > +} > + > +static int ca8210_enter_beacons_mode(struct ieee802154_hw *hw, > + struct cfg802154_beacons_request *request) > +{ > + /* This xceiver can only send dataframes */ > + return -EOPNOTSUPP; > +} > + > +static void ca8210_exit_scan_beacons_mode(struct ieee802154_hw *hw) { } > + > static const struct ieee802154_ops ca8210_phy_ops = { > .start = ca8210_start, > .stop = ca8210_stop, > @@ -2397,7 +2416,11 @@ static const struct ieee802154_ops ca8210_phy_ops = { > .set_cca_ed_level = ca8210_set_cca_ed_level, > .set_csma_params = ca8210_set_csma_params, > .set_frame_retries = ca8210_set_frame_retries, > - .set_promiscuous_mode = ca8210_set_promiscuous_mode > + .set_promiscuous_mode = ca8210_set_promiscuous_mode, > + .enter_scan_mode = ca8210_enter_scan_mode, > + .exit_scan_mode = ca8210_exit_scan_beacons_mode, > + .enter_beacons_mode = ca8210_enter_beacons_mode, > + .exit_beacons_mode = ca8210_exit_scan_beacons_mode, > }; so there is no flag that this driver can't support scanning currently and it works now because the offload functionality will return -ENOTSUPP? This is misleading because I would assume if it's not supported we can do it by software which the driver can't do. ... I see that the offload functions now are getting used and have a reason to be upstream, but the use of it is wrong. - Alex