diff mbox series

[v2,net] net/sched: act_mpls: Add softdep on mpls_gso.ko

Message ID 1f6cab15bbd15666795061c55563aaf6a386e90e.1603708007.git.gnault@redhat.com (mailing list archive)
State Not Applicable
Delegated to: Netdev Maintainers
Headers show
Series [v2,net] net/sched: act_mpls: Add softdep on mpls_gso.ko | expand

Commit Message

Guillaume Nault Oct. 26, 2020, 10:29 a.m. UTC
TCA_MPLS_ACT_PUSH and TCA_MPLS_ACT_MAC_PUSH might be used on gso
packets. Such packets will thus require mpls_gso.ko for segmentation.

v2: Drop dependency on CONFIG_NET_MPLS_GSO in Kconfig (from Jakub and
    David).

Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC")
Signed-off-by: Guillaume Nault <gnault@redhat.com>
---
 net/sched/act_mpls.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Cong Wang Oct. 27, 2020, 5:28 p.m. UTC | #1
On Mon, Oct 26, 2020 at 4:23 AM Guillaume Nault <gnault@redhat.com> wrote:
>
> TCA_MPLS_ACT_PUSH and TCA_MPLS_ACT_MAC_PUSH might be used on gso
> packets. Such packets will thus require mpls_gso.ko for segmentation.

Any reason not to call request_module() at run time?
Guillaume Nault Oct. 27, 2020, 9:39 p.m. UTC | #2
On Tue, Oct 27, 2020 at 10:28:29AM -0700, Cong Wang wrote:
> On Mon, Oct 26, 2020 at 4:23 AM Guillaume Nault <gnault@redhat.com> wrote:
> >
> > TCA_MPLS_ACT_PUSH and TCA_MPLS_ACT_MAC_PUSH might be used on gso
> > packets. Such packets will thus require mpls_gso.ko for segmentation.
> 
> Any reason not to call request_module() at run time?

So that mpls_gso would be loaded only when initialising the
TCA_MPLS_ACT_PUSH or TCA_MPLS_ACT_MAC_PUSH modes?

That could be done, but the dependency on mpls_gso wouldn't be visible
anymore with modinfo. I don't really mind, I just felt that such
information could be important for the end user.
David Ahern Oct. 27, 2020, 9:51 p.m. UTC | #3
On 10/27/20 3:39 PM, Guillaume Nault wrote:
> On Tue, Oct 27, 2020 at 10:28:29AM -0700, Cong Wang wrote:
>> On Mon, Oct 26, 2020 at 4:23 AM Guillaume Nault <gnault@redhat.com> wrote:
>>>
>>> TCA_MPLS_ACT_PUSH and TCA_MPLS_ACT_MAC_PUSH might be used on gso
>>> packets. Such packets will thus require mpls_gso.ko for segmentation.
>>
>> Any reason not to call request_module() at run time?
> 
> So that mpls_gso would be loaded only when initialising the
> TCA_MPLS_ACT_PUSH or TCA_MPLS_ACT_MAC_PUSH modes?
> 
> That could be done, but the dependency on mpls_gso wouldn't be visible
> anymore with modinfo. I don't really mind, I just felt that such
> information could be important for the end user.
> 

I think the explicit dependency via modinfo is better.
Jakub Kicinski Oct. 28, 2020, 12:19 a.m. UTC | #4
On Mon, 26 Oct 2020 11:29:45 +0100 Guillaume Nault wrote:
> TCA_MPLS_ACT_PUSH and TCA_MPLS_ACT_MAC_PUSH might be used on gso
> packets. Such packets will thus require mpls_gso.ko for segmentation.
> 
> v2: Drop dependency on CONFIG_NET_MPLS_GSO in Kconfig (from Jakub and
>     David).
> 
> Fixes: 2a2ea50870ba ("net: sched: add mpls manipulation actions to TC")
> Signed-off-by: Guillaume Nault <gnault@redhat.com>

Applied, thanks!
Cong Wang Oct. 28, 2020, 7:35 p.m. UTC | #5
On Tue, Oct 27, 2020 at 2:39 PM Guillaume Nault <gnault@redhat.com> wrote:
>
> On Tue, Oct 27, 2020 at 10:28:29AM -0700, Cong Wang wrote:
> > On Mon, Oct 26, 2020 at 4:23 AM Guillaume Nault <gnault@redhat.com> wrote:
> > >
> > > TCA_MPLS_ACT_PUSH and TCA_MPLS_ACT_MAC_PUSH might be used on gso
> > > packets. Such packets will thus require mpls_gso.ko for segmentation.
> >
> > Any reason not to call request_module() at run time?
>
> So that mpls_gso would be loaded only when initialising the
> TCA_MPLS_ACT_PUSH or TCA_MPLS_ACT_MAC_PUSH modes?

Yes, exactly.

>
> That could be done, but the dependency on mpls_gso wouldn't be visible
> anymore with modinfo. I don't really mind, I just felt that such
> information could be important for the end user.

I think the dependency is determined at run time based on
TCA_MPLS_ACT_*, so it should be reflected at run time, rather than at
compile time.

If loading mpls_gso even when not needed is not a big deal, I am fine
with your patch too.

Thanks.
Guillaume Nault Oct. 28, 2020, 9:45 p.m. UTC | #6
On Wed, Oct 28, 2020 at 12:35:17PM -0700, Cong Wang wrote:
> On Tue, Oct 27, 2020 at 2:39 PM Guillaume Nault <gnault@redhat.com> wrote:
> >
> > On Tue, Oct 27, 2020 at 10:28:29AM -0700, Cong Wang wrote:
> > > On Mon, Oct 26, 2020 at 4:23 AM Guillaume Nault <gnault@redhat.com> wrote:
> > > >
> > > > TCA_MPLS_ACT_PUSH and TCA_MPLS_ACT_MAC_PUSH might be used on gso
> > > > packets. Such packets will thus require mpls_gso.ko for segmentation.
> > >
> > > Any reason not to call request_module() at run time?
> >
> > So that mpls_gso would be loaded only when initialising the
> > TCA_MPLS_ACT_PUSH or TCA_MPLS_ACT_MAC_PUSH modes?
> 
> Yes, exactly.
> 
> >
> > That could be done, but the dependency on mpls_gso wouldn't be visible
> > anymore with modinfo. I don't really mind, I just felt that such
> > information could be important for the end user.
> 
> I think the dependency is determined at run time based on
> TCA_MPLS_ACT_*, so it should be reflected at run time, rather than at
> compile time.
> 
> If loading mpls_gso even when not needed is not a big deal, I am fine
> with your patch too.

Loading mpls_gso looks harmless. It just registers GSO handlers for
ETH_P_MPLS_UC and for ETH_P_MPLS_MC with a low priority.

Since we're not adding a build dependency on mpls_gso for act_mpls, I
have a slight preference for having the soft dependency being reported
by modinfo. This gives a chance to the user to figure out that mpls_gso
can be necessary.

> Thanks.
>
diff mbox series

Patch

diff --git a/net/sched/act_mpls.c b/net/sched/act_mpls.c
index f40bf9771cb9..5c7456e5b5cf 100644
--- a/net/sched/act_mpls.c
+++ b/net/sched/act_mpls.c
@@ -426,6 +426,7 @@  static void __exit mpls_cleanup_module(void)
 module_init(mpls_init_module);
 module_exit(mpls_cleanup_module);
 
+MODULE_SOFTDEP("post: mpls_gso");
 MODULE_AUTHOR("Netronome Systems <oss-drivers@netronome.com>");
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("MPLS manipulation actions");