diff mbox series

[OpenWrt-Devel,1/2] lantiq: atm: fix ifx_atm driver integration

Message ID mailman.4713.1529132806.25356.openwrt-devel@lists.openwrt.org
State Superseded
Headers show
Series [OpenWrt-Devel,1/2] lantiq: atm: fix ifx_atm driver integration | expand

Commit Message

Thomas Richard via openwrt-devel June 16, 2018, 7:06 a.m. UTC
The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
When upstream kernel introduced commit c55fa3cccbc2c672e7f118be8f7484e53a8e9e77
we incorrectly updated our hack integration patch that updates atm/common.c

+++ b/net/atm/common.c
@@ -62,10 +62,16 @@ static void vcc_remove_socket(struct soc
        write_unlock_irq(&vcc_sklist_lock);
 }

+struct sk_buff* (*ifx_atm_alloc_tx)(struct atm_vcc *, unsigned int) = NULL;
+EXPORT_SYMBOL(ifx_atm_alloc_tx);
+
 static bool vcc_tx_ready(struct atm_vcc *vcc, unsigned int size)
 {
        struct sock *sk = sk_atm(vcc);

+       if (ifx_atm_alloc_tx != NULL)
+               return ifx_atm_alloc_tx(vcc, size)

The correct solution is to drop our ifx_atm_alloc_tx replacement hack
entirely and let the kernel do its thing.

In reality neither pppoatm or BR2684 interfaces actually hit this code,
so the incorrect integration would only be noticed with direct socket
calls which we are unaware of a use-case.

This is not the solution to pppoatm vc-mux failing to work which started
the whole investigation, but let's fix it up anyway.

With sincerest thanks to dwmw2 & mkresin.

Tested-on: lantiq, BT HomeHub 5a

Signed-of-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
---
 .../lantiq/patches-4.14/0004-MIPS-lantiq-add-atm-hack.patch      | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

Comments

David Woodhouse June 16, 2018, 9:43 a.m. UTC | #1
> The correct solution is to drop our ifx_atm_alloc_tx replacement hack
> entirely and let the kernel do its thing.

You need to kill it in the ltq-atm driver too, surely? If you only kill
the hook, the module won't load.
Thomas Richard via openwrt-devel June 17, 2018, 3:20 a.m. UTC | #2
The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
> On 16 Jun 2018, at 10:43, David Woodhouse <dwmw2@infradead.org> wrote:
> 
> 
>> The correct solution is to drop our ifx_atm_alloc_tx replacement hack
>> entirely and let the kernel do its thing.
> 
> You need to kill it in the ltq-atm driver too, surely? If you only kill
> the hook, the module won't load.

To paraphrase Edmund Blackadder III and the ‘Ravelling Nancy’ - I am one of these people who are quite happy
to use modules, but have no idea how they work :-)

# lsmod | grep atm
atm                    38610  6 ltq_atm_vr9,pppoatm,br2684
drv_mei_cpe           147967  2 ltq_atm_vr9,drv_dsl_cpe_api
ltq_atm_vr9            28749  1 
ppp_generic            24546  8 pppoe,pppox,ppp_async,pppoatm
pppoatm                 4080  1 

Looks okay to me but happy to take advice/instruction.

Cheers,

Kevin
diff mbox series

Patch

diff --git a/target/linux/lantiq/patches-4.14/0004-MIPS-lantiq-add-atm-hack.patch b/target/linux/lantiq/patches-4.14/0004-MIPS-lantiq-add-atm-hack.patch
index 2c73cec55c..a3441f8533 100644
--- a/target/linux/lantiq/patches-4.14/0004-MIPS-lantiq-add-atm-hack.patch
+++ b/target/linux/lantiq/patches-4.14/0004-MIPS-lantiq-add-atm-hack.patch
@@ -469,7 +469,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
  	int		max_pcr;	/* maximum PCR in cells per second */
 --- a/net/atm/common.c
 +++ b/net/atm/common.c
-@@ -62,10 +62,16 @@ static void vcc_remove_socket(struct soc
+@@ -62,6 +62,9 @@ static void vcc_remove_socket(struct soc
  	write_unlock_irq(&vcc_sklist_lock);
  }
  
@@ -479,13 +479,6 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
  static bool vcc_tx_ready(struct atm_vcc *vcc, unsigned int size)
  {
  	struct sock *sk = sk_atm(vcc);
- 
-+	if (ifx_atm_alloc_tx != NULL)
-+		return ifx_atm_alloc_tx(vcc, size);
-+
- 	if (sk_wmem_alloc_get(sk) && !atm_may_send(vcc, size)) {
- 		pr_debug("Sorry: wmem_alloc = %d, size = %d, sndbuf = %d\n",
- 			 sk_wmem_alloc_get(sk), size, sk->sk_sndbuf);
 --- a/net/atm/proc.c
 +++ b/net/atm/proc.c
 @@ -155,7 +155,7 @@ static void *vcc_seq_next(struct seq_fil