Message ID | 20210201020412.52790-1-cmi@nvidia.com (mailing list archive) |
---|---|
State | Rejected |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,v6] net: psample: Introduce stubs to remove NIC driver dependency | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for net-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | warning | 5 maintainers not CCed: jhs@mojatatu.com yotam.gi@gmail.com jiri@resnulli.us davem@davemloft.net xiyou.wangcong@gmail.com |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | fail | Errors and warnings before: 1399 this patch: 9 |
netdev/kdoc | success | Errors and warnings before: 1 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | warning | WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? |
netdev/build_allmodconfig_warn | fail | Errors and warnings before: 1085 this patch: 9 |
netdev/header_inline | success | Link |
netdev/stable | success | Stable not CCed |
On Mon, 1 Feb 2021 10:04:12 +0800 Chris Mi wrote: > In order to send sampled packets to userspace, NIC driver calls > psample api directly. But it creates a hard dependency on module > psample. Introduce psample_ops to remove the hard dependency. > It is initialized when psample module is loaded and set to NULL > when the module is unloaded. > > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: Chris Mi <cmi@nvidia.com> > Reviewed-by: Jiri Pirko <jiri@nvidia.com> The necessity of making this change is not obvious (you can fix the distro scripts instead), you did not include a clarification in the commit message even though two people asked you why it's needed and on top of that you keep sending code which doesn't build. Please consider this change rejected and do not send a v7.
On Mon, 2021-02-01 at 17:14 -0800, Jakub Kicinski wrote: > On Mon, 1 Feb 2021 10:04:12 +0800 Chris Mi wrote: > > In order to send sampled packets to userspace, NIC driver calls > > psample api directly. But it creates a hard dependency on module > > psample. Introduce psample_ops to remove the hard dependency. > > It is initialized when psample module is loaded and set to NULL > > when the module is unloaded. > > > > Reported-by: kernel test robot <lkp@intel.com> > > Signed-off-by: Chris Mi <cmi@nvidia.com> > > Reviewed-by: Jiri Pirko <jiri@nvidia.com> > > The necessity of making this change is not obvious (you can fix the > distro scripts instead), you did not include a clarification in the > commit message even though two people asked you why it's needed and > on top of that you keep sending code which doesn't build. > > Please consider this change rejected and do not send a v7. Jakub, it is not only about installation dependencies, the issue is more critical than this, We had some other issues with similar dependency problem where mlx5_core had hard dependency with netfilter, firewalld when disabled, removes netfilter and all its dependencies including mlx5, this is a no go for our users. Again, having a hard dependency between a hardware driver and a peripheral module in the kernel is a bad design.
On Mon, 01 Feb 2021 23:31:15 -0800 Saeed Mahameed wrote: > On Mon, 2021-02-01 at 17:14 -0800, Jakub Kicinski wrote: > > On Mon, 1 Feb 2021 10:04:12 +0800 Chris Mi wrote: > > > In order to send sampled packets to userspace, NIC driver calls > > > psample api directly. But it creates a hard dependency on module > > > psample. Introduce psample_ops to remove the hard dependency. > > > It is initialized when psample module is loaded and set to NULL > > > when the module is unloaded. > > > > > > Reported-by: kernel test robot <lkp@intel.com> > > > Signed-off-by: Chris Mi <cmi@nvidia.com> > > > Reviewed-by: Jiri Pirko <jiri@nvidia.com> > > > > The necessity of making this change is not obvious (you can fix the > > distro scripts instead), you did not include a clarification in the > > commit message even though two people asked you why it's needed and > > on top of that you keep sending code which doesn't build. > > > > Please consider this change rejected and do not send a v7. > > Jakub, it is not only about installation dependencies, the issue is > more critical than this, > > We had some other issues with similar dependency problem where > mlx5_core had hard dependency with netfilter, firewalld when disabled, > removes netfilter and all its dependencies including mlx5, this is a no > go for our users. > > Again, having a hard dependency between a hardware driver and a > peripheral module in the kernel is a bad design. That is not the point. The technical problem is minor, and it's a problem for _your_ driver. Yet, it appears to be my responsibility to make sure the patch even compiles. I believe there should be a limit to the ignorance a community volunteer is expected to put up with when dealing with patches from and for the benefit of a commercial vendor. This is up for discussion, if you disagree let's talk it out. I'm not particularly patient (to put it mildly), but I don't understand how v5 could have built, and yet v6 gets posted with the same exact problem :/ So from my perspective it seems like the right step to push back. If you, Tariq, Jiri, Ido or any other seasoned kernel contributor reposts this after making sure it's up to snuff themselves I will most certainly take a look / apply.
On Tue, 2021-02-02 at 13:24 -0800, Jakub Kicinski wrote: > On Mon, 01 Feb 2021 23:31:15 -0800 Saeed Mahameed wrote: ... > > > > Jakub, it is not only about installation dependencies, the issue is > > more critical than this, > > > > We had some other issues with similar dependency problem where > > mlx5_core had hard dependency with netfilter, firewalld when > > disabled, > > removes netfilter and all its dependencies including mlx5, this is > > a no > > go for our users. > > > > Again, having a hard dependency between a hardware driver and a > > peripheral module in the kernel is a bad design. > > That is not the point. > > The technical problem is minor, and it's a problem for _your_ driver. > Yet, it appears to be my responsibility to make sure the patch even > compiles. > I understand your frustration, We should have been more professional with this patch submission, > I believe there should be a limit to the ignorance a community > volunteer is expected to put up with when dealing with patches > from and for the benefit of a commercial vendor. > totally agree, we have the tools internally to avoid clutter in mailing list and we do this for pure mlx5 patches, but for net patches, people tend to hurry and skip the queue so they get feedback ASAP.. this doesn't make it right, I will work to improve this. > This is up for discussion, if you disagree let's talk it out. I'm > not particularly patient (to put it mildly), but I don't understand > how v5 could have built, and yet v6 gets posted with the same exact > problem :/ > given the circumstance i would've done the same, even on v4.. sorry for the inconvenience .. :(.. thanks for your patience. > So from my perspective it seems like the right step to push back. And I back you up ! > If you, Tariq, Jiri, Ido or any other seasoned kernel contributor > reposts this after making sure it's up to snuff themselves I will > most certainly take a look / apply. My point wasn't about psample, it's about hw drivers vs stack/modules dependency in general, maybe I used the wrong patch to discuss this matter :D.. I will post a separate RFC for discussion later not related to psample at all. this patch smells so bad we can't even discuss the general issue here .. Again thanks for your review and patience.
Hi Jakub, On 2/3/2021 5:24 AM, Jakub Kicinski wrote: > On Mon, 01 Feb 2021 23:31:15 -0800 Saeed Mahameed wrote: >> On Mon, 2021-02-01 at 17:14 -0800, Jakub Kicinski wrote: >>> On Mon, 1 Feb 2021 10:04:12 +0800 Chris Mi wrote: >>>> In order to send sampled packets to userspace, NIC driver calls >>>> psample api directly. But it creates a hard dependency on module >>>> psample. Introduce psample_ops to remove the hard dependency. >>>> It is initialized when psample module is loaded and set to NULL >>>> when the module is unloaded. >>>> >>>> Reported-by: kernel test robot <lkp@intel.com> >>>> Signed-off-by: Chris Mi <cmi@nvidia.com> >>>> Reviewed-by: Jiri Pirko <jiri@nvidia.com> >>> The necessity of making this change is not obvious (you can fix the >>> distro scripts instead), you did not include a clarification in the >>> commit message even though two people asked you why it's needed and >>> on top of that you keep sending code which doesn't build. >>> >>> Please consider this change rejected and do not send a v7. >> Jakub, it is not only about installation dependencies, the issue is >> more critical than this, >> >> We had some other issues with similar dependency problem where >> mlx5_core had hard dependency with netfilter, firewalld when disabled, >> removes netfilter and all its dependencies including mlx5, this is a no >> go for our users. >> >> Again, having a hard dependency between a hardware driver and a >> peripheral module in the kernel is a bad design. > That is not the point. > > The technical problem is minor, and it's a problem for _your_ driver. > Yet, it appears to be my responsibility to make sure the patch even > compiles. > > I believe there should be a limit to the ignorance a community > volunteer is expected to put up with when dealing with patches > from and for the benefit of a commercial vendor. > > This is up for discussion, if you disagree let's talk it out. I'm > not particularly patient (to put it mildly), but I don't understand > how v5 could have built, and yet v6 gets posted with the same exact > problem :/ > > So from my perspective it seems like the right step to push back. > If you, Tariq, Jiri, Ido or any other seasoned kernel contributor > reposts this after making sure it's up to snuff themselves I will > most certainly take a look / apply. Just now I tested v5 using sparse. I did hit some errors for psample. The reason I didn't hit it is because I only build the psample module. But I forget I changed the kernel. So I should build the whole kernel. I'm really sorry that I waste you a lot of time for this bad quality patch. You know usually Saeed submits most of the patches on behalf of us. So I'm not very familiar with rules here. So how about I submit v7 based on v4. I know you are very busy, if it is not ok, I'll wait for Saeed's further information about next step. Thanks, Chris
diff --git a/include/net/psample.h b/include/net/psample.h index 68ae16bb0a4a..d0f1cfc56f6f 100644 --- a/include/net/psample.h +++ b/include/net/psample.h @@ -14,6 +14,15 @@ struct psample_group { struct rcu_head rcu; }; +struct psample_ops { + void (*sample_packet)(struct psample_group *group, struct sk_buff *skb, + u32 trunc_size, int in_ifindex, int out_ifindex, + u32 sample_rate); + +}; + +extern const struct psample_ops __rcu *psample_ops __read_mostly; + struct psample_group *psample_group_get(struct net *net, u32 group_num); void psample_group_take(struct psample_group *group); void psample_group_put(struct psample_group *group); @@ -35,4 +44,21 @@ static inline void psample_sample_packet(struct psample_group *group, #endif +static inline void +psample_nic_sample_packet(struct psample_group *group, + struct sk_buff *skb, u32 trunc_size, + int in_ifindex, int out_ifindex, + u32 sample_rate) +{ + const struct psample_ops *ops; + + rcu_read_lock(); + ops = rcu_dereference(psample_ops); + if (ops) + ops->sample_packet(group, skb, trunc_size, + in_ifindex, out_ifindex, + sample_rate); + rcu_read_unlock(); +} + #endif /* __NET_PSAMPLE_H */ diff --git a/net/psample/psample.c b/net/psample/psample.c index 33e238c965bd..983ca5b698fe 100644 --- a/net/psample/psample.c +++ b/net/psample/psample.c @@ -8,6 +8,7 @@ #include <linux/kernel.h> #include <linux/skbuff.h> #include <linux/module.h> +#include <linux/rcupdate.h> #include <net/net_namespace.h> #include <net/sock.h> #include <net/netlink.h> @@ -35,6 +36,10 @@ static const struct genl_multicast_group psample_nl_mcgrps[] = { static struct genl_family psample_nl_family __ro_after_init; +static const struct psample_ops psample_sample_ops = { + .sample_packet = psample_sample_packet, +}; + static int psample_group_nl_fill(struct sk_buff *msg, struct psample_group *group, enum psample_command cmd, u32 portid, u32 seq, @@ -456,11 +461,18 @@ EXPORT_SYMBOL_GPL(psample_sample_packet); static int __init psample_module_init(void) { - return genl_register_family(&psample_nl_family); + int ret; + + ret = genl_register_family(&psample_nl_family); + if (!ret) + RCU_INIT_POINTER(psample_ops, &psample_sample_ops); + return ret; } static void __exit psample_module_exit(void) { + rcu_assign_pointer(psample_ops, NULL); + synchronize_rcu(); genl_unregister_family(&psample_nl_family); } diff --git a/net/sched/Makefile b/net/sched/Makefile index dd14ef413fda..0d92bb98bb26 100644 --- a/net/sched/Makefile +++ b/net/sched/Makefile @@ -3,7 +3,7 @@ # Makefile for the Linux Traffic Control Unit. # -obj-y := sch_generic.o sch_mq.o +obj-y := sch_generic.o sch_mq.o psample_stub.o obj-$(CONFIG_INET) += sch_frag.o obj-$(CONFIG_NET_SCHED) += sch_api.o sch_blackhole.o diff --git a/net/sched/psample_stub.c b/net/sched/psample_stub.c new file mode 100644 index 000000000000..0541b8c5100d --- /dev/null +++ b/net/sched/psample_stub.c @@ -0,0 +1,5 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2021 Mellanox Technologies. */ + +const struct psample_ops __rcu *psample_ops __read_mostly; +EXPORT_SYMBOL_GPL(psample_ops);