From fbde90a97bcc1709897dd01526eff4af0f7cee63 Mon Sep 17 00:00:00 2001 From: Hayes Wang Date: Tue, 6 Sep 2011 16:55:15 +0800 Subject: [PATCH] --- yaml --- r: 266158 b: refs/heads/master c: 3090bd9a3102331ed981280ef05ee5433ce978d7 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/ethernet/3com/typhoon.c | 3 ++- trunk/drivers/net/ethernet/adaptec/starfire.c | 5 +---- trunk/drivers/net/ethernet/marvell/skge.c | 4 ++-- trunk/drivers/net/ethernet/marvell/sky2.c | 13 +++++++------ trunk/drivers/net/ethernet/neterion/s2io.c | 8 ++++---- trunk/drivers/net/ethernet/realtek/r8169.c | 3 ++- trunk/drivers/net/ethernet/seeq/Kconfig | 1 - trunk/drivers/net/ethernet/sfc/rx.c | 2 +- trunk/drivers/net/ethernet/sfc/tx.c | 13 +++++++++---- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 5 +++-- trunk/drivers/net/ethernet/sun/sungem.c | 6 ++++-- trunk/drivers/net/ethernet/sun/sunhme.c | 5 +++-- trunk/drivers/net/ethernet/tehuti/tehuti.c | 6 +++--- trunk/drivers/net/ethernet/tundra/tsi108_eth.c | 7 +++---- trunk/drivers/net/ethernet/via/via-velocity.c | 7 +++---- trunk/drivers/net/virtio_net.c | 2 +- trunk/drivers/net/vmxnet3/vmxnet3_drv.c | 8 ++++---- 18 files changed, 53 insertions(+), 47 deletions(-) diff --git a/[refs] b/[refs] index 7563fe797227..1b5f6abd8e35 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 757216efb8f1bcab152c3f4c33ad7862b2f6663a +refs/heads/master: 3090bd9a3102331ed981280ef05ee5433ce978d7 diff --git a/trunk/drivers/net/ethernet/3com/typhoon.c b/trunk/drivers/net/ethernet/3com/typhoon.c index 607c09e3dc80..f1dc9acf6105 100644 --- a/trunk/drivers/net/ethernet/3com/typhoon.c +++ b/trunk/drivers/net/ethernet/3com/typhoon.c @@ -819,7 +819,8 @@ typhoon_start_tx(struct sk_buff *skb, struct net_device *dev) typhoon_inc_tx_index(&txRing->lastWrite, 1); len = frag->size; - frag_addr = skb_frag_address(frag); + frag_addr = (void *) page_address(frag->page) + + frag->page_offset; skb_dma = pci_map_single(tp->tx_pdev, frag_addr, len, PCI_DMA_TODEVICE); txd->flags = TYPHOON_FRAG_DESC | TYPHOON_DESC_VALID; diff --git a/trunk/drivers/net/ethernet/adaptec/starfire.c b/trunk/drivers/net/ethernet/adaptec/starfire.c index d6b015598569..df51fdd72353 100644 --- a/trunk/drivers/net/ethernet/adaptec/starfire.c +++ b/trunk/drivers/net/ethernet/adaptec/starfire.c @@ -1259,10 +1259,7 @@ static netdev_tx_t start_tx(struct sk_buff *skb, struct net_device *dev) skb_frag_t *this_frag = &skb_shinfo(skb)->frags[i - 1]; status |= this_frag->size; np->tx_info[entry].mapping = - pci_map_single(np->pci_dev, - skb_frag_address(this_frag), - this_frag->size, - PCI_DMA_TODEVICE); + pci_map_single(np->pci_dev, page_address(this_frag->page) + this_frag->page_offset, this_frag->size, PCI_DMA_TODEVICE); } np->tx_ring[entry].addr = cpu_to_dma(np->tx_info[entry].mapping); diff --git a/trunk/drivers/net/ethernet/marvell/skge.c b/trunk/drivers/net/ethernet/marvell/skge.c index 88e5856e06db..34622b038094 100644 --- a/trunk/drivers/net/ethernet/marvell/skge.c +++ b/trunk/drivers/net/ethernet/marvell/skge.c @@ -2758,8 +2758,8 @@ static netdev_tx_t skge_xmit_frame(struct sk_buff *skb, for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; - map = skb_frag_dma_map(&hw->pdev->dev, frag, 0, - frag->size, PCI_DMA_TODEVICE); + map = pci_map_page(hw->pdev, frag->page, frag->page_offset, + frag->size, PCI_DMA_TODEVICE); e = e->next; e->skb = skb; diff --git a/trunk/drivers/net/ethernet/marvell/sky2.c b/trunk/drivers/net/ethernet/marvell/sky2.c index ef2dc021d09c..3ff0a1292933 100644 --- a/trunk/drivers/net/ethernet/marvell/sky2.c +++ b/trunk/drivers/net/ethernet/marvell/sky2.c @@ -1226,9 +1226,10 @@ static int sky2_rx_map_skb(struct pci_dev *pdev, struct rx_ring_info *re, for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; - re->frag_addr[i] = skb_frag_dma_map(&pdev->dev, frag, 0, - frag->size, - PCI_DMA_FROMDEVICE); + re->frag_addr[i] = pci_map_page(pdev, frag->page, + frag->page_offset, + frag->size, + PCI_DMA_FROMDEVICE); if (pci_dma_mapping_error(pdev, re->frag_addr[i])) goto map_page_error; @@ -1909,8 +1910,8 @@ static netdev_tx_t sky2_xmit_frame(struct sk_buff *skb, for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { const skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; - mapping = skb_frag_dma_map(&hw->pdev->dev, frag, 0, - frag->size, PCI_DMA_TODEVICE); + mapping = pci_map_page(hw->pdev, frag->page, frag->page_offset, + frag->size, PCI_DMA_TODEVICE); if (pci_dma_mapping_error(hw->pdev, mapping)) goto mapping_unwind; @@ -2448,7 +2449,7 @@ static void skb_put_frags(struct sk_buff *skb, unsigned int hdr_space, if (length == 0) { /* don't need this page */ - __skb_frag_unref(frag); + __free_page(frag->page); --skb_shinfo(skb)->nr_frags; } else { size = min(length, (unsigned) PAGE_SIZE); diff --git a/trunk/drivers/net/ethernet/neterion/s2io.c b/trunk/drivers/net/ethernet/neterion/s2io.c index ef5b825a9a9c..840cbb25bdde 100644 --- a/trunk/drivers/net/ethernet/neterion/s2io.c +++ b/trunk/drivers/net/ethernet/neterion/s2io.c @@ -4190,10 +4190,10 @@ static netdev_tx_t s2io_xmit(struct sk_buff *skb, struct net_device *dev) if (!frag->size) continue; txdp++; - txdp->Buffer_Pointer = (u64)skb_frag_dma_map(&sp->pdev->dev, - frag, 0, - frag->size, - PCI_DMA_TODEVICE); + txdp->Buffer_Pointer = (u64)pci_map_page(sp->pdev, frag->page, + frag->page_offset, + frag->size, + PCI_DMA_TODEVICE); txdp->Control_1 = TXD_BUFFER0_SIZE(frag->size); if (offload_type == SKB_GSO_UDP) txdp->Control_1 |= TXD_UFO_EN; diff --git a/trunk/drivers/net/ethernet/realtek/r8169.c b/trunk/drivers/net/ethernet/realtek/r8169.c index 6eb9f4ea3bfd..44b40ea1d443 100644 --- a/trunk/drivers/net/ethernet/realtek/r8169.c +++ b/trunk/drivers/net/ethernet/realtek/r8169.c @@ -311,6 +311,7 @@ enum rtl_registers { MaxTxPacketSize = 0xec, /* 8101/8168. Unit of 128 bytes. */ #define TxPacketMax (8064 >> 7) +#define EarlySize 0x27 FuncEvent = 0xf0, FuncEventMask = 0xf4, @@ -4479,7 +4480,7 @@ static void rtl_hw_start_8168e_2(void __iomem *ioaddr, struct pci_dev *pdev) rtl_w1w0_eri(ioaddr, 0x0d4, ERIAR_MASK_0011, 0x0c00, 0xff00, ERIAR_EXGMAC); - RTL_W8(MaxTxPacketSize, 0x27); + RTL_W8(MaxTxPacketSize, EarlySize); rtl_disable_clock_request(pdev); diff --git a/trunk/drivers/net/ethernet/seeq/Kconfig b/trunk/drivers/net/ethernet/seeq/Kconfig index 29f18533fdc7..49b6d5b1dfd2 100644 --- a/trunk/drivers/net/ethernet/seeq/Kconfig +++ b/trunk/drivers/net/ethernet/seeq/Kconfig @@ -5,7 +5,6 @@ config NET_VENDOR_SEEQ bool "SEEQ devices" default y - depends on HAS_IOMEM depends on (ARM && ARCH_ACORN) || SGI_HAS_SEEQ || EXPERIMENTAL ---help--- If you have a network (Ethernet) card belonging to this class, say Y diff --git a/trunk/drivers/net/ethernet/sfc/rx.c b/trunk/drivers/net/ethernet/sfc/rx.c index 91a6b7123539..62e43649466e 100644 --- a/trunk/drivers/net/ethernet/sfc/rx.c +++ b/trunk/drivers/net/ethernet/sfc/rx.c @@ -478,7 +478,7 @@ static void efx_rx_packet_gro(struct efx_channel *channel, if (efx->net_dev->features & NETIF_F_RXHASH) skb->rxhash = efx_rx_buf_hash(eh); - skb_frag_set_page(skb, 0, page); + skb_shinfo(skb)->frags[0].page = page; skb_shinfo(skb)->frags[0].page_offset = efx_rx_buf_offset(efx, rx_buf); skb_shinfo(skb)->frags[0].size = rx_buf->len; diff --git a/trunk/drivers/net/ethernet/sfc/tx.c b/trunk/drivers/net/ethernet/sfc/tx.c index f2467a1b51bd..84eb99e0f8d2 100644 --- a/trunk/drivers/net/ethernet/sfc/tx.c +++ b/trunk/drivers/net/ethernet/sfc/tx.c @@ -137,6 +137,8 @@ netdev_tx_t efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb) struct pci_dev *pci_dev = efx->pci_dev; struct efx_tx_buffer *buffer; skb_frag_t *fragment; + struct page *page; + int page_offset; unsigned int len, unmap_len = 0, fill_level, insert_ptr; dma_addr_t dma_addr, unmap_addr = 0; unsigned int dma_len; @@ -239,11 +241,13 @@ netdev_tx_t efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb) break; fragment = &skb_shinfo(skb)->frags[i]; len = fragment->size; + page = fragment->page; + page_offset = fragment->page_offset; i++; /* Map for DMA */ unmap_single = false; - dma_addr = skb_frag_dma_map(&pci_dev->dev, fragment, 0, len, - PCI_DMA_TODEVICE); + dma_addr = pci_map_page(pci_dev, page, page_offset, len, + PCI_DMA_TODEVICE); } /* Transfer ownership of the skb to the final buffer */ @@ -925,8 +929,9 @@ static void tso_start(struct tso_state *st, const struct sk_buff *skb) static int tso_get_fragment(struct tso_state *st, struct efx_nic *efx, skb_frag_t *frag) { - st->unmap_addr = skb_frag_dma_map(&efx->pci_dev->dev, frag, 0, - frag->size, PCI_DMA_TODEVICE); + st->unmap_addr = pci_map_page(efx->pci_dev, frag->page, + frag->page_offset, frag->size, + PCI_DMA_TODEVICE); if (likely(!pci_dma_mapping_error(efx->pci_dev, st->unmap_addr))) { st->unmap_single = false; st->unmap_len = frag->size; diff --git a/trunk/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/trunk/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index c0ee6b6b0198..d0fbc5477d10 100644 --- a/trunk/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/trunk/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1113,8 +1113,9 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev) desc = priv->dma_tx + entry; TX_DBG("\t[entry %d] segment len: %d\n", entry, len); - desc->des2 = skb_frag_dma_map(priv->device, frag, 0, len, - DMA_TO_DEVICE); + desc->des2 = dma_map_page(priv->device, frag->page, + frag->page_offset, + len, DMA_TO_DEVICE); priv->tx_skbuff[entry] = NULL; priv->hw->desc->prepare_tx_desc(desc, 0, len, csum_insertion); wmb(); diff --git a/trunk/drivers/net/ethernet/sun/sungem.c b/trunk/drivers/net/ethernet/sun/sungem.c index 2bfa1715fe23..11fd299f5b99 100644 --- a/trunk/drivers/net/ethernet/sun/sungem.c +++ b/trunk/drivers/net/ethernet/sun/sungem.c @@ -1071,8 +1071,10 @@ static netdev_tx_t gem_start_xmit(struct sk_buff *skb, u64 this_ctrl; len = this_frag->size; - mapping = skb_frag_dma_map(&gp->pdev->dev, this_frag, - 0, len, PCI_DMA_TODEVICE); + mapping = pci_map_page(gp->pdev, + this_frag->page, + this_frag->page_offset, + len, PCI_DMA_TODEVICE); this_ctrl = ctrl; if (frag == skb_shinfo(skb)->nr_frags - 1) this_ctrl |= TXDCTRL_EOF; diff --git a/trunk/drivers/net/ethernet/sun/sunhme.c b/trunk/drivers/net/ethernet/sun/sunhme.c index 869d47be54b4..42f866ef81e1 100644 --- a/trunk/drivers/net/ethernet/sun/sunhme.c +++ b/trunk/drivers/net/ethernet/sun/sunhme.c @@ -2309,8 +2309,9 @@ static netdev_tx_t happy_meal_start_xmit(struct sk_buff *skb, u32 len, mapping, this_txflags; len = this_frag->size; - mapping = skb_frag_dma_map(hp->dma_dev, this_frag, - 0, len, DMA_TO_DEVICE); + mapping = dma_map_page(hp->dma_dev, this_frag->page, + this_frag->page_offset, len, + DMA_TO_DEVICE); this_txflags = tx_flags; if (frag == skb_shinfo(skb)->nr_frags - 1) this_txflags |= TXFLAG_EOP; diff --git a/trunk/drivers/net/ethernet/tehuti/tehuti.c b/trunk/drivers/net/ethernet/tehuti/tehuti.c index 371ab7abd377..bc65aa8de4d0 100644 --- a/trunk/drivers/net/ethernet/tehuti/tehuti.c +++ b/trunk/drivers/net/ethernet/tehuti/tehuti.c @@ -1497,9 +1497,9 @@ bdx_tx_map_skb(struct bdx_priv *priv, struct sk_buff *skb, frag = &skb_shinfo(skb)->frags[i]; db->wptr->len = frag->size; - db->wptr->addr.dma = skb_frag_dma_map(&priv->pdev->dev, frag, - 0, frag->size, - PCI_DMA_TODEVICE); + db->wptr->addr.dma = + pci_map_page(priv->pdev, frag->page, frag->page_offset, + frag->size, PCI_DMA_TODEVICE); pbl++; pbl->len = CPU_CHIP_SWAP32(db->wptr->len); diff --git a/trunk/drivers/net/ethernet/tundra/tsi108_eth.c b/trunk/drivers/net/ethernet/tundra/tsi108_eth.c index a03996cf88ed..480a4ba53172 100644 --- a/trunk/drivers/net/ethernet/tundra/tsi108_eth.c +++ b/trunk/drivers/net/ethernet/tundra/tsi108_eth.c @@ -711,10 +711,9 @@ static int tsi108_send_packet(struct sk_buff * skb, struct net_device *dev) } else { skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1]; - data->txring[tx].buf0 = skb_frag_dma_map(NULL, frag, - 0, - frag->size, - DMA_TO_DEVICE); + data->txring[tx].buf0 = + dma_map_page(NULL, frag->page, frag->page_offset, + frag->size, DMA_TO_DEVICE); data->txring[tx].len = frag->size; } diff --git a/trunk/drivers/net/ethernet/via/via-velocity.c b/trunk/drivers/net/ethernet/via/via-velocity.c index 1ec32c424e07..086463b141b6 100644 --- a/trunk/drivers/net/ethernet/via/via-velocity.c +++ b/trunk/drivers/net/ethernet/via/via-velocity.c @@ -2556,10 +2556,9 @@ static netdev_tx_t velocity_xmit(struct sk_buff *skb, for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; - tdinfo->skb_dma[i + 1] = skb_frag_dma_map(&vptr->pdev->dev, - frag, 0, - frag->size, - PCI_DMA_TODEVICE); + tdinfo->skb_dma[i + 1] = pci_map_page(vptr->pdev, frag->page, + frag->page_offset, frag->size, + PCI_DMA_TODEVICE); td_ptr->td_buf[i + 1].pa_low = cpu_to_le32(tdinfo->skb_dma[i + 1]); td_ptr->td_buf[i + 1].pa_high = 0; diff --git a/trunk/drivers/net/virtio_net.c b/trunk/drivers/net/virtio_net.c index d6e93ba9ff47..4f09f88f1c28 100644 --- a/trunk/drivers/net/virtio_net.c +++ b/trunk/drivers/net/virtio_net.c @@ -149,7 +149,7 @@ static void set_skb_frag(struct sk_buff *skb, struct page *page, f = &skb_shinfo(skb)->frags[i]; f->size = min((unsigned)PAGE_SIZE - offset, *len); f->page_offset = offset; - __skb_frag_set_page(f, page); + f->page = page; skb->data_len += f->size; skb->len += f->size; diff --git a/trunk/drivers/net/vmxnet3/vmxnet3_drv.c b/trunk/drivers/net/vmxnet3/vmxnet3_drv.c index 57e7c66a9057..759c1a49cc7b 100644 --- a/trunk/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/trunk/drivers/net/vmxnet3/vmxnet3_drv.c @@ -654,7 +654,7 @@ vmxnet3_append_frag(struct sk_buff *skb, struct Vmxnet3_RxCompDesc *rcd, BUG_ON(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS); - __skb_frag_set_page(frag, rbi->page); + frag->page = rbi->page; frag->page_offset = 0; frag->size = rcd->len; skb->data_len += frag->size; @@ -748,9 +748,9 @@ vmxnet3_map_pkt(struct sk_buff *skb, struct vmxnet3_tx_ctx *ctx, tbi = tq->buf_info + tq->tx_ring.next2fill; tbi->map_type = VMXNET3_MAP_PAGE; - tbi->dma_addr = skb_frag_dma_map(&adapter->pdev->dev, frag, - 0, frag->size, - PCI_DMA_TODEVICE); + tbi->dma_addr = pci_map_page(adapter->pdev, frag->page, + frag->page_offset, frag->size, + PCI_DMA_TODEVICE); tbi->len = frag->size;