* [PATCH] Print warnings for missing cfg80211_ops implementations @ 2015-12-16 21:43 Ola Olsson 2015-12-17 1:16 ` Joe Perches 0 siblings, 1 reply; 8+ messages in thread From: Ola Olsson @ 2015-12-16 21:43 UTC (permalink / raw) To: johannes; +Cc: linux-wireless, Ola Olsson, Ola Olsson Print a warning whenever an expected callback function lacks implementation. Signed-off-by: Ola Olsson <ola.olsson@sonymobile.com> --- net/wireless/core.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/net/wireless/core.c b/net/wireless/core.c index b091551..3a9c41b 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -352,6 +352,16 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv, WARN_ON(ops->add_station && !ops->del_station); WARN_ON(ops->add_mpath && !ops->del_mpath); WARN_ON(ops->join_mesh && !ops->leave_mesh); + WARN_ON(ops->start_p2p_device && !ops->stop_p2p_device); + WARN_ON(ops->start_ap && !ops->stop_ap); + WARN_ON(ops->join_ocb && !ops->leave_ocb); + WARN_ON(ops->suspend && !ops->resume); + WARN_ON(ops->sched_scan_start && !ops->sched_scan_stop); + WARN_ON(ops->remain_on_channel && !ops->cancel_remain_on_channel); + WARN_ON(ops->tdls_channel_switch && !ops->tdls_cancel_channel_switch); + WARN_ON(ops->add_tx_ts && !ops->del_tx_ts); + WARN_ON(ops->set_tx_power && !ops->get_tx_power); + WARN_ON(ops->set_antenna && !ops->get_antenna); alloc_size = sizeof(*rdev) + sizeof_priv; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] Print warnings for missing cfg80211_ops implementations 2015-12-16 21:43 [PATCH] Print warnings for missing cfg80211_ops implementations Ola Olsson @ 2015-12-17 1:16 ` Joe Perches [not found] ` <CABAco3BSaB9R6-nZQsmOnfXXy2ra-un0jjeBkyq4inzCybD5dw@mail.gmail.com> 0 siblings, 1 reply; 8+ messages in thread From: Joe Perches @ 2015-12-17 1:16 UTC (permalink / raw) To: Ola Olsson, johannes; +Cc: linux-wireless, Ola Olsson On Wed, 2015-12-16 at 22:43 +0100, Ola Olsson wrote: > Print a warning whenever an expected callback function > lacks implementation. > > Signed-off-by: Ola Olsson <ola.olsson@sonymobile.com> > --- > net/wireless/core.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/net/wireless/core.c b/net/wireless/core.c > index b091551..3a9c41b 100644 > --- a/net/wireless/core.c > +++ b/net/wireless/core.c > @@ -352,6 +352,16 @@ struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv, > WARN_ON(ops->add_station && !ops->del_station); > WARN_ON(ops->add_mpath && !ops->del_mpath); > WARN_ON(ops->join_mesh && !ops->leave_mesh); > + WARN_ON(ops->start_p2p_device && !ops->stop_p2p_device); > + WARN_ON(ops->start_ap && !ops->stop_ap); > + WARN_ON(ops->join_ocb && !ops->leave_ocb); > + WARN_ON(ops->suspend && !ops->resume); > + WARN_ON(ops->sched_scan_start && !ops->sched_scan_stop); > + WARN_ON(ops->remain_on_channel && !ops->cancel_remain_on_channel); > + WARN_ON(ops->tdls_channel_switch && !ops->tdls_cancel_channel_switch); > + WARN_ON(ops->add_tx_ts && !ops->del_tx_ts); > + WARN_ON(ops->set_tx_power && !ops->get_tx_power); > + WARN_ON(ops->set_antenna && !ops->get_antenna); maybe all of these should be a nand b? ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <CABAco3BSaB9R6-nZQsmOnfXXy2ra-un0jjeBkyq4inzCybD5dw@mail.gmail.com>]
* Re: [PATCH] Print warnings for missing cfg80211_ops implementations [not found] ` <CABAco3BSaB9R6-nZQsmOnfXXy2ra-un0jjeBkyq4inzCybD5dw@mail.gmail.com> @ 2015-12-17 5:19 ` Joe Perches 2015-12-17 7:34 ` Ola Olsson 0 siblings, 1 reply; 8+ messages in thread From: Joe Perches @ 2015-12-17 5:19 UTC (permalink / raw) To: Ola Olsson; +Cc: ola. olsson, linux-wireless, johannes On Thu, 2015-12-17 at 05:19 +0100, Ola Olsson wrote: > Hi Joe, > > > maybe all of these should be a nand b? > > You're right but i don't understand where the problem is. Please help > me. > The code is currently like: WARN_ON(ops->add_station && !ops->del_station); but maybe it should be WARN_ON((ops->add_station && !ops->del_station) || (!opt->add_station && ops->del_station)) etc... ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Print warnings for missing cfg80211_ops implementations 2015-12-17 5:19 ` Joe Perches @ 2015-12-17 7:34 ` Ola Olsson 2015-12-17 7:57 ` Johannes Berg 0 siblings, 1 reply; 8+ messages in thread From: Ola Olsson @ 2015-12-17 7:34 UTC (permalink / raw) To: Joe Perches; +Cc: ola. olsson, linux-wireless, Johannes Berg > but maybe it should be > > WARN_ON((ops->add_station && !ops->del_station) || > (!opt->add_station && ops->del_station)) > > etc... Ahh, got it! I really like your idea but I assume it's quite rare to implement the "stop/del/leave/disconnect" callbacks and at the same time forget to implement the "start/add/join/connect". You will probably find out pretty quickly if the "start" functions are missing, while it might take some time debugging why you lack the "stop" functions (reinitialization issues/ resource leaks for example). With that said, don't take my word for it, I was only following the existing pattern and I assume someone else had a good reason in the first place. Best regards, Ola ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Print warnings for missing cfg80211_ops implementations 2015-12-17 7:34 ` Ola Olsson @ 2015-12-17 7:57 ` Johannes Berg 2015-12-17 11:01 ` Joe Perches 0 siblings, 1 reply; 8+ messages in thread From: Johannes Berg @ 2015-12-17 7:57 UTC (permalink / raw) To: Ola Olsson, Joe Perches; +Cc: ola. olsson, linux-wireless On Thu, 2015-12-17 at 08:34 +0100, Ola Olsson wrote: > > but maybe it should be > > > > WARN_ON((ops->add_station && !ops->del_station) || > > (!opt->add_station && ops->del_station)) > > > > etc... > > Ahh, got it! I really like your idea but I assume it's quite rare to > implement the "stop/del/leave/disconnect" callbacks and at the same > time forget to implement the "start/add/join/connect". You will > probably find out pretty quickly if the "start" functions are > missing, > while it might take some time debugging why you lack the "stop" > functions (reinitialization issues/ resource leaks for example). > > With that said, don't take my word for it, I was only following the > existing pattern and I assume someone else had a good reason in the > first place. > Pretty much what you said :) johannes ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Print warnings for missing cfg80211_ops implementations 2015-12-17 7:57 ` Johannes Berg @ 2015-12-17 11:01 ` Joe Perches 2015-12-17 11:43 ` Ola Olsson 2015-12-17 12:43 ` Johannes Berg 0 siblings, 2 replies; 8+ messages in thread From: Joe Perches @ 2015-12-17 11:01 UTC (permalink / raw) To: Johannes Berg, Ola Olsson; +Cc: ola. olsson, linux-wireless On Thu, 2015-12-17 at 08:57 +0100, Johannes Berg wrote: > On Thu, 2015-12-17 at 08:34 +0100, Ola Olsson wrote: > > > but maybe it should be > > > > > > WARN_ON((ops->add_station && !ops->del_station) || > > > (!opt->add_station && ops->del_station)) > > > > > > etc... > > > > Ahh, got it! I really like your idea but I assume it's quite rare to > > implement the "stop/del/leave/disconnect" callbacks and at the same > > time forget to implement the "start/add/join/connect". You will > > probably find out pretty quickly if the "start" functions are > > missing, > > while it might take some time debugging why you lack the "stop" > > functions (reinitialization issues/ resource leaks for example). > > > > With that said, don't take my word for it, I was only following the > > existing pattern and I assume someone else had a good reason in the > > first place. > > > > Pretty much what you said :) Following patterns is good, I just think the pattern could be trivially improved. The test is a runtime check on what would ideally be done at compile time. Using WARN_ON(!a ^ !b) which is logically the same as what I wrote above for clarity is simply a bit more coverage and maybe even a bit run-time faster. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Print warnings for missing cfg80211_ops implementations 2015-12-17 11:01 ` Joe Perches @ 2015-12-17 11:43 ` Ola Olsson 2015-12-17 12:43 ` Johannes Berg 1 sibling, 0 replies; 8+ messages in thread From: Ola Olsson @ 2015-12-17 11:43 UTC (permalink / raw) To: Joe Perches; +Cc: Johannes Berg, ola. olsson, linux-wireless > Using > WARN_ON(!a ^ !b) > which is logically the same as what I wrote above > for clarity is simply a bit more coverage and maybe > even a bit run-time faster. > > Didn't think about that. Love your bit fiddling trick! After an approval/rejection of my patch I can submit another one with your suggestion unless you want to do it yourself... /Ola ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Print warnings for missing cfg80211_ops implementations 2015-12-17 11:01 ` Joe Perches 2015-12-17 11:43 ` Ola Olsson @ 2015-12-17 12:43 ` Johannes Berg 1 sibling, 0 replies; 8+ messages in thread From: Johannes Berg @ 2015-12-17 12:43 UTC (permalink / raw) To: Joe Perches, Ola Olsson; +Cc: ola. olsson, linux-wireless On Thu, 2015-12-17 at 03:01 -0800, Joe Perches wrote: > Following patterns is good, I just think the > pattern could be trivially improved. It's a question of what makes sense though - nobody implements stop_xyz without implementing start_xyz, and even if they do it's pointless. It's just that if you have start_xyz most/all of your functional tests might work, but we'd really like to have stop_xyz as well. It's not *worse* to check for the XOR (like you suggest below), but it's not really any better either. > The test is a runtime check on what would ideally > be done at compile time. If you have any suggestions how to do that then that'd be great :) I don't really see a way of doing that since this depends on the driver and the driver might even fill the struct at runtime (like hwsim does IIRC) > Using > WARN_ON(!a ^ !b) > which is logically the same as what I wrote above > for clarity is simply a bit more coverage and maybe > even a bit run-time faster. Don't think we have to worry much about the runtime overhead, but that's a nice idea. As I said above though, I don't think it really makes a difference. johannes ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-12-17 12:43 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-16 21:43 [PATCH] Print warnings for missing cfg80211_ops implementations Ola Olsson
2015-12-17 1:16 ` Joe Perches
[not found] ` <CABAco3BSaB9R6-nZQsmOnfXXy2ra-un0jjeBkyq4inzCybD5dw@mail.gmail.com>
2015-12-17 5:19 ` Joe Perches
2015-12-17 7:34 ` Ola Olsson
2015-12-17 7:57 ` Johannes Berg
2015-12-17 11:01 ` Joe Perches
2015-12-17 11:43 ` Ola Olsson
2015-12-17 12:43 ` Johannes Berg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).