linux-next: manual merge of the kmap_atomic tree with the tree

2 messages, 2 authors, 2012-02-08 · open the first message on its own page

linux-next: manual merge of the kmap_atomic tree with the tree

From: Stephen Rothwell <hidden>
Date: 2012-02-08 04:11:13

Hi Cong,

Today's linux-next merge of the kmap_atomic tree got a conflict in
drivers/net/ethernet/intel/e1000e/netdev.c between commit 0e15df490eef
("e1000e: minor whitespace and indentation cleanup") from the net-next
tree and commit 2b4ba510a572 ("net: remove the second argument of k
[un]map_atomic()") from the kmap_atomic tree.

I fixed it up (see below) and can carry the fix as necessary.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc drivers/net/ethernet/intel/e1000e/netdev.c
index 293a760,7a1ea1d..0000000
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@@ -1267,49 -1253,43 +1267,48 @@@ static bool e1000_clean_rx_irq_ps(struc
  		skb_put(skb, length);
  
  		{
 -		/*
 -		 * this looks ugly, but it seems compiler issues make it
 -		 * more efficient than reusing j
 -		 */
 -		int l1 = le16_to_cpu(rx_desc->wb.upper.length[0]);
 -
 -		/*
 -		 * page alloc/put takes too long and effects small packet
 -		 * throughput, so unsplit small packets and save the alloc/put
 -		 * only valid in softirq (napi) context to call kmap_*
 -		 */
 -		if (l1 && (l1 <= copybreak) &&
 -		    ((length + l1) <= adapter->rx_ps_bsize0)) {
 -			u8 *vaddr;
 -
 -			ps_page = &buffer_info->ps_pages[0];
 +			/*
 +			 * this looks ugly, but it seems compiler issues make
 +			 * it more efficient than reusing j
 +			 */
 +			int l1 = le16_to_cpu(rx_desc->wb.upper.length[0]);
  
  			/*
 -			 * there is no documentation about how to call
 -			 * kmap_atomic, so we can't hold the mapping
 -			 * very long
 +			 * page alloc/put takes too long and effects small
 +			 * packet throughput, so unsplit small packets and
 +			 * save the alloc/put only valid in softirq (napi)
 +			 * context to call kmap_*
  			 */
 -			dma_sync_single_for_cpu(&pdev->dev, ps_page->dma,
 -						PAGE_SIZE, DMA_FROM_DEVICE);
 -			vaddr = kmap_atomic(ps_page->page);
 -			memcpy(skb_tail_pointer(skb), vaddr, l1);
 -			kunmap_atomic(vaddr);
 -			dma_sync_single_for_device(&pdev->dev, ps_page->dma,
 -						   PAGE_SIZE, DMA_FROM_DEVICE);
 -
 -			/* remove the CRC */
 -			if (!(adapter->flags2 & FLAG2_CRC_STRIPPING))
 -				l1 -= 4;
 -
 -			skb_put(skb, l1);
 -			goto copydone;
 -		} /* if */
 +			if (l1 && (l1 <= copybreak) &&
 +			    ((length + l1) <= adapter->rx_ps_bsize0)) {
 +				u8 *vaddr;
 +
 +				ps_page = &buffer_info->ps_pages[0];
 +
 +				/*
 +				 * there is no documentation about how to call
 +				 * kmap_atomic, so we can't hold the mapping
 +				 * very long
 +				 */
 +				dma_sync_single_for_cpu(&pdev->dev,
 +							ps_page->dma,
 +							PAGE_SIZE,
 +							DMA_FROM_DEVICE);
- 				vaddr = kmap_atomic(ps_page->page,
- 						    KM_SKB_DATA_SOFTIRQ);
++				vaddr = kmap_atomic(ps_page->page);
 +				memcpy(skb_tail_pointer(skb), vaddr, l1);
- 				kunmap_atomic(vaddr, KM_SKB_DATA_SOFTIRQ);
++				kunmap_atomic(vaddr);
 +				dma_sync_single_for_device(&pdev->dev,
 +							   ps_page->dma,
 +							   PAGE_SIZE,
 +							   DMA_FROM_DEVICE);
 +
 +				/* remove the CRC */
 +				if (!(adapter->flags2 & FLAG2_CRC_STRIPPING))
 +					l1 -= 4;
 +
 +				skb_put(skb, l1);
 +				goto copydone;
 +			} /* if */
  		}
  
  		for (j = 0; j < PS_PAGE_BUFFERS; j++) {

Re: linux-next: manual merge of the kmap_atomic tree with the tree

From: Cong Wang <hidden>
Date: 2012-02-08 09:30:43

On Wed, 2012-02-08 at 15:10 +1100, Stephen Rothwell wrote:
Hi Cong,

Today's linux-next merge of the kmap_atomic tree got a conflict in
drivers/net/ethernet/intel/e1000e/netdev.c between commit 0e15df490eef
("e1000e: minor whitespace and indentation cleanup") from the net-next
tree and commit 2b4ba510a572 ("net: remove the second argument of k
[un]map_atomic()") from the kmap_atomic tree.

I fixed it up (see below) and can carry the fix as necessary.
Hi, Stephen,

Looks good, thanks!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help