mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-21 16:32:59 +02:00
backports: add upstream driver fixes.
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
@@ -112,6 +112,11 @@ ifeq "$(KCFG)" "-rpi"
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch
|
||||
endif
|
||||
|
||||
# Patches form stable linux updates
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports/backports-linux-upstream-1.patch
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports/backports-linux-upstream-2.patch
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/backports/backports-linux-upstream-3.patch
|
||||
|
||||
# generate config
|
||||
cd $(DIR_APP) && make KLIB=/lib/modules/$(KVER)-$(VERSUFIX)/ allmodconfig
|
||||
|
||||
|
||||
60
src/patches/backports/backports-linux-upstream-1.patch
Normal file
60
src/patches/backports/backports-linux-upstream-1.patch
Normal file
@@ -0,0 +1,60 @@
|
||||
From 5bb6f6e1d44aa91323857715dfddb63337f8307b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no>
|
||||
Date: Sun, 3 Jul 2016 22:24:50 +0200
|
||||
Subject: cdc_ncm: workaround for EM7455 "silent" data interface
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
[ Upstream commit c086e7096170390594c425114d98172bc9aceb8a ]
|
||||
|
||||
Several Lenovo users have reported problems with their Sierra
|
||||
Wireless EM7455 modem. The driver has loaded successfully and
|
||||
the MBIM management channel has appeared to work, including
|
||||
establishing a connection to the mobile network. But no frames
|
||||
have been received over the data interface.
|
||||
|
||||
The problem affects all EM7455 and MC7455, and is assumed to
|
||||
affect other modems based on the same Qualcomm chipset and
|
||||
baseband firmware.
|
||||
|
||||
Testing narrowed the problem down to what seems to be a
|
||||
firmware timing bug during initialization. Adding a short sleep
|
||||
while probing is sufficient to make the problem disappear.
|
||||
Experiments have shown that 1-2 ms is too little to have any
|
||||
effect, while 10-20 ms is enough to reliably succeed.
|
||||
|
||||
Reported-by: Stefan Armbruster <ml001@armbruster-it.de>
|
||||
Reported-by: Ralph Plawetzki <ralph@purejava.org>
|
||||
Reported-by: Andreas Fett <andreas.fett@secunet.com>
|
||||
Reported-by: Rasmus Lerdorf <rasmus@lerdorf.com>
|
||||
Reported-by: Samo Ratnik <samo.ratnik@gmail.com>
|
||||
Reported-and-tested-by: Aleksander Morgado <aleksander@aleksander.es>
|
||||
Signed-off-by: Bjørn Mork <bjorn@mork.no>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/net/usb/cdc_ncm.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
|
||||
index c663722..584504e 100644
|
||||
--- a/drivers/net/usb/cdc_ncm.c
|
||||
+++ b/drivers/net/usb/cdc_ncm.c
|
||||
@@ -438,6 +438,13 @@ advance:
|
||||
if (cdc_ncm_setup(dev))
|
||||
goto error2;
|
||||
|
||||
+ /* Some firmwares need a pause here or they will silently fail
|
||||
+ * to set up the interface properly. This value was decided
|
||||
+ * empirically on a Sierra Wireless MC7455 running 02.08.02.00
|
||||
+ * firmware.
|
||||
+ */
|
||||
+ usleep_range(10000, 20000);
|
||||
+
|
||||
/* configure data interface */
|
||||
temp = usb_set_interface(dev->udev, iface_no, data_altsetting);
|
||||
if (temp) {
|
||||
--
|
||||
cgit v0.12
|
||||
|
||||
43
src/patches/backports/backports-linux-upstream-2.patch
Normal file
43
src/patches/backports/backports-linux-upstream-2.patch
Normal file
@@ -0,0 +1,43 @@
|
||||
From d6b8a68ac7b6d2e241f8d34b769c98a1793d9124 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Wed, 20 Apr 2016 23:23:08 +0100
|
||||
Subject: atl2: Disable unimplemented scatter/gather feature
|
||||
|
||||
[ Upstream commit f43bfaeddc79effbf3d0fcb53ca477cca66f3db8 ]
|
||||
|
||||
atl2 includes NETIF_F_SG in hw_features even though it has no support
|
||||
for non-linear skbs. This bug was originally harmless since the
|
||||
driver does not claim to implement checksum offload and that used to
|
||||
be a requirement for SG.
|
||||
|
||||
Now that SG and checksum offload are independent features, if you
|
||||
explicitly enable SG *and* use one of the rare protocols that can use
|
||||
SG without checkusm offload, this potentially leaks sensitive
|
||||
information (before you notice that it just isn't working). Therefore
|
||||
this obscure bug has been designated CVE-2016-2117.
|
||||
|
||||
Reported-by: Justin Yackoski <jyackoski@crypto-nite.com>
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Fixes: ec5f06156423 ("net: Kill link between CSUM and SG features.")
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/net/ethernet/atheros/atlx/atl2.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/atheros/atlx/atl2.c b/drivers/net/ethernet/atheros/atlx/atl2.c
|
||||
index 265ce1b..96fe542 100644
|
||||
--- a/drivers/net/ethernet/atheros/atlx/atl2.c
|
||||
+++ b/drivers/net/ethernet/atheros/atlx/atl2.c
|
||||
@@ -1413,7 +1413,7 @@ static int atl2_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
|
||||
err = -EIO;
|
||||
|
||||
- netdev->hw_features = NETIF_F_SG | NETIF_F_HW_VLAN_CTAG_RX;
|
||||
+ netdev->hw_features = NETIF_F_HW_VLAN_CTAG_RX;
|
||||
netdev->features |= (NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX);
|
||||
|
||||
/* Init PHY as early as possible due to power saving issue */
|
||||
--
|
||||
cgit v0.12
|
||||
|
||||
53
src/patches/backports/backports-linux-upstream-3.patch
Normal file
53
src/patches/backports/backports-linux-upstream-3.patch
Normal file
@@ -0,0 +1,53 @@
|
||||
From fc70a4a5cb616bf390cee03390265045de5cf06a Mon Sep 17 00:00:00 2001
|
||||
From: Feng Tang <feng.tang@intel.com>
|
||||
Date: Fri, 24 Jun 2016 15:26:05 +0800
|
||||
Subject: net: alx: Work around the DMA RX overflow issue
|
||||
|
||||
[ Upstream commit 881d0327db37ad917a367c77aff1afa1ee41e0a9 ]
|
||||
|
||||
Note: This is a verified backported patch for stable 4.4 kernel, and it
|
||||
could also be applied to 4.3/4.2/4.1/3.18/3.16
|
||||
|
||||
There is a problem with alx devices, that the network link will be
|
||||
lost in 1-5 minutes after the device is up.
|
||||
|
||||
>From debugging without datasheet, we found the error always
|
||||
happen when the DMA RX address is set to 0x....fc0, which is very
|
||||
likely to be a HW/silicon problem.
|
||||
|
||||
This patch will apply rx skb with 64 bytes longer space, and if the
|
||||
allocated skb has a 0x...fc0 address, it will use skb_resever(skb, 64)
|
||||
to advance the address, so that the RX overflow can be avoided.
|
||||
|
||||
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70761
|
||||
Signed-off-by: Feng Tang <feng.tang@intel.com>
|
||||
Suggested-by: Eric Dumazet <edumazet@google.com>
|
||||
Tested-by: Ole Lukoie <olelukoie@mail.ru>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/net/ethernet/atheros/alx/main.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c
|
||||
index 3e1d7d2..7585960 100644
|
||||
--- a/drivers/net/ethernet/atheros/alx/main.c
|
||||
+++ b/drivers/net/ethernet/atheros/alx/main.c
|
||||
@@ -86,9 +86,14 @@ static int alx_refill_rx_ring(struct alx_priv *alx, gfp_t gfp)
|
||||
while (!cur_buf->skb && next != rxq->read_idx) {
|
||||
struct alx_rfd *rfd = &rxq->rfd[cur];
|
||||
|
||||
- skb = __netdev_alloc_skb(alx->dev, alx->rxbuf_size, gfp);
|
||||
+ skb = __netdev_alloc_skb(alx->dev, alx->rxbuf_size + 64, gfp);
|
||||
if (!skb)
|
||||
break;
|
||||
+
|
||||
+ /* Workround for the HW RX DMA overflow issue */
|
||||
+ if (((unsigned long)skb->data & 0xfff) == 0xfc0)
|
||||
+ skb_reserve(skb, 64);
|
||||
+
|
||||
dma = dma_map_single(&alx->hw.pdev->dev,
|
||||
skb->data, alx->rxbuf_size,
|
||||
DMA_FROM_DEVICE);
|
||||
--
|
||||
cgit v0.12
|
||||
|
||||
Reference in New Issue
Block a user