Add missing 3.11 patches from F19
This commit is contained in:
parent
4e941e3a2f
commit
20a0130a42
|
@ -0,0 +1,59 @@
|
|||
This reverts commit 9483f40d8d01918b399b4e24d0c1111db0afffeb.
|
||||
|
||||
Some devices stop to connect with above commit, see:
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=61621
|
||||
|
||||
Since there is no clear benefit of having MSI enabled, just revert
|
||||
change to fix the problem.
|
||||
|
||||
Cc: stable@vger.kernel.org # 3.11+
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2x00pci.c | 9 +--------
|
||||
1 file changed, 1 insertion(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/rt2x00/rt2x00pci.c b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
index 76d95de..dc49e52 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
@@ -105,13 +105,11 @@ int rt2x00pci_probe(struct pci_dev *pci_dev, const struct rt2x00_ops *ops)
|
||||
goto exit_release_regions;
|
||||
}
|
||||
|
||||
- pci_enable_msi(pci_dev);
|
||||
-
|
||||
hw = ieee80211_alloc_hw(sizeof(struct rt2x00_dev), ops->hw);
|
||||
if (!hw) {
|
||||
rt2x00_probe_err("Failed to allocate hardware\n");
|
||||
retval = -ENOMEM;
|
||||
- goto exit_disable_msi;
|
||||
+ goto exit_release_regions;
|
||||
}
|
||||
|
||||
pci_set_drvdata(pci_dev, hw);
|
||||
@@ -152,9 +150,6 @@ exit_free_reg:
|
||||
exit_free_device:
|
||||
ieee80211_free_hw(hw);
|
||||
|
||||
-exit_disable_msi:
|
||||
- pci_disable_msi(pci_dev);
|
||||
-
|
||||
exit_release_regions:
|
||||
pci_release_regions(pci_dev);
|
||||
|
||||
@@ -179,8 +174,6 @@ void rt2x00pci_remove(struct pci_dev *pci_dev)
|
||||
rt2x00pci_free_reg(rt2x00dev);
|
||||
ieee80211_free_hw(hw);
|
||||
|
||||
- pci_disable_msi(pci_dev);
|
||||
-
|
||||
/*
|
||||
* Free the PCI device data.
|
||||
*/
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
@ -0,0 +1,73 @@
|
|||
commit 5a0068deb611109c5ba77358be533f763f395ee4
|
||||
Author: Neil Horman <nhorman@tuxdriver.com>
|
||||
Date: Fri Sep 27 12:22:15 2013 -0400
|
||||
|
||||
bonding: Fix broken promiscuity reference counting issue
|
||||
|
||||
Recently grabbed this report:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1005567
|
||||
|
||||
Of an issue in which the bonding driver, with an attached vlan encountered the
|
||||
following errors when bond0 was taken down and back up:
|
||||
|
||||
dummy1: promiscuity touches roof, set promiscuity failed. promiscuity feature of
|
||||
device might be broken.
|
||||
|
||||
The error occurs because, during __bond_release_one, if we release our last
|
||||
slave, we take on a random mac address and issue a NETDEV_CHANGEADDR
|
||||
notification. With an attached vlan, the vlan may see that the vlan and bond
|
||||
mac address were in sync, but no longer are. This triggers a call to dev_uc_add
|
||||
and dev_set_rx_mode, which enables IFF_PROMISC on the bond device. Then, when
|
||||
we complete __bond_release_one, we use the current state of the bond flags to
|
||||
determine if we should decrement the promiscuity of the releasing slave. But
|
||||
since the bond changed promiscuity state during the release operation, we
|
||||
incorrectly decrement the slave promisc count when it wasn't in promiscuous mode
|
||||
to begin with, causing the above error
|
||||
|
||||
Fix is pretty simple, just cache the bonding flags at the start of the function
|
||||
and use those when determining the need to set promiscuity.
|
||||
|
||||
This is also needed for the ALLMULTI flag
|
||||
|
||||
CC: Jay Vosburgh <fubar@us.ibm.com>
|
||||
CC: Andy Gospodarek <andy@greyhouse.net>
|
||||
CC: Mark Wu <wudxw@linux.vnet.ibm.com>
|
||||
CC: "David S. Miller" <davem@davemloft.net>
|
||||
Reported-by: Mark Wu <wudxw@linux.vnet.ibm.com>
|
||||
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
|
||||
index 55bbb8b..e883bfe 100644
|
||||
--- a/drivers/net/bonding/bond_main.c
|
||||
+++ b/drivers/net/bonding/bond_main.c
|
||||
@@ -1724,6 +1724,7 @@ static int __bond_release_one(struct net_device *bond_dev,
|
||||
struct bonding *bond = netdev_priv(bond_dev);
|
||||
struct slave *slave, *oldcurrent;
|
||||
struct sockaddr addr;
|
||||
+ int old_flags = bond_dev->flags;
|
||||
netdev_features_t old_features = bond_dev->features;
|
||||
|
||||
/* slave is not a slave or master is not master of this slave */
|
||||
@@ -1855,12 +1856,18 @@ static int __bond_release_one(struct net_device *bond_dev,
|
||||
* bond_change_active_slave(..., NULL)
|
||||
*/
|
||||
if (!USES_PRIMARY(bond->params.mode)) {
|
||||
- /* unset promiscuity level from slave */
|
||||
- if (bond_dev->flags & IFF_PROMISC)
|
||||
+ /* unset promiscuity level from slave
|
||||
+ * NOTE: The NETDEV_CHANGEADDR call above may change the value
|
||||
+ * of the IFF_PROMISC flag in the bond_dev, but we need the
|
||||
+ * value of that flag before that change, as that was the value
|
||||
+ * when this slave was attached, so we cache at the start of the
|
||||
+ * function and use it here. Same goes for ALLMULTI below
|
||||
+ */
|
||||
+ if (old_flags & IFF_PROMISC)
|
||||
dev_set_promiscuity(slave_dev, -1);
|
||||
|
||||
/* unset allmulti level from slave */
|
||||
- if (bond_dev->flags & IFF_ALLMULTI)
|
||||
+ if (old_flags & IFF_ALLMULTI)
|
||||
dev_set_allmulti(slave_dev, -1);
|
||||
|
||||
bond_hw_addr_flush(bond_dev, slave_dev);
|
35
kernel.spec
35
kernel.spec
|
@ -698,6 +698,7 @@ Patch14000: hibernate-freeze-filesystems.patch
|
|||
|
||||
Patch14010: lis3-improve-handling-of-null-rate.patch
|
||||
|
||||
Patch15000: nowatchdog-on-virt.patch
|
||||
|
||||
Patch20000: 0001-efifb-Skip-DMI-checks-if-the-bootloader-knows-what-i.patch
|
||||
Patch20001: 0002-x86-EFI-Calculate-the-EFI-framebuffer-size-instead-o.patch
|
||||
|
@ -747,10 +748,25 @@ Patch25104: ansi_cprng-Fix-off-by-one-error-in-non-block-size-request.patch
|
|||
#rhbz 971893
|
||||
Patch25106: bonding-driver-alb-learning.patch
|
||||
|
||||
#rhbz 985522
|
||||
Patch25107: ntp-Make-periodic-RTC-update-more-reliable.patch
|
||||
|
||||
#rhbz 1010431
|
||||
Patch25108: Revert-rt2x00pci-Use-PCI-MSIs-whenever-possible.patch
|
||||
|
||||
#rhbz 1008323
|
||||
Patch25120: skge-fix-invalid-value-passed-to-pci_unmap_sigle.patch
|
||||
|
||||
#rhbz 902012
|
||||
Patch25114: elevator-Fix-a-race-in-elevator-switching-and-md.patch
|
||||
Patch25115: elevator-acquire-q-sysfs_lock-in-elevator_change.patch
|
||||
|
||||
#rhbz 974072
|
||||
Patch25117: rt2800-add-support-for-rf3070.patch
|
||||
|
||||
#rhbz 1005567
|
||||
Patch25118: bonding-driver-promisc.patch
|
||||
|
||||
#CVE-2013-4387 rhbz 1011927 1015166
|
||||
Patch25121: ipv6-udp-packets-following-an-UFO-enqueued-packet-ne.patch
|
||||
|
||||
|
@ -1406,6 +1422,9 @@ ApplyPatch disable-i8042-check-on-apple-mac.patch
|
|||
|
||||
ApplyPatch lis3-improve-handling-of-null-rate.patch
|
||||
|
||||
# Disable watchdog on virtual machines.
|
||||
ApplyPatch nowatchdog-on-virt.patch
|
||||
|
||||
#ApplyPatch 0001-efifb-Skip-DMI-checks-if-the-bootloader-knows-what-i.patch
|
||||
#ApplyPatch 0002-x86-EFI-Calculate-the-EFI-framebuffer-size-instead-o.patch
|
||||
|
||||
|
@ -1439,13 +1458,28 @@ ApplyPatch net-sctp-fix-ipv6-ipsec-encryption-bug-in-sctp_v6_xmit.patch
|
|||
#CVE-2013-4345 rhbz 1007690 1009136
|
||||
ApplyPatch ansi_cprng-Fix-off-by-one-error-in-non-block-size-request.patch
|
||||
|
||||
#rhbz 985522
|
||||
ApplyPatch ntp-Make-periodic-RTC-update-more-reliable.patch
|
||||
|
||||
#rhbz 1010431
|
||||
ApplyPatch Revert-rt2x00pci-Use-PCI-MSIs-whenever-possible.patch
|
||||
|
||||
#rhbz 971893
|
||||
ApplyPatch bonding-driver-alb-learning.patch
|
||||
|
||||
#rhbz 1008323
|
||||
ApplyPatch skge-fix-invalid-value-passed-to-pci_unmap_sigle.patch
|
||||
|
||||
#rhbz 902012
|
||||
ApplyPatch elevator-Fix-a-race-in-elevator-switching-and-md.patch
|
||||
ApplyPatch elevator-acquire-q-sysfs_lock-in-elevator_change.patch
|
||||
|
||||
#rhbz 974072
|
||||
ApplyPatch rt2800-add-support-for-rf3070.patch
|
||||
|
||||
#rhbz 1005567
|
||||
ApplyPatch bonding-driver-promisc.patch
|
||||
|
||||
#CVE-2013-4387 rhbz 1011927 1015166
|
||||
ApplyPatch ipv6-udp-packets-following-an-UFO-enqueued-packet-ne.patch
|
||||
|
||||
|
@ -2298,6 +2332,7 @@ fi
|
|||
%changelog
|
||||
* Tue Oct 08 2013 Justin M. Forbes <jforbes@fedoraproject.org>
|
||||
- Linux v3.11.4
|
||||
- Add missing 3.11 patches from F19
|
||||
|
||||
* Tue Oct 08 2013 Josh Boyer <jwboyer@fedoraproject.org>
|
||||
- Quiet irq remapping stack trace (rhbz 982153)
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
Disable watchdog on virtual machines.
|
||||
|
||||
For various reasons, VMs seem to trigger the soft lockup detector a lot,
|
||||
in cases where it's just not possible for a lockup to occur.
|
||||
(Example: https://bugzilla.redhat.com/show_bug.cgi?id=971139)
|
||||
|
||||
In some cases it seems that the host just never scheduled the app running
|
||||
the VM for a very long time (Could be the host was under heavy load).
|
||||
|
||||
Just disable the detector on VMs.
|
||||
|
||||
Signed-off-by: Dave Jones <davej@redhat.com>
|
||||
|
||||
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
|
||||
index 1241d8c..b2dc4e4 100644
|
||||
--- a/kernel/watchdog.c
|
||||
+++ b/kernel/watchdog.c
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <linux/sysctl.h>
|
||||
#include <linux/smpboot.h>
|
||||
#include <linux/sched/rt.h>
|
||||
+#include <linux/dmi.h>
|
||||
|
||||
#include <asm/irq_regs.h>
|
||||
#include <linux/kvm_para.h>
|
||||
@@ -96,6 +97,32 @@ static int __init nosoftlockup_setup(char *str)
|
||||
__setup("nosoftlockup", nosoftlockup_setup);
|
||||
/* */
|
||||
|
||||
+static int disable_watchdog(const struct dmi_system_id *d)
|
||||
+{
|
||||
+ printk(KERN_INFO "watchdog: disabled (inside virtual machine)\n");
|
||||
+ watchdog_user_enabled = 0;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct dmi_system_id watchdog_virt_dmi_table[] = {
|
||||
+ {
|
||||
+ .callback = disable_watchdog,
|
||||
+ .ident = "VMware",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "VMware, Inc."),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .callback = disable_watchdog,
|
||||
+ .ident = "Bochs",
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "Bochs Bochs"),
|
||||
+ },
|
||||
+ },
|
||||
+ {}
|
||||
+};
|
||||
+
|
||||
+
|
||||
/*
|
||||
* Hard-lockup warnings should be triggered after just a few seconds. Soft-
|
||||
* lockups can have false positives under extreme conditions. So we generally
|
||||
@@ -551,6 +578,8 @@ int proc_dowatchdog(struct ctl_table *table, int write,
|
||||
|
||||
void __init lockup_detector_init(void)
|
||||
{
|
||||
+ dmi_check_system(watchdog_virt_dmi_table);
|
||||
+
|
||||
set_sample_period();
|
||||
|
||||
#ifdef CONFIG_NO_HZ_FULL
|
|
@ -0,0 +1,44 @@
|
|||
From a97ad0c4b447a132a322cedc3a5f7fa4cab4b304 Mon Sep 17 00:00:00 2001
|
||||
From: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Date: Thu, 1 Aug 2013 19:31:35 +0200
|
||||
Subject: [PATCH] ntp: Make periodic RTC update more reliable
|
||||
|
||||
The current code requires that the scheduled update of the RTC happens
|
||||
in the closest tick to the half of the second. This seems to be
|
||||
difficult to achieve reliably. The scheduled work may be missing the
|
||||
target time by a tick or two and be constantly rescheduled every second.
|
||||
|
||||
Relax the limit to 10 ticks. As a typical RTC drifts in the 11-minute
|
||||
update interval by several milliseconds, this shouldn't affect the
|
||||
overall accuracy of the RTC much.
|
||||
|
||||
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
|
||||
Signed-off-by: John Stultz <john.stultz@linaro.org>
|
||||
---
|
||||
kernel/time/ntp.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
|
||||
index 8f5b3b9..ab1fa7c 100644
|
||||
--- a/kernel/time/ntp.c
|
||||
+++ b/kernel/time/ntp.c
|
||||
@@ -475,6 +475,7 @@ static void sync_cmos_clock(struct work_struct *work)
|
||||
* called as close as possible to 500 ms before the new second starts.
|
||||
* This code is run on a timer. If the clock is set, that timer
|
||||
* may not expire at the correct time. Thus, we adjust...
|
||||
+ * We want the clock to be within a couple of ticks from the target.
|
||||
*/
|
||||
if (!ntp_synced()) {
|
||||
/*
|
||||
@@ -485,7 +486,7 @@ static void sync_cmos_clock(struct work_struct *work)
|
||||
}
|
||||
|
||||
getnstimeofday(&now);
|
||||
- if (abs(now.tv_nsec - (NSEC_PER_SEC / 2)) <= tick_nsec / 2) {
|
||||
+ if (abs(now.tv_nsec - (NSEC_PER_SEC / 2)) <= tick_nsec * 5) {
|
||||
struct timespec adjust = now;
|
||||
|
||||
fail = -ENODEV;
|
||||
--
|
||||
1.7.9.5
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
index d78c495..2132830 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
@@ -65,6 +65,7 @@
|
||||
#define RF3021 0x0007
|
||||
#define RF3022 0x0008
|
||||
#define RF3052 0x0009
|
||||
+#define RF3070 0x3070
|
||||
#define RF2853 0x000a
|
||||
#define RF3320 0x000b
|
||||
#define RF3322 0x000c
|
||||
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
index 1b41c8e..2958265 100644
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
@@ -2597,6 +2597,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
||||
case RF3322:
|
||||
rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
|
||||
break;
|
||||
+ case RF3070:
|
||||
case RF5360:
|
||||
case RF5370:
|
||||
case RF5372:
|
||||
@@ -2611,7 +2612,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
||||
rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info);
|
||||
}
|
||||
|
||||
- if (rt2x00_rf(rt2x00dev, RF3290) ||
|
||||
+ if (rt2x00_rf(rt2x00dev, RF3070) ||
|
||||
+ rt2x00_rf(rt2x00dev, RF3290) ||
|
||||
rt2x00_rf(rt2x00dev, RF3322) ||
|
||||
rt2x00_rf(rt2x00dev, RF5360) ||
|
||||
rt2x00_rf(rt2x00dev, RF5370) ||
|
||||
@@ -3219,6 +3221,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
||||
rt2x00_set_field8(&rfcsr, RFCSR7_RF_TUNING, 1);
|
||||
rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
|
||||
break;
|
||||
+ case RF3070:
|
||||
case RF3290:
|
||||
case RF5360:
|
||||
case RF5370:
|
||||
@@ -5731,6 +5734,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
|
||||
case RF3021:
|
||||
case RF3022:
|
||||
case RF3052:
|
||||
+ case RF3070:
|
||||
case RF3290:
|
||||
case RF3320:
|
||||
case RF3322:
|
||||
@@ -6186,6 +6190,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
||||
rt2x00_rf(rt2x00dev, RF2020) ||
|
||||
rt2x00_rf(rt2x00dev, RF3021) ||
|
||||
rt2x00_rf(rt2x00dev, RF3022) ||
|
||||
+ rt2x00_rf(rt2x00dev, RF3070) ||
|
||||
rt2x00_rf(rt2x00dev, RF3290) ||
|
||||
rt2x00_rf(rt2x00dev, RF3320) ||
|
||||
rt2x00_rf(rt2x00dev, RF3322) ||
|
||||
@@ -6219,10 +6224,11 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
||||
/*
|
||||
* Initialize HT information.
|
||||
*/
|
||||
- if (!rt2x00_rf(rt2x00dev, RF2020))
|
||||
+ if (!rt2x00_rf(rt2x00dev, RF2020)) {
|
||||
spec->ht.ht_supported = true;
|
||||
- else
|
||||
+ } else {
|
||||
spec->ht.ht_supported = false;
|
||||
+ }
|
||||
|
||||
spec->ht.cap =
|
||||
IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
|
||||
@@ -6290,6 +6296,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
||||
case RF3022:
|
||||
case RF3320:
|
||||
case RF3052:
|
||||
+ case RF3070:
|
||||
case RF3290:
|
||||
case RF5360:
|
||||
case RF5370:
|
|
@ -0,0 +1,61 @@
|
|||
From 3361dc9538832a2a9150a8c722374ca844bf8dc8 Mon Sep 17 00:00:00 2001
|
||||
From: Mikulas Patocka <mpatocka@redhat.com>
|
||||
Date: Fri, 20 Sep 2013 17:53:22 +0000
|
||||
Subject: skge: fix invalid value passed to pci_unmap_sigle
|
||||
|
||||
In my patch c194992cbe71c20bb3623a566af8d11b0bfaa721 ("skge: fix
|
||||
broken driver") I didn't fix the skge bug correctly. The value of the
|
||||
new mapping (not old) was passed to pci_unmap_single.
|
||||
|
||||
If we enable CONFIG_DMA_API_DEBUG, it results in this warning:
|
||||
WARNING: CPU: 0 PID: 0 at lib/dma-debug.c:986 check_sync+0x4c4/0x580()
|
||||
skge 0000:02:07.0: DMA-API: device driver tries to sync DMA memory it has
|
||||
not allocated [device address=0x000000023a0096c0] [size=1536 bytes]
|
||||
|
||||
This patch makes the skge driver pass the correct value to
|
||||
pci_unmap_single and fixes the warning. It copies the old descriptor to
|
||||
on-stack variable "ee" and unmaps it if mapping of the new descriptor
|
||||
succeeded.
|
||||
|
||||
This patch should be backported to 3.11-stable.
|
||||
|
||||
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
|
||||
Reported-by: Francois Romieu <romieu@fr.zoreil.com>
|
||||
Tested-by: Mikulas Patocka <mpatocka@redhat.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
|
||||
index 1a9c4f6..ecc7f7b 100644
|
||||
--- a/drivers/net/ethernet/marvell/skge.c
|
||||
+++ b/drivers/net/ethernet/marvell/skge.c
|
||||
@@ -3086,13 +3086,16 @@ static struct sk_buff *skge_rx_get(struct net_device *dev,
|
||||
PCI_DMA_FROMDEVICE);
|
||||
skge_rx_reuse(e, skge->rx_buf_size);
|
||||
} else {
|
||||
+ struct skge_element ee;
|
||||
struct sk_buff *nskb;
|
||||
|
||||
nskb = netdev_alloc_skb_ip_align(dev, skge->rx_buf_size);
|
||||
if (!nskb)
|
||||
goto resubmit;
|
||||
|
||||
- skb = e->skb;
|
||||
+ ee = *e;
|
||||
+
|
||||
+ skb = ee.skb;
|
||||
prefetch(skb->data);
|
||||
|
||||
if (skge_rx_setup(skge, e, nskb, skge->rx_buf_size) < 0) {
|
||||
@@ -3101,8 +3104,8 @@ static struct sk_buff *skge_rx_get(struct net_device *dev,
|
||||
}
|
||||
|
||||
pci_unmap_single(skge->hw->pdev,
|
||||
- dma_unmap_addr(e, mapaddr),
|
||||
- dma_unmap_len(e, maplen),
|
||||
+ dma_unmap_addr(&ee, mapaddr),
|
||||
+ dma_unmap_len(&ee, maplen),
|
||||
PCI_DMA_FROMDEVICE);
|
||||
}
|
||||
|
||||
--
|
||||
cgit v0.9.2
|
Loading…
Reference in New Issue