* [PATCH] Bogus return status in drivers/net/tg3.c
@ 2003-12-19 22:32 Francois Romieu
2003-12-20 0:17 ` [PATCH] Bogus return status in drivers/net/amd8111e.c Francois Romieu
2003-12-20 5:44 ` [PATCH] Bogus return status in drivers/net/tg3.c David S. Miller
0 siblings, 2 replies; 7+ messages in thread
From: Francois Romieu @ 2003-12-19 22:32 UTC (permalink / raw)
To: netdev; +Cc: davem, Jeff Garzik
Apply on top of 2.6.0 + Jeff Garzik's 2.6.0-test11-bk5-netdrvr-exp2
The status variable is not set before branching to the error path.
drivers/net/tg3.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff -puN drivers/net/tg3.c~trivial-tg3-fscked-return-status drivers/net/tg3.c
--- linux-2.6.0-vanilla/drivers/net/tg3.c~trivial-tg3-fscked-return-status 2003-12-19 23:21:55.000000000 +0100
+++ linux-2.6.0-vanilla-fr/drivers/net/tg3.c 2003-12-19 23:24:10.000000000 +0100
@@ -7533,13 +7533,16 @@ static int __devinit tg3_init_one(struct
if (pm_cap == 0) {
printk(KERN_ERR PFX "Cannot find PowerManagement capability, "
"aborting.\n");
+ err = -EIO;
goto err_out_free_res;
}
/* Configure DMA attributes. */
- if (!pci_set_dma_mask(pdev, 0xffffffffffffffffULL)) {
+ err = pci_set_dma_mask(pdev, 0xffffffffffffffffULL);
+ if (!err) {
pci_using_dac = 1;
- if (pci_set_consistent_dma_mask(pdev, 0xffffffffffffffffULL)) {
+ err = pci_set_consistent_dma_mask(pdev, 0xffffffffffffffffULL);
+ if (err < 0) {
printk(KERN_ERR PFX "Unable to obtain 64 bit DMA "
"for consistent allocations\n");
goto err_out_free_res;
_
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH] Bogus return status in drivers/net/amd8111e.c 2003-12-19 22:32 [PATCH] Bogus return status in drivers/net/tg3.c Francois Romieu @ 2003-12-20 0:17 ` Francois Romieu 2003-12-20 0:43 ` [PATCH] 2.6.0 - r8169 64 bit Francois Romieu 2003-12-20 5:44 ` [PATCH] Bogus return status in drivers/net/tg3.c David S. Miller 1 sibling, 1 reply; 7+ messages in thread From: Francois Romieu @ 2003-12-20 0:17 UTC (permalink / raw) To: netdev; +Cc: Jeff Garzik Patch applies on top of 2.6.0 + Jeff Garzik's 2.6.0-test11-bk5-netdrvr-exp2 The status variable is not set before branching to the error path. drivers/net/amd8111e.c | 2 ++ 1 files changed, 2 insertions(+) diff -puN drivers/net/amd8111e.c~trivial-amd8111e-fscked-return-status drivers/net/amd8111e.c --- linux-2.6.0-vanilla/drivers/net/amd8111e.c~trivial-amd8111e-fscked-return-status 2003-12-19 23:34:46.000000000 +0100 +++ linux-2.6.0-vanilla-fr/drivers/net/amd8111e.c 2003-12-19 23:37:15.000000000 +0100 @@ -1819,6 +1819,8 @@ static int __devinit amd8111e_probe_one( pci_set_master(pdev); + err = -EIO; + /* Find power-management capability. */ if((pm_cap = pci_find_capability(pdev, PCI_CAP_ID_PM))==0){ printk(KERN_ERR "amd8111e: No Power Management capability, " _ ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] 2.6.0 - r8169 64 bit 2003-12-20 0:17 ` [PATCH] Bogus return status in drivers/net/amd8111e.c Francois Romieu @ 2003-12-20 0:43 ` Francois Romieu 2003-12-20 1:09 ` Francois Romieu 0 siblings, 1 reply; 7+ messages in thread From: Francois Romieu @ 2003-12-20 0:43 UTC (permalink / raw) To: netdev; +Cc: Jeff Garzik Patch applies on top of 2.6.0 + Jeff Garzik's 2.6.0-test11-bk5-netdrvr-exp2 - 64bit changes; - provide a decent return status when power state detection fails. drivers/net/r8169.c | 92 +++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 70 insertions(+), 22 deletions(-) diff -puN drivers/net/r8169.c~r8169-addr-high drivers/net/r8169.c --- linux-2.6.0-vanilla/drivers/net/r8169.c~r8169-addr-high 2003-12-18 23:01:09.000000000 +0100 +++ linux-2.6.0-vanilla-fr/drivers/net/r8169.c 2003-12-20 01:03:24.000000000 +0100 @@ -148,8 +148,10 @@ static int rx_copybreak = 200; enum RTL8169_registers { MAC0 = 0, /* Ethernet hardware address. */ MAR0 = 8, /* Multicast filter. */ - TxDescStartAddr = 0x20, - TxHDescStartAddr = 0x28, + TxDescStdPrioAddrLow = 0x20, + TxDescStdPrioAddrHigh = 0x24, + TxDescHighPrioAddrLow = 0x28, + TxDescHighPrioAddrHigh = 0x2C, FLASH = 0x30, ERSR = 0x36, ChipCmd = 0x37, @@ -174,7 +176,8 @@ enum RTL8169_registers { PHYstatus = 0x6C, RxMaxSize = 0xDA, CPlusCmd = 0xE0, - RxDescStartAddr = 0xE4, + RxDescAddrLow = 0xE4, + RxDescAddrHigh = 0xE8, EarlyTxThres = 0xEC, FuncEvent = 0xF0, FuncEventMask = 0xF4, @@ -345,6 +348,16 @@ static const unsigned int rtl8169_rx_con #define PHY_Cap_100_Half_Or_Less PHY_Cap_100_Half | PHY_Cap_10_Full_Or_Less #define PHY_Cap_100_Full_Or_Less PHY_Cap_100_Full | PHY_Cap_100_Half_Or_Less +#define rtl8169_set_desc_addr(desc,addr) \ + do { \ + desc->buf_addr = cpu_to_le32((u64)addr & 0xffffffff); \ + desc->buf_Haddr = cpu_to_le32((u64)addr >> 32); \ + } while (0) + +#define rtl8169_get_dma_addr(desc) \ + (((u64)le32_to_cpu(desc->buf_Haddr) << 32) | \ + le32_to_cpu(desc->buf_addr)) + void mdio_write(void *ioaddr, int RegAddr, int value) { @@ -628,6 +641,29 @@ static inline void rtl8169_request_timer add_timer(timer); } +static inline int rtl8169_configure_dma_attributes(struct pci_dev *pdev, + struct net_device *dev) +{ + int rc; + + rc = pci_set_dma_mask(pdev, 0xffffffffffffffffULL); + if (!rc) { + rc = pci_set_consistent_dma_mask(pdev, 0xffffffffffffffffULL); + if (rc < 0) { + printk(KERN_ERR PFX "Unable to obtain 64 bit DMA " + "for consistent allocations\n"); + } else + dev->features |= NETIF_F_HIGHDMA; + + } else { + rc = pci_set_dma_mask(pdev, 0xffffffffULL); + if (rc < 0) + printk(KERN_ERR PFX "No usable DMA configuration, " + "aborting.\n"); + } + return rc; +} + static int __devinit rtl8169_init_board(struct pci_dev *pdev, struct net_device **dev_out, void **ioaddr_out) @@ -663,6 +699,8 @@ rtl8169_init_board(struct pci_dev *pdev, goto err_out; } + rc = -ENODEV; + /* save power state before pci_enable_device overwrites it */ pm_cap = pci_find_capability(pdev, PCI_CAP_ID_PM); if (pm_cap) { @@ -684,13 +722,11 @@ rtl8169_init_board(struct pci_dev *pdev, if (!(mmio_flags & IORESOURCE_MEM)) { printk(KERN_ERR PFX "region #1 not an MMIO resource, aborting\n"); - rc = -ENODEV; goto err_out_disable; } // check for weird/broken PCI region reporting if (mmio_len < RTL_MIN_IO_SIZE) { printk(KERN_ERR PFX "Invalid PCI region size(s), aborting\n"); - rc = -ENODEV; goto err_out_disable; } @@ -700,6 +736,10 @@ rtl8169_init_board(struct pci_dev *pdev, goto err_out_disable; } + rc = rtl8169_configure_dma_attributes(pdev, dev); + if (rc < 0) + goto err_out_free_res; + // enable PCI bus-mastering pci_set_master(pdev); @@ -1094,8 +1134,10 @@ rtl8169_hw_start(struct net_device *dev) tp->cur_rx = 0; - RTL_W32(TxDescStartAddr, tp->TxPhyAddr); - RTL_W32(RxDescStartAddr, tp->RxPhyAddr); + RTL_W32(TxDescStdPrioAddrLow, (u64) tp->TxPhyAddr & 0xffffffff); + RTL_W32(TxDescStdPrioAddrHigh, (u64) tp->TxPhyAddr >> 32); + RTL_W32(RxDescAddrLow, (u64) tp->RxPhyAddr & 0xffffffff); + RTL_W32(RxDescAddrHigh, (u64) tp->RxPhyAddr >> 32); RTL_W8(Cfg9346, Cfg9346_Lock); udelay(10); @@ -1115,15 +1157,17 @@ rtl8169_hw_start(struct net_device *dev) static inline void rtl8169_make_unusable_by_asic(struct RxDesc *desc) { - desc->buf_addr = 0xdeadbeef; + rtl8169_set_desc_addr(desc, 0xdeadbeefdeadbeef); desc->status &= ~cpu_to_le32(OWNbit | RsvdMask); } static void rtl8169_free_rx_skb(struct pci_dev *pdev, struct sk_buff **sk_buff, struct RxDesc *desc) { - pci_unmap_single(pdev, le32_to_cpu(desc->buf_addr), RX_BUF_SIZE, - PCI_DMA_FROMDEVICE); + dma_addr_t mapping; + + mapping = rtl8169_get_dma_addr(desc); + pci_unmap_single(pdev, mapping, RX_BUF_SIZE, PCI_DMA_FROMDEVICE); dev_kfree_skb(*sk_buff); *sk_buff = NULL; rtl8169_make_unusable_by_asic(desc); @@ -1136,7 +1180,7 @@ static inline void rtl8169_return_to_asi static inline void rtl8169_give_to_asic(struct RxDesc *desc, dma_addr_t mapping) { - desc->buf_addr = cpu_to_le32(mapping); + rtl8169_set_desc_addr(desc, mapping); desc->status |= cpu_to_le32(OWNbit + RX_BUF_SIZE); } @@ -1233,10 +1277,12 @@ static void rtl8169_unmap_tx_skb(struct struct TxDesc *desc) { u32 len = sk_buff[0]->len; + dma_addr_t mapping; - pci_unmap_single(pdev, le32_to_cpu(desc->buf_addr), - len < ETH_ZLEN ? ETH_ZLEN : len, PCI_DMA_TODEVICE); - desc->buf_addr = 0x00; + mapping = rtl8169_get_dma_addr(desc); + pci_unmap_single(pdev, mapping, len < ETH_ZLEN ? ETH_ZLEN : len, + PCI_DMA_TODEVICE); + rtl8169_set_desc_addr(desc, 0x00); *sk_buff = NULL; } @@ -1290,6 +1336,7 @@ rtl8169_start_xmit(struct sk_buff *skb, struct rtl8169_private *tp = dev->priv; void *ioaddr = tp->mmio_addr; int entry = tp->cur_tx % NUM_TX_DESC; + struct TxDesc *desc = tp->TxDescArray + entry; u32 len = skb->len; if (unlikely(skb->len < ETH_ZLEN)) { @@ -1301,17 +1348,17 @@ rtl8169_start_xmit(struct sk_buff *skb, spin_lock_irq(&tp->lock); - if (!(le32_to_cpu(tp->TxDescArray[entry].status) & OWNbit)) { + if (!(le32_to_cpu(desc->status) & OWNbit)) { dma_addr_t mapping; mapping = pci_map_single(tp->pci_dev, skb->data, len, PCI_DMA_TODEVICE); tp->Tx_skbuff[entry] = skb; - tp->TxDescArray[entry].buf_addr = cpu_to_le32(mapping); + rtl8169_set_desc_addr(desc, mapping); - tp->TxDescArray[entry].status = cpu_to_le32(OWNbit | FSbit | - LSbit | len | (EORbit * !((entry + 1) % NUM_TX_DESC))); + desc->status = cpu_to_le32(OWNbit | FSbit | LSbit | len | + (EORbit * !((entry + 1) % NUM_TX_DESC))); RTL_W8(TxPoll, 0x40); //set polling bit @@ -1424,14 +1471,15 @@ rtl8169_rx_interrupt(struct net_device * struct RxDesc *desc = tp->RxDescArray + cur_rx; struct sk_buff *skb = tp->Rx_skbuff[cur_rx]; int pkt_size = (status & 0x00001FFF) - 4; + dma_addr_t mapping; - pci_dma_sync_single(tp->pci_dev, - le32_to_cpu(desc->buf_addr), - RX_BUF_SIZE, PCI_DMA_FROMDEVICE); + mapping = rtl8169_get_dma_addr(desc); + pci_dma_sync_single(tp->pci_dev, mapping, RX_BUF_SIZE, + PCI_DMA_FROMDEVICE); if (rtl8169_try_rx_copy(&skb, pkt_size, desc, dev)) { pci_unmap_single(tp->pci_dev, - le32_to_cpu(desc->buf_addr), + le32_to_cpu(mapping), RX_BUF_SIZE, PCI_DMA_FROMDEVICE); tp->Rx_skbuff[cur_rx] = NULL; _ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] 2.6.0 - r8169 64 bit 2003-12-20 0:43 ` [PATCH] 2.6.0 - r8169 64 bit Francois Romieu @ 2003-12-20 1:09 ` Francois Romieu 0 siblings, 0 replies; 7+ messages in thread From: Francois Romieu @ 2003-12-20 1:09 UTC (permalink / raw) To: netdev; +Cc: Jeff Garzik Francois Romieu <romieu@fr.zoreil.com> : [...] Oops, bad patch. Correct version below. - 64bit/DAC update; - provide a decent return status when power state detection fails. drivers/net/r8169.c | 100 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 77 insertions(+), 23 deletions(-) diff -puN drivers/net/r8169.c~r8169-addr-high drivers/net/r8169.c --- linux-2.6.0-vanilla/drivers/net/r8169.c~r8169-addr-high 2003-12-18 23:01:09.000000000 +0100 +++ linux-2.6.0-vanilla-fr/drivers/net/r8169.c 2003-12-20 02:02:03.000000000 +0100 @@ -148,8 +148,10 @@ static int rx_copybreak = 200; enum RTL8169_registers { MAC0 = 0, /* Ethernet hardware address. */ MAR0 = 8, /* Multicast filter. */ - TxDescStartAddr = 0x20, - TxHDescStartAddr = 0x28, + TxDescStdPrioAddrLow = 0x20, + TxDescStdPrioAddrHigh = 0x24, + TxDescHighPrioAddrLow = 0x28, + TxDescHighPrioAddrHigh = 0x2C, FLASH = 0x30, ERSR = 0x36, ChipCmd = 0x37, @@ -174,7 +176,8 @@ enum RTL8169_registers { PHYstatus = 0x6C, RxMaxSize = 0xDA, CPlusCmd = 0xE0, - RxDescStartAddr = 0xE4, + RxDescAddrLow = 0xE4, + RxDescAddrHigh = 0xE8, EarlyTxThres = 0xEC, FuncEvent = 0xF0, FuncEventMask = 0xF4, @@ -227,6 +230,11 @@ enum RTL8169_register_content { /*TxConfigBits */ TxInterFrameGapShift = 24, TxDMAShift = 8, /* DMA burst value (0-7) is shift this many bits */ + /*CPlusCmd p.31 */ + RxVlan = (1 << 6), + RxChkSum = (1 << 5), + DAC = (1 << 4), + MulRW = (1 << 3), /*rtl8169_PHYstatus */ TBI_Enable = 0x80, @@ -345,6 +353,16 @@ static const unsigned int rtl8169_rx_con #define PHY_Cap_100_Half_Or_Less PHY_Cap_100_Half | PHY_Cap_10_Full_Or_Less #define PHY_Cap_100_Full_Or_Less PHY_Cap_100_Full | PHY_Cap_100_Half_Or_Less +#define rtl8169_set_desc_addr(desc,addr) \ + do { \ + desc->buf_addr = cpu_to_le32((u64)addr & 0xffffffff); \ + desc->buf_Haddr = cpu_to_le32((u64)addr >> 32); \ + } while (0) + +#define rtl8169_get_dma_addr(desc) \ + (((u64)le32_to_cpu(desc->buf_Haddr) << 32) | \ + le32_to_cpu(desc->buf_addr)) + void mdio_write(void *ioaddr, int RegAddr, int value) { @@ -628,6 +646,29 @@ static inline void rtl8169_request_timer add_timer(timer); } +static inline int rtl8169_configure_dma_attributes(struct pci_dev *pdev, + struct net_device *dev) +{ + int rc; + + rc = pci_set_dma_mask(pdev, 0xffffffffffffffffULL); + if (!rc) { + rc = pci_set_consistent_dma_mask(pdev, 0xffffffffffffffffULL); + if (rc < 0) { + printk(KERN_ERR PFX "Unable to obtain 64 bit DMA " + "for consistent allocations\n"); + } else + dev->features |= NETIF_F_HIGHDMA; + + } else { + rc = pci_set_dma_mask(pdev, 0xffffffffULL); + if (rc < 0) + printk(KERN_ERR PFX "No usable DMA configuration, " + "aborting.\n"); + } + return rc; +} + static int __devinit rtl8169_init_board(struct pci_dev *pdev, struct net_device **dev_out, void **ioaddr_out) @@ -663,6 +704,8 @@ rtl8169_init_board(struct pci_dev *pdev, goto err_out; } + rc = -ENODEV; + /* save power state before pci_enable_device overwrites it */ pm_cap = pci_find_capability(pdev, PCI_CAP_ID_PM); if (pm_cap) { @@ -684,13 +727,11 @@ rtl8169_init_board(struct pci_dev *pdev, if (!(mmio_flags & IORESOURCE_MEM)) { printk(KERN_ERR PFX "region #1 not an MMIO resource, aborting\n"); - rc = -ENODEV; goto err_out_disable; } // check for weird/broken PCI region reporting if (mmio_len < RTL_MIN_IO_SIZE) { printk(KERN_ERR PFX "Invalid PCI region size(s), aborting\n"); - rc = -ENODEV; goto err_out_disable; } @@ -700,6 +741,10 @@ rtl8169_init_board(struct pci_dev *pdev, goto err_out_disable; } + rc = rtl8169_configure_dma_attributes(pdev, dev); + if (rc < 0) + goto err_out_free_res; + // enable PCI bus-mastering pci_set_master(pdev); @@ -1085,7 +1130,8 @@ rtl8169_hw_start(struct net_device *dev) RTL_W32(TxConfig, (TX_DMA_BURST << TxDMAShift) | (InterFrameGap << TxInterFrameGapShift)); - RTL_W16(CPlusCmd, RTL_R16(CPlusCmd)); + RTL_W16(CPlusCmd, ((dev->features & NETIF_F_HIGHDMA) ? DAC : 0) | + RTL_R16(CPlusCmd)); if (tp->mac_version == RTL_GIGA_MAC_VER_D) { dprintk(KERN_INFO PFX "Set MAC Reg C+CR Offset 0xE0: bit-3 and bit-14 MUST be 1\n"); @@ -1094,8 +1140,10 @@ rtl8169_hw_start(struct net_device *dev) tp->cur_rx = 0; - RTL_W32(TxDescStartAddr, tp->TxPhyAddr); - RTL_W32(RxDescStartAddr, tp->RxPhyAddr); + RTL_W32(TxDescStdPrioAddrLow, (u64) tp->TxPhyAddr & 0xffffffff); + RTL_W32(TxDescStdPrioAddrHigh, (u64) tp->TxPhyAddr >> 32); + RTL_W32(RxDescAddrLow, (u64) tp->RxPhyAddr & 0xffffffff); + RTL_W32(RxDescAddrHigh, (u64) tp->RxPhyAddr >> 32); RTL_W8(Cfg9346, Cfg9346_Lock); udelay(10); @@ -1115,15 +1163,17 @@ rtl8169_hw_start(struct net_device *dev) static inline void rtl8169_make_unusable_by_asic(struct RxDesc *desc) { - desc->buf_addr = 0xdeadbeef; + rtl8169_set_desc_addr(desc, 0xdeadbeefdeadbeef); desc->status &= ~cpu_to_le32(OWNbit | RsvdMask); } static void rtl8169_free_rx_skb(struct pci_dev *pdev, struct sk_buff **sk_buff, struct RxDesc *desc) { - pci_unmap_single(pdev, le32_to_cpu(desc->buf_addr), RX_BUF_SIZE, - PCI_DMA_FROMDEVICE); + dma_addr_t mapping; + + mapping = rtl8169_get_dma_addr(desc); + pci_unmap_single(pdev, mapping, RX_BUF_SIZE, PCI_DMA_FROMDEVICE); dev_kfree_skb(*sk_buff); *sk_buff = NULL; rtl8169_make_unusable_by_asic(desc); @@ -1136,7 +1186,7 @@ static inline void rtl8169_return_to_asi static inline void rtl8169_give_to_asic(struct RxDesc *desc, dma_addr_t mapping) { - desc->buf_addr = cpu_to_le32(mapping); + rtl8169_set_desc_addr(desc, mapping); desc->status |= cpu_to_le32(OWNbit + RX_BUF_SIZE); } @@ -1233,10 +1283,12 @@ static void rtl8169_unmap_tx_skb(struct struct TxDesc *desc) { u32 len = sk_buff[0]->len; + dma_addr_t mapping; - pci_unmap_single(pdev, le32_to_cpu(desc->buf_addr), - len < ETH_ZLEN ? ETH_ZLEN : len, PCI_DMA_TODEVICE); - desc->buf_addr = 0x00; + mapping = rtl8169_get_dma_addr(desc); + pci_unmap_single(pdev, mapping, len < ETH_ZLEN ? ETH_ZLEN : len, + PCI_DMA_TODEVICE); + rtl8169_set_desc_addr(desc, 0x00); *sk_buff = NULL; } @@ -1290,6 +1342,7 @@ rtl8169_start_xmit(struct sk_buff *skb, struct rtl8169_private *tp = dev->priv; void *ioaddr = tp->mmio_addr; int entry = tp->cur_tx % NUM_TX_DESC; + struct TxDesc *desc = tp->TxDescArray + entry; u32 len = skb->len; if (unlikely(skb->len < ETH_ZLEN)) { @@ -1301,17 +1354,17 @@ rtl8169_start_xmit(struct sk_buff *skb, spin_lock_irq(&tp->lock); - if (!(le32_to_cpu(tp->TxDescArray[entry].status) & OWNbit)) { + if (!(le32_to_cpu(desc->status) & OWNbit)) { dma_addr_t mapping; mapping = pci_map_single(tp->pci_dev, skb->data, len, PCI_DMA_TODEVICE); tp->Tx_skbuff[entry] = skb; - tp->TxDescArray[entry].buf_addr = cpu_to_le32(mapping); + rtl8169_set_desc_addr(desc, mapping); - tp->TxDescArray[entry].status = cpu_to_le32(OWNbit | FSbit | - LSbit | len | (EORbit * !((entry + 1) % NUM_TX_DESC))); + desc->status = cpu_to_le32(OWNbit | FSbit | LSbit | len | + (EORbit * !((entry + 1) % NUM_TX_DESC))); RTL_W8(TxPoll, 0x40); //set polling bit @@ -1424,14 +1477,15 @@ rtl8169_rx_interrupt(struct net_device * struct RxDesc *desc = tp->RxDescArray + cur_rx; struct sk_buff *skb = tp->Rx_skbuff[cur_rx]; int pkt_size = (status & 0x00001FFF) - 4; + dma_addr_t mapping; - pci_dma_sync_single(tp->pci_dev, - le32_to_cpu(desc->buf_addr), - RX_BUF_SIZE, PCI_DMA_FROMDEVICE); + mapping = rtl8169_get_dma_addr(desc); + pci_dma_sync_single(tp->pci_dev, mapping, RX_BUF_SIZE, + PCI_DMA_FROMDEVICE); if (rtl8169_try_rx_copy(&skb, pkt_size, desc, dev)) { pci_unmap_single(tp->pci_dev, - le32_to_cpu(desc->buf_addr), + le32_to_cpu(mapping), RX_BUF_SIZE, PCI_DMA_FROMDEVICE); tp->Rx_skbuff[cur_rx] = NULL; _ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Bogus return status in drivers/net/tg3.c 2003-12-19 22:32 [PATCH] Bogus return status in drivers/net/tg3.c Francois Romieu 2003-12-20 0:17 ` [PATCH] Bogus return status in drivers/net/amd8111e.c Francois Romieu @ 2003-12-20 5:44 ` David S. Miller 2003-12-20 5:49 ` Jeff Garzik 1 sibling, 1 reply; 7+ messages in thread From: David S. Miller @ 2003-12-20 5:44 UTC (permalink / raw) To: Francois Romieu; +Cc: netdev, jgarzik On Fri, 19 Dec 2003 23:32:31 +0100 Francois Romieu <romieu@fr.zoreil.com> wrote: > Apply on top of 2.6.0 + Jeff Garzik's 2.6.0-test11-bk5-netdrvr-exp2 Jeff want me to suck this into my tg3 trees? That's probably best. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Bogus return status in drivers/net/tg3.c 2003-12-20 5:44 ` [PATCH] Bogus return status in drivers/net/tg3.c David S. Miller @ 2003-12-20 5:49 ` Jeff Garzik 2003-12-20 5:54 ` David S. Miller 0 siblings, 1 reply; 7+ messages in thread From: Jeff Garzik @ 2003-12-20 5:49 UTC (permalink / raw) To: David S. Miller; +Cc: Francois Romieu, netdev David S. Miller wrote: > On Fri, 19 Dec 2003 23:32:31 +0100 > Francois Romieu <romieu@fr.zoreil.com> wrote: > > >>Apply on top of 2.6.0 + Jeff Garzik's 2.6.0-test11-bk5-netdrvr-exp2 > > > Jeff want me to suck this into my tg3 trees? That's probably > best. Up to you. Either way I want to make sure it goes into net-drivers-2.5-exp, which has your current tg3-2.5 tree up until now. Jeff ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Bogus return status in drivers/net/tg3.c 2003-12-20 5:49 ` Jeff Garzik @ 2003-12-20 5:54 ` David S. Miller 0 siblings, 0 replies; 7+ messages in thread From: David S. Miller @ 2003-12-20 5:54 UTC (permalink / raw) To: Jeff Garzik; +Cc: romieu, netdev On Sat, 20 Dec 2003 00:49:11 -0500 Jeff Garzik <jgarzik@pobox.com> wrote: > Up to you. Either way I want to make sure it goes into > net-drivers-2.5-exp, which has your current tg3-2.5 tree up until now. I'm concerned how difficult it will be for you to push the net-drivers-2.5-exp tree into 2.6.x any time soon. Let's create a no lose situation :) I'll toss it into my tree and you toss it into your's and this way it'll get in somehow. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2003-12-20 5:54 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-12-19 22:32 [PATCH] Bogus return status in drivers/net/tg3.c Francois Romieu 2003-12-20 0:17 ` [PATCH] Bogus return status in drivers/net/amd8111e.c Francois Romieu 2003-12-20 0:43 ` [PATCH] 2.6.0 - r8169 64 bit Francois Romieu 2003-12-20 1:09 ` Francois Romieu 2003-12-20 5:44 ` [PATCH] Bogus return status in drivers/net/tg3.c David S. Miller 2003-12-20 5:49 ` Jeff Garzik 2003-12-20 5:54 ` David S. Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).