aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Campbell <Ian.Campbell@citrix.com>2011-08-29 19:18:26 -0400
committerDavid S. Miller <davem@davemloft.net>2011-08-30 17:58:01 -0400
commit877749bf3f2f7a517ae74cd2c2fa4eed7aa9b51d (patch)
tree31ae3231c7a81515b82bd8e60397a05cdf61709b
parent18324d690d6a5028e3c174fc1921447aedead2b8 (diff)
intel: convert to SKB paged frag API.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Cc: Jesse Brandeburg <jesse.brandeburg@intel.com> Cc: Bruce Allan <bruce.w.allan@intel.com> Cc: Carolyn Wyborny <carolyn.wyborny@intel.com> Cc: Don Skidmore <donald.c.skidmore@intel.com> Cc: Greg Rose <gregory.v.rose@intel.com> Cc: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com> Cc: Alex Duyck <alexander.h.duyck@intel.com> Cc: John Ronciak <john.ronciak@intel.com> Cc: e1000-devel@lists.sourceforge.net Cc: netdev@vger.kernel.org Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_main.c16
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c7
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c5
-rw-r--r--drivers/net/ethernet/intel/igbvf/netdev.c5
-rw-r--r--drivers/net/ethernet/intel/ixgb/ixgb_main.c6
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c3
-rw-r--r--drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c10
7 files changed, 22 insertions, 30 deletions
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index 4a32c15524c9..27f586afcc34 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -2911,9 +2911,10 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
2911 2911
2912 frag = &skb_shinfo(skb)->frags[f]; 2912 frag = &skb_shinfo(skb)->frags[f];
2913 len = frag->size; 2913 len = frag->size;
2914 offset = frag->page_offset; 2914 offset = 0;
2915 2915
2916 while (len) { 2916 while (len) {
2917 unsigned long bufend;
2917 i++; 2918 i++;
2918 if (unlikely(i == tx_ring->count)) 2919 if (unlikely(i == tx_ring->count))
2919 i = 0; 2920 i = 0;
@@ -2927,18 +2928,19 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
2927 /* Workaround for potential 82544 hang in PCI-X. 2928 /* Workaround for potential 82544 hang in PCI-X.
2928 * Avoid terminating buffers within evenly-aligned 2929 * Avoid terminating buffers within evenly-aligned
2929 * dwords. */ 2930 * dwords. */
2931 bufend = (unsigned long)
2932 page_to_phys(skb_frag_page(frag));
2933 bufend += offset + size - 1;
2930 if (unlikely(adapter->pcix_82544 && 2934 if (unlikely(adapter->pcix_82544 &&
2931 !((unsigned long)(page_to_phys(frag->page) + offset 2935 !(bufend & 4) &&
2932 + size - 1) & 4) && 2936 size > 4))
2933 size > 4))
2934 size -= 4; 2937 size -= 4;
2935 2938
2936 buffer_info->length = size; 2939 buffer_info->length = size;
2937 buffer_info->time_stamp = jiffies; 2940 buffer_info->time_stamp = jiffies;
2938 buffer_info->mapped_as_page = true; 2941 buffer_info->mapped_as_page = true;
2939 buffer_info->dma = dma_map_page(&pdev->dev, frag->page, 2942 buffer_info->dma = skb_frag_dma_map(&pdev->dev, frag,
2940 offset, size, 2943 offset, size, DMA_TO_DEVICE);
2941 DMA_TO_DEVICE);
2942 if (dma_mapping_error(&pdev->dev, buffer_info->dma)) 2944 if (dma_mapping_error(&pdev->dev, buffer_info->dma))
2943 goto dma_error; 2945 goto dma_error;
2944 buffer_info->next_to_watch = i; 2946 buffer_info->next_to_watch = i;
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 4f669995623f..78c5d21fa34b 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -4677,7 +4677,7 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
4677 4677
4678 frag = &skb_shinfo(skb)->frags[f]; 4678 frag = &skb_shinfo(skb)->frags[f];
4679 len = frag->size; 4679 len = frag->size;
4680 offset = frag->page_offset; 4680 offset = 0;
4681 4681
4682 while (len) { 4682 while (len) {
4683 i++; 4683 i++;
@@ -4690,9 +4690,8 @@ static int e1000_tx_map(struct e1000_adapter *adapter,
4690 buffer_info->length = size; 4690 buffer_info->length = size;
4691 buffer_info->time_stamp = jiffies; 4691 buffer_info->time_stamp = jiffies;
4692 buffer_info->next_to_watch = i; 4692 buffer_info->next_to_watch = i;
4693 buffer_info->dma = dma_map_page(&pdev->dev, frag->page, 4693 buffer_info->dma = skb_frag_dma_map(&pdev->dev, frag,
4694 offset, size, 4694 offset, size, DMA_TO_DEVICE);
4695 DMA_TO_DEVICE);
4696 buffer_info->mapped_as_page = true; 4695 buffer_info->mapped_as_page = true;
4697 if (dma_mapping_error(&pdev->dev, buffer_info->dma)) 4696 if (dma_mapping_error(&pdev->dev, buffer_info->dma))
4698 goto dma_error; 4697 goto dma_error;
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 801608497409..3cb1bc96bf70 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -4174,10 +4174,7 @@ static inline int igb_tx_map_adv(struct igb_ring *tx_ring, struct sk_buff *skb,
4174 buffer_info->time_stamp = jiffies; 4174 buffer_info->time_stamp = jiffies;
4175 buffer_info->next_to_watch = i; 4175 buffer_info->next_to_watch = i;
4176 buffer_info->mapped_as_page = true; 4176 buffer_info->mapped_as_page = true;
4177 buffer_info->dma = dma_map_page(dev, 4177 buffer_info->dma = skb_frag_dma_map(dev, frag, 0, len,
4178 frag->page,
4179 frag->page_offset,
4180 len,
4181 DMA_TO_DEVICE); 4178 DMA_TO_DEVICE);
4182 if (dma_mapping_error(dev, buffer_info->dma)) 4179 if (dma_mapping_error(dev, buffer_info->dma))
4183 goto dma_error; 4180 goto dma_error;
diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c
index a6bdb3c744f0..b3d760b08a5f 100644
--- a/drivers/net/ethernet/intel/igbvf/netdev.c
+++ b/drivers/net/ethernet/intel/igbvf/netdev.c
@@ -2061,10 +2061,7 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
2061 buffer_info->time_stamp = jiffies; 2061 buffer_info->time_stamp = jiffies;
2062 buffer_info->next_to_watch = i; 2062 buffer_info->next_to_watch = i;
2063 buffer_info->mapped_as_page = true; 2063 buffer_info->mapped_as_page = true;
2064 buffer_info->dma = dma_map_page(&pdev->dev, 2064 buffer_info->dma = skb_frag_dma_map(&pdev->dev, frag, 0, len,
2065 frag->page,
2066 frag->page_offset,
2067 len,
2068 DMA_TO_DEVICE); 2065 DMA_TO_DEVICE);
2069 if (dma_mapping_error(&pdev->dev, buffer_info->dma)) 2066 if (dma_mapping_error(&pdev->dev, buffer_info->dma))
2070 goto dma_error; 2067 goto dma_error;
diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
index b8ef2c0fc5d0..c8b9c9028bc0 100644
--- a/drivers/net/ethernet/intel/ixgb/ixgb_main.c
+++ b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
@@ -1341,7 +1341,7 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
1341 1341
1342 frag = &skb_shinfo(skb)->frags[f]; 1342 frag = &skb_shinfo(skb)->frags[f];
1343 len = frag->size; 1343 len = frag->size;
1344 offset = frag->page_offset; 1344 offset = 0;
1345 1345
1346 while (len) { 1346 while (len) {
1347 i++; 1347 i++;
@@ -1361,8 +1361,8 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
1361 buffer_info->time_stamp = jiffies; 1361 buffer_info->time_stamp = jiffies;
1362 buffer_info->mapped_as_page = true; 1362 buffer_info->mapped_as_page = true;
1363 buffer_info->dma = 1363 buffer_info->dma =
1364 dma_map_page(&pdev->dev, frag->page, 1364 skb_frag_dma_map(&pdev->dev, frag, offset, size,
1365 offset, size, DMA_TO_DEVICE); 1365 DMA_TO_DEVICE);
1366 if (dma_mapping_error(&pdev->dev, buffer_info->dma)) 1366 if (dma_mapping_error(&pdev->dev, buffer_info->dma))
1367 goto dma_error; 1367 goto dma_error;
1368 buffer_info->next_to_watch = 0; 1368 buffer_info->next_to_watch = 0;
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index a30f8266df00..d20e8040d855 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -6494,8 +6494,7 @@ static void ixgbe_tx_map(struct ixgbe_ring *tx_ring,
6494 offset = 0; 6494 offset = 0;
6495 tx_flags |= IXGBE_TX_FLAGS_MAPPED_AS_PAGE; 6495 tx_flags |= IXGBE_TX_FLAGS_MAPPED_AS_PAGE;
6496 6496
6497 dma = dma_map_page(dev, frag->page, frag->page_offset, 6497 dma = skb_frag_dma_map(dev, frag, 0, size, DMA_TO_DEVICE);
6498 size, DMA_TO_DEVICE);
6499 if (dma_mapping_error(dev, dma)) 6498 if (dma_mapping_error(dev, dma))
6500 goto dma_error; 6499 goto dma_error;
6501 6500
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 98963970206e..d72905b77aba 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -2918,18 +2918,16 @@ static int ixgbevf_tx_map(struct ixgbevf_adapter *adapter,
2918 2918
2919 frag = &skb_shinfo(skb)->frags[f]; 2919 frag = &skb_shinfo(skb)->frags[f];
2920 len = min((unsigned int)frag->size, total); 2920 len = min((unsigned int)frag->size, total);
2921 offset = frag->page_offset; 2921 offset = 0;
2922 2922
2923 while (len) { 2923 while (len) {
2924 tx_buffer_info = &tx_ring->tx_buffer_info[i]; 2924 tx_buffer_info = &tx_ring->tx_buffer_info[i];
2925 size = min(len, (unsigned int)IXGBE_MAX_DATA_PER_TXD); 2925 size = min(len, (unsigned int)IXGBE_MAX_DATA_PER_TXD);
2926 2926
2927 tx_buffer_info->length = size; 2927 tx_buffer_info->length = size;
2928 tx_buffer_info->dma = dma_map_page(&adapter->pdev->dev, 2928 tx_buffer_info->dma =
2929 frag->page, 2929 skb_frag_dma_map(&adapter->pdev->dev, frag,
2930 offset, 2930 offset, size, DMA_TO_DEVICE);
2931 size,
2932 DMA_TO_DEVICE);
2933 tx_buffer_info->mapped_as_page = true; 2931 tx_buffer_info->mapped_as_page = true;
2934 if (dma_mapping_error(&pdev->dev, tx_buffer_info->dma)) 2932 if (dma_mapping_error(&pdev->dev, tx_buffer_info->dma))
2935 goto dma_error; 2933 goto dma_error;