diff options
author | Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> | 2018-06-18 09:09:09 +0000 |
---|---|---|
committer | John Crispin <john@phrozen.org> | 2018-06-18 15:26:41 +0200 |
commit | 0276e1f7608a2b5252aee0c92c9834a150582ffe (patch) | |
tree | 691526f6539f3482d20e57aceb5524716de7b8a4 /target/linux | |
parent | 510f2efab616b8f58100d1c3742aa61e1003e210 (diff) | |
download | upstream-0276e1f7608a2b5252aee0c92c9834a150582ffe.tar.gz upstream-0276e1f7608a2b5252aee0c92c9834a150582ffe.tar.bz2 upstream-0276e1f7608a2b5252aee0c92c9834a150582ffe.zip |
lantiq: atm: fix ifx_atm driver integration
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 David Woodhouse <dwmw2@infradead.org> &
Mathias Kresin <dev@kresin.me>.
Tested-on: lantiq, BT HomeHub 5a
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Diffstat (limited to 'target/linux')
-rw-r--r-- | target/linux/lantiq/patches-4.14/0004-MIPS-lantiq-add-atm-hack.patch | 19 |
1 files changed, 0 insertions, 19 deletions
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..66ca2fd5ac 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 @@ -467,25 +467,6 @@ Signed-off-by: John Crispin <blogic@openwrt.org> struct atm_trafprm { unsigned char traffic_class; /* traffic class (ATM_UBR, ...) */ 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 - 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); -+ - 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 |