mac802154: move receive parameters above start
authorAlexander Aring <aahringo@redhat.com>
Fri, 7 Oct 2022 08:53:04 +0000 (10:53 +0200)
committerStefan Schmidt <stefan@datenfreihafen.org>
Wed, 12 Oct 2022 10:56:52 +0000 (12:56 +0200)
This patch moves all receive parameters above the drv_start()
functionality to make it accessibile in the drv_start() function.

Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/r/20221007085310.503366-3-miquel.raynal@bootlin.com
Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
net/mac802154/driver-ops.h

index d23f0db98015a6fdc421f9a0b1b17acb2b1b1da0..c9d54088a56706d72b199cf24ac1c8bcee4322be 100644 (file)
@@ -24,203 +24,221 @@ drv_xmit_sync(struct ieee802154_local *local, struct sk_buff *skb)
        return local->ops->xmit_sync(&local->hw, skb);
 }
 
-static inline int drv_start(struct ieee802154_local *local)
+static inline int drv_set_pan_id(struct ieee802154_local *local, __le16 pan_id)
 {
+       struct ieee802154_hw_addr_filt filt;
        int ret;
 
        might_sleep();
 
-       trace_802154_drv_start(local);
-       local->started = true;
-       smp_mb();
-       ret = local->ops->start(&local->hw);
+       if (!local->ops->set_hw_addr_filt) {
+               WARN_ON(1);
+               return -EOPNOTSUPP;
+       }
+
+       filt.pan_id = pan_id;
+
+       trace_802154_drv_set_pan_id(local, pan_id);
+       ret = local->ops->set_hw_addr_filt(&local->hw, &filt,
+                                           IEEE802154_AFILT_PANID_CHANGED);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
 
-static inline void drv_stop(struct ieee802154_local *local)
+static inline int
+drv_set_extended_addr(struct ieee802154_local *local, __le64 extended_addr)
 {
-       might_sleep();
+       struct ieee802154_hw_addr_filt filt;
+       int ret;
 
-       trace_802154_drv_stop(local);
-       local->ops->stop(&local->hw);
-       trace_802154_drv_return_void(local);
+       might_sleep();
 
-       /* sync away all work on the tasklet before clearing started */
-       tasklet_disable(&local->tasklet);
-       tasklet_enable(&local->tasklet);
+       if (!local->ops->set_hw_addr_filt) {
+               WARN_ON(1);
+               return -EOPNOTSUPP;
+       }
 
-       barrier();
+       filt.ieee_addr = extended_addr;
 
-       local->started = false;
+       trace_802154_drv_set_extended_addr(local, extended_addr);
+       ret = local->ops->set_hw_addr_filt(&local->hw, &filt,
+                                           IEEE802154_AFILT_IEEEADDR_CHANGED);
+       trace_802154_drv_return_int(local, ret);
+       return ret;
 }
 
 static inline int
-drv_set_channel(struct ieee802154_local *local, u8 page, u8 channel)
+drv_set_short_addr(struct ieee802154_local *local, __le16 short_addr)
 {
+       struct ieee802154_hw_addr_filt filt;
        int ret;
 
        might_sleep();
 
-       trace_802154_drv_set_channel(local, page, channel);
-       ret = local->ops->set_channel(&local->hw, page, channel);
+       if (!local->ops->set_hw_addr_filt) {
+               WARN_ON(1);
+               return -EOPNOTSUPP;
+       }
+
+       filt.short_addr = short_addr;
+
+       trace_802154_drv_set_short_addr(local, short_addr);
+       ret = local->ops->set_hw_addr_filt(&local->hw, &filt,
+                                           IEEE802154_AFILT_SADDR_CHANGED);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
 
-static inline int drv_set_tx_power(struct ieee802154_local *local, s32 mbm)
+static inline int
+drv_set_pan_coord(struct ieee802154_local *local, bool is_coord)
 {
+       struct ieee802154_hw_addr_filt filt;
        int ret;
 
        might_sleep();
 
-       if (!local->ops->set_txpower) {
+       if (!local->ops->set_hw_addr_filt) {
                WARN_ON(1);
                return -EOPNOTSUPP;
        }
 
-       trace_802154_drv_set_tx_power(local, mbm);
-       ret = local->ops->set_txpower(&local->hw, mbm);
+       filt.pan_coord = is_coord;
+
+       trace_802154_drv_set_pan_coord(local, is_coord);
+       ret = local->ops->set_hw_addr_filt(&local->hw, &filt,
+                                           IEEE802154_AFILT_PANC_CHANGED);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
 
-static inline int drv_set_cca_mode(struct ieee802154_local *local,
-                                  const struct wpan_phy_cca *cca)
+static inline int
+drv_set_promiscuous_mode(struct ieee802154_local *local, bool on)
 {
        int ret;
 
        might_sleep();
 
-       if (!local->ops->set_cca_mode) {
+       if (!local->ops->set_promiscuous_mode) {
                WARN_ON(1);
                return -EOPNOTSUPP;
        }
 
-       trace_802154_drv_set_cca_mode(local, cca);
-       ret = local->ops->set_cca_mode(&local->hw, cca);
+       trace_802154_drv_set_promiscuous_mode(local, on);
+       ret = local->ops->set_promiscuous_mode(&local->hw, on);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
 
-static inline int drv_set_lbt_mode(struct ieee802154_local *local, bool mode)
+static inline int drv_start(struct ieee802154_local *local)
 {
        int ret;
 
        might_sleep();
 
-       if (!local->ops->set_lbt) {
-               WARN_ON(1);
-               return -EOPNOTSUPP;
-       }
-
-       trace_802154_drv_set_lbt_mode(local, mode);
-       ret = local->ops->set_lbt(&local->hw, mode);
+       trace_802154_drv_start(local);
+       local->started = true;
+       smp_mb();
+       ret = local->ops->start(&local->hw);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
 
+static inline void drv_stop(struct ieee802154_local *local)
+{
+       might_sleep();
+
+       trace_802154_drv_stop(local);
+       local->ops->stop(&local->hw);
+       trace_802154_drv_return_void(local);
+
+       /* sync away all work on the tasklet before clearing started */
+       tasklet_disable(&local->tasklet);
+       tasklet_enable(&local->tasklet);
+
+       barrier();
+
+       local->started = false;
+}
+
 static inline int
-drv_set_cca_ed_level(struct ieee802154_local *local, s32 mbm)
+drv_set_channel(struct ieee802154_local *local, u8 page, u8 channel)
 {
        int ret;
 
        might_sleep();
 
-       if (!local->ops->set_cca_ed_level) {
-               WARN_ON(1);
-               return -EOPNOTSUPP;
-       }
-
-       trace_802154_drv_set_cca_ed_level(local, mbm);
-       ret = local->ops->set_cca_ed_level(&local->hw, mbm);
+       trace_802154_drv_set_channel(local, page, channel);
+       ret = local->ops->set_channel(&local->hw, page, channel);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
 
-static inline int drv_set_pan_id(struct ieee802154_local *local, __le16 pan_id)
+static inline int drv_set_tx_power(struct ieee802154_local *local, s32 mbm)
 {
-       struct ieee802154_hw_addr_filt filt;
        int ret;
 
        might_sleep();
 
-       if (!local->ops->set_hw_addr_filt) {
+       if (!local->ops->set_txpower) {
                WARN_ON(1);
                return -EOPNOTSUPP;
        }
 
-       filt.pan_id = pan_id;
-
-       trace_802154_drv_set_pan_id(local, pan_id);
-       ret = local->ops->set_hw_addr_filt(&local->hw, &filt,
-                                           IEEE802154_AFILT_PANID_CHANGED);
+       trace_802154_drv_set_tx_power(local, mbm);
+       ret = local->ops->set_txpower(&local->hw, mbm);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
 
-static inline int
-drv_set_extended_addr(struct ieee802154_local *local, __le64 extended_addr)
+static inline int drv_set_cca_mode(struct ieee802154_local *local,
+                                  const struct wpan_phy_cca *cca)
 {
-       struct ieee802154_hw_addr_filt filt;
        int ret;
 
        might_sleep();
 
-       if (!local->ops->set_hw_addr_filt) {
+       if (!local->ops->set_cca_mode) {
                WARN_ON(1);
                return -EOPNOTSUPP;
        }
 
-       filt.ieee_addr = extended_addr;
-
-       trace_802154_drv_set_extended_addr(local, extended_addr);
-       ret = local->ops->set_hw_addr_filt(&local->hw, &filt,
-                                           IEEE802154_AFILT_IEEEADDR_CHANGED);
+       trace_802154_drv_set_cca_mode(local, cca);
+       ret = local->ops->set_cca_mode(&local->hw, cca);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
 
-static inline int
-drv_set_short_addr(struct ieee802154_local *local, __le16 short_addr)
+static inline int drv_set_lbt_mode(struct ieee802154_local *local, bool mode)
 {
-       struct ieee802154_hw_addr_filt filt;
        int ret;
 
        might_sleep();
 
-       if (!local->ops->set_hw_addr_filt) {
+       if (!local->ops->set_lbt) {
                WARN_ON(1);
                return -EOPNOTSUPP;
        }
 
-       filt.short_addr = short_addr;
-
-       trace_802154_drv_set_short_addr(local, short_addr);
-       ret = local->ops->set_hw_addr_filt(&local->hw, &filt,
-                                           IEEE802154_AFILT_SADDR_CHANGED);
+       trace_802154_drv_set_lbt_mode(local, mode);
+       ret = local->ops->set_lbt(&local->hw, mode);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
 
 static inline int
-drv_set_pan_coord(struct ieee802154_local *local, bool is_coord)
+drv_set_cca_ed_level(struct ieee802154_local *local, s32 mbm)
 {
-       struct ieee802154_hw_addr_filt filt;
        int ret;
 
        might_sleep();
 
-       if (!local->ops->set_hw_addr_filt) {
+       if (!local->ops->set_cca_ed_level) {
                WARN_ON(1);
                return -EOPNOTSUPP;
        }
 
-       filt.pan_coord = is_coord;
-
-       trace_802154_drv_set_pan_coord(local, is_coord);
-       ret = local->ops->set_hw_addr_filt(&local->hw, &filt,
-                                           IEEE802154_AFILT_PANC_CHANGED);
+       trace_802154_drv_set_cca_ed_level(local, mbm);
+       ret = local->ops->set_cca_ed_level(&local->hw, mbm);
        trace_802154_drv_return_int(local, ret);
        return ret;
 }
@@ -264,22 +282,4 @@ drv_set_max_frame_retries(struct ieee802154_local *local, s8 max_frame_retries)
        return ret;
 }
 
-static inline int
-drv_set_promiscuous_mode(struct ieee802154_local *local, bool on)
-{
-       int ret;
-
-       might_sleep();
-
-       if (!local->ops->set_promiscuous_mode) {
-               WARN_ON(1);
-               return -EOPNOTSUPP;
-       }
-
-       trace_802154_drv_set_promiscuous_mode(local, on);
-       ret = local->ops->set_promiscuous_mode(&local->hw, on);
-       trace_802154_drv_return_int(local, ret);
-       return ret;
-}
-
 #endif /* __MAC802154_DRIVER_OPS */