lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20090826.151153.169388217.davem@davemloft.net>
Date:	Wed, 26 Aug 2009 15:11:53 -0700 (PDT)
From:	David Miller <davem@...emloft.net>
To:	rjw@...k.pl
Cc:	walt@...mansrus.com, kernel-testers@...r.kernel.org, khc@...waw.pl,
	linux-kernel@...r.kernel.org
Subject: Re: [Bug #14057] Strange network timeouts w/ e100

From: "Rafael J. Wysocki" <rjw@...k.pl>
Date: Wed, 26 Aug 2009 23:12:03 +0200

>> Krzysztof has a patch which has corrected this issue for me.  Thanks,
> 
> Thanks for the update.
> 
> Do you have a pointer to the patch, please?

commit 6ff9c2e7fa8ca63a575792534b63c5092099c286
Author: Krzysztof Hałasa <khc@...waw.pl>
Date:   Sun Aug 23 19:02:13 2009 -0700

    E100: fix interaction with swiotlb on X86.
    
    E100 places it's RX packet descriptors inside skb->data and uses them
    with bidirectional streaming DMA mapping. Data in descriptors is
    accessed simultaneously by the chip (writing status and size when
    a packet is received) and CPU (reading to check if the packet was
    received). This isn't a valid usage of PCI DMA API, which requires use
    of the coherent (consistent) memory for such purpose. Unfortunately e100
    chips working in "simplified" RX mode have to store received data
    directly after the descriptor. Fixing the driver to conform to the API
    would require using unsupported "flexible" RX mode or receiving data
    into a coherent memory and using CPU to copy it to network buffers.
    
    This patch, while not yet making the driver conform to the PCI DMA API,
    allows it to work correctly on X86 with swiotlb (while not breaking
    other architectures).
    
    Signed-off-by: Krzysztof Hałasa <khc@...waw.pl>
    Signed-off-by: David S. Miller <davem@...emloft.net>

diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 41b648a..3a6735d 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -1899,7 +1899,7 @@ static int e100_rx_indicate(struct nic *nic, struct rx *rx,
 				nic->ru_running = RU_SUSPENDED;
 		pci_dma_sync_single_for_device(nic->pdev, rx->dma_addr,
 					       sizeof(struct rfd),
-					       PCI_DMA_BIDIRECTIONAL);
+					       PCI_DMA_FROMDEVICE);
 		return -ENODATA;
 	}
 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ