All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Kicinski <kuba@kernel.org>
To: Tom Seewald <tseewald@gmail.com>
Cc: netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH] cxbgb4: Fix build failure when CHELSIO_TLS_DEVICE=n
Date: Thu, 19 Nov 2020 09:37:19 -0800	[thread overview]
Message-ID: <20201119093719.15f19884@kicinski-fedora-PC1C0HJN.hsd1.ca.comcast.net> (raw)
In-Reply-To: <CAARYdbg+HsjCBu5vU=aHg-OU8L6u52RUBzrYUTuUMke6bXuV3g@mail.gmail.com>

On Wed, 18 Nov 2020 23:40:40 -0600 Tom Seewald wrote:
> On Tue, Nov 17, 2020 at 4:26 PM Jakub Kicinski <kuba@kernel.org> wrote:
> >
> > On Sun, 15 Nov 2020 20:31:40 -0600 Tom Seewald wrote:  
> > > After commit 9d2e5e9eeb59 ("cxgb4/ch_ktls: decrypted bit is not enough")
> > > building the kernel with CHELSIO_T4=y and CHELSIO_TLS_DEVICE=n results
> > > in the following error:
> > >
> > > ld: drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.o: in function
> > > `cxgb_select_queue':
> > > cxgb4_main.c:(.text+0x2dac): undefined reference to `tls_validate_xmit_skb'
> > >
> > > This is caused by cxgb_select_queue() calling cxgb4_is_ktls_skb() without
> > > checking if CHELSIO_TLS_DEVICE=y. Fix this by calling cxgb4_is_ktls_skb()
> > > only when this config option is enabled.
> > >
> > > Fixes: 9d2e5e9eeb59 ("cxgb4/ch_ktls: decrypted bit is not enough")
> > > Signed-off-by: Tom Seewald <tseewald@gmail.com>
> > > ---
> > >  drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 4 +++-
> > >  1 file changed, 3 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
> > > index 7fd264a6d085..8e8783afd6df 100644
> > > --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
> > > +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
> > > @@ -1176,7 +1176,9 @@ static u16 cxgb_select_queue(struct net_device *dev, struct sk_buff *skb,
> > >               txq = netdev_pick_tx(dev, skb, sb_dev);
> > >               if (xfrm_offload(skb) || is_ptp_enabled(skb, dev) ||
> > >                   skb->encapsulation ||
> > > -                 cxgb4_is_ktls_skb(skb) ||
> > > +#if IS_ENABLED(CONFIG_CHELSIO_TLS_DEVICE)
> > > +             cxgb4_is_ktls_skb(skb) ||
> > > +#endif /* CHELSIO_TLS_DEVICE */
> > >                   (proto != IPPROTO_TCP && proto != IPPROTO_UDP))
> > >                       txq = txq % pi->nqsets;
> > >  
> >
> > The tls header already tries to solve this issue, it just does it
> > poorly. This is a better fix:
> >
> > diff --git a/include/net/tls.h b/include/net/tls.h
> > index baf1e99d8193..2ff3f4f7954a 100644
> > --- a/include/net/tls.h
> > +++ b/include/net/tls.h
> > @@ -441,11 +441,11 @@ struct sk_buff *
> >  tls_validate_xmit_skb(struct sock *sk, struct net_device *dev,
> >                       struct sk_buff *skb);
> >
> >  static inline bool tls_is_sk_tx_device_offloaded(struct sock *sk)
> >  {
> > -#ifdef CONFIG_SOCK_VALIDATE_XMIT
> > +#ifdef CONFIG_TLS_DEVICE
> >         return sk_fullsock(sk) &&
> >                (smp_load_acquire(&sk->sk_validate_xmit_skb) ==
> >                &tls_validate_xmit_skb);
> >  #else
> >         return false;
> >
> >
> > Please test this and submit if it indeed solves the problem.
> >
> > Thanks!  
> 
> Hi Jakub,
> 
> Thanks for the reply, unfortunately that patch does not resolve the
> issue, I still get the same error as before. After looking into this a
> bit further, the issue seems to be with CONFIG_TLS=m as everything
> works when CONFIG_TLS=y.
> 
> I also see that there was a similar issue [1] reported by Intel's
> kbuild test robot where the cxgb4 driver isn't able to see the TLS
> symbols when CONFIG_TLS=m.

Interesting. Does your original patch solve the allyesconfig + TLS=m
problem?

Seems to me that CHELSIO_T4 should depend on (TLS || TLS=n), the
CONFIG_CHELSIO_TLS_DEVICE has the dependency but AFAICT nothing prevents
CONFIG_CHELSIO_TLS_DEVICE=m and CHELSIO_T4=y and cxgb4_main.c is under
the latter.

  reply	other threads:[~2020-11-19 17:37 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-16  2:31 [PATCH] cxbgb4: Fix build failure when CHELSIO_TLS_DEVICE=n Tom Seewald
2020-11-17 22:25 ` Jakub Kicinski
2020-11-19  5:40   ` Tom Seewald
2020-11-19 17:37     ` Jakub Kicinski [this message]
2020-11-20  6:54       ` Tom Seewald
2020-11-20 15:35         ` Jakub Kicinski
2020-11-20 19:25           ` [PATCH] cxgb4: Fix build failure when CONFIG_TLS=m Tom Seewald
2020-11-21 21:12             ` Jakub Kicinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201119093719.15f19884@kicinski-fedora-PC1C0HJN.hsd1.ca.comcast.net \
    --to=kuba@kernel.org \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    --cc=tseewald@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.