diff options
author | Ian Campbell <Ian.Campbell@citrix.com> | 2011-08-29 19:18:26 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-08-30 17:58:01 -0400 |
commit | 877749bf3f2f7a517ae74cd2c2fa4eed7aa9b51d (patch) | |
tree | 31ae3231c7a81515b82bd8e60397a05cdf61709b | |
parent | 18324d690d6a5028e3c174fc1921447aedead2b8 (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.c | 16 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/e1000e/netdev.c | 7 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igb/igb_main.c | 5 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igbvf/netdev.c | 5 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgb/ixgb_main.c | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 10 |
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; |