Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.83 Removed upstreamed: bcm27xx/patches-6.6/950-0483-usb-xhci-borrow-upstream-TRB_FETCH-quirk-on-VL805-ho.patch[1] Manually rebased: bcm27xx/patches-6.6/950-0061-Revert-Revert-xhci-add-quirk-for-host-controllers-th.patch bcm27xx/patches-6.6/950-0485-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch bcm27xx/patches-6.6/950-0519-usb-dwc3-Set-DMA-and-coherent-masks-early.patch All other patches automatically rebased. 1. https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/drivers/usb/host/xhci-pci.c?h=linux-6.6.y&id=c401b1b4b835d66792e884b76264d742a20d931d Build system: x86/64 Build-tested: x86/64 Run-tested: x86/64 Signed-off-by: John Audia <therealgraysky@proton.me> [fixed issues with bcm27xx patches] Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
138 lines
4.0 KiB
Diff
138 lines
4.0 KiB
Diff
From: Subhra Banerjee <subhrax.banerjee@intel.com>
|
|
Date: Fri, 31 Aug 2018 12:01:19 +0530
|
|
Subject: [PATCH] UGW_SW-29163: ATM oam support
|
|
|
|
--- a/drivers/net/ppp/ppp_generic.c
|
|
+++ b/drivers/net/ppp/ppp_generic.c
|
|
@@ -2978,6 +2978,22 @@ char *ppp_dev_name(struct ppp_channel *c
|
|
return name;
|
|
}
|
|
|
|
+/*
|
|
+ * Return the PPP device interface pointer
|
|
+ */
|
|
+struct net_device *ppp_device(struct ppp_channel *chan)
|
|
+{
|
|
+ struct channel *pch = chan->ppp;
|
|
+ struct net_device *dev = NULL;
|
|
+
|
|
+ if (pch) {
|
|
+ read_lock_bh(&pch->upl);
|
|
+ if (pch->ppp && pch->ppp->dev)
|
|
+ dev = pch->ppp->dev;
|
|
+ read_unlock_bh(&pch->upl);
|
|
+ }
|
|
+ return dev;
|
|
+}
|
|
|
|
/*
|
|
* Disconnect a channel from the generic layer.
|
|
@@ -3624,6 +3640,7 @@ EXPORT_SYMBOL(ppp_unregister_channel);
|
|
EXPORT_SYMBOL(ppp_channel_index);
|
|
EXPORT_SYMBOL(ppp_unit_number);
|
|
EXPORT_SYMBOL(ppp_dev_name);
|
|
+EXPORT_SYMBOL(ppp_device);
|
|
EXPORT_SYMBOL(ppp_input);
|
|
EXPORT_SYMBOL(ppp_input_error);
|
|
EXPORT_SYMBOL(ppp_output_wakeup);
|
|
--- a/include/linux/ppp_channel.h
|
|
+++ b/include/linux/ppp_channel.h
|
|
@@ -76,6 +76,9 @@ extern int ppp_unit_number(struct ppp_ch
|
|
/* Get the device name associated with a channel, or NULL if none */
|
|
extern char *ppp_dev_name(struct ppp_channel *);
|
|
|
|
+/* Get the device pointer associated with a channel, or NULL if none */
|
|
+extern struct net_device *ppp_device(struct ppp_channel *);
|
|
+
|
|
/*
|
|
* SMP locking notes:
|
|
* The channel code must ensure that when it calls ppp_unregister_channel,
|
|
--- a/net/atm/Kconfig
|
|
+++ b/net/atm/Kconfig
|
|
@@ -56,6 +56,12 @@ config ATM_MPOA
|
|
subnetwork boundaries. These shortcut connections bypass routers
|
|
enhancing overall network performance.
|
|
|
|
+config ATM_MPOA_INTEL_DSL_PHY_SUPPORT
|
|
+ bool "Intel DSL Phy MPOA support"
|
|
+ depends on ATM && INET && ATM_MPOA!=n
|
|
+ help
|
|
+ Add support for Intel DSL Phy ATM MPOA
|
|
+
|
|
config ATM_BR2684
|
|
tristate "RFC1483/2684 Bridged protocols"
|
|
depends on ATM && INET
|
|
--- a/net/atm/br2684.c
|
|
+++ b/net/atm/br2684.c
|
|
@@ -598,6 +598,11 @@ static int br2684_regvcc(struct atm_vcc
|
|
atmvcc->push = br2684_push;
|
|
atmvcc->pop = br2684_pop;
|
|
atmvcc->release_cb = br2684_release_cb;
|
|
+#if IS_ENABLED(CONFIG_ATM_MPOA_INTEL_DSL_PHY_SUPPORT)
|
|
+ if (atm_hook_mpoa_setup) /* IPoA or EoA w/o FCS */
|
|
+ atm_hook_mpoa_setup(atmvcc, brdev->payload == p_routed ? 3 : 0,
|
|
+ brvcc->encaps == BR2684_ENCAPS_LLC ? 1 : 0, net_dev);
|
|
+#endif
|
|
atmvcc->owner = THIS_MODULE;
|
|
|
|
/* initialize netdev carrier state */
|
|
--- a/net/atm/common.c
|
|
+++ b/net/atm/common.c
|
|
@@ -137,6 +137,11 @@ static struct proto vcc_proto = {
|
|
.release_cb = vcc_release_cb,
|
|
};
|
|
|
|
+#if IS_ENABLED(CONFIG_ATM_MPOA_INTEL_DSL_PHY_SUPPORT)
|
|
+void (*atm_hook_mpoa_setup)(struct atm_vcc *, int, int, struct net_device *) = NULL;
|
|
+EXPORT_SYMBOL(atm_hook_mpoa_setup);
|
|
+#endif
|
|
+
|
|
int vcc_create(struct net *net, struct socket *sock, int protocol, int family, int kern)
|
|
{
|
|
struct sock *sk;
|
|
--- a/net/atm/common.h
|
|
+++ b/net/atm/common.h
|
|
@@ -53,4 +53,6 @@ int svc_change_qos(struct atm_vcc *vcc,s
|
|
|
|
void atm_dev_release_vccs(struct atm_dev *dev);
|
|
|
|
+extern void (*atm_hook_mpoa_setup)(struct atm_vcc *, int, int, struct net_device *);
|
|
+
|
|
#endif
|
|
--- a/net/atm/mpc.c
|
|
+++ b/net/atm/mpc.c
|
|
@@ -31,6 +31,7 @@
|
|
/* Modular too */
|
|
#include <linux/module.h>
|
|
|
|
+#include "common.h"
|
|
#include "lec.h"
|
|
#include "mpc.h"
|
|
#include "resources.h"
|
|
@@ -645,6 +646,10 @@ static int atm_mpoa_vcc_attach(struct at
|
|
vcc->proto_data = mpc->dev;
|
|
vcc->push = mpc_push;
|
|
|
|
+#if IS_ENABLED(CONFIG_ATM_MPOA_INTEL_DSL_PHY_SUPPORT)
|
|
+ if (atm_hook_mpoa_setup) /* IPoA, LLC */
|
|
+ atm_hook_mpoa_setup(vcc, 3, 1, mpc->dev);
|
|
+#endif
|
|
return 0;
|
|
}
|
|
|
|
--- a/net/atm/pppoatm.c
|
|
+++ b/net/atm/pppoatm.c
|
|
@@ -422,6 +422,12 @@ static int pppoatm_assign_vcc(struct atm
|
|
atmvcc->user_back = pvcc;
|
|
atmvcc->push = pppoatm_push;
|
|
atmvcc->pop = pppoatm_pop;
|
|
+#if IS_ENABLED(CONFIG_ATM_MPOA_INTEL_DSL_PHY_SUPPORT)
|
|
+ if (atm_hook_mpoa_setup) /* PPPoA */
|
|
+ atm_hook_mpoa_setup(atmvcc, 2,
|
|
+ pvcc->encaps == e_llc ? 1 : 0,
|
|
+ ppp_device(&pvcc->chan));
|
|
+#endif
|
|
atmvcc->release_cb = pppoatm_release_cb;
|
|
__module_get(THIS_MODULE);
|
|
atmvcc->owner = THIS_MODULE;
|