mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	igb: Use page_address offset from page instead of masking virtual address
Update the handling of page addresses so that we always refer to them using a void pointer, and try to use the consistent name of va indicating we are working with a virtual address. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
		
							parent
							
								
									cb0ef1d1dc
								
							
						
					
					
						commit
						3456fd5342
					
				| @ -614,7 +614,7 @@ void igb_ptp_reset(struct igb_adapter *adapter); | |||||||
| void igb_ptp_suspend(struct igb_adapter *adapter); | void igb_ptp_suspend(struct igb_adapter *adapter); | ||||||
| void igb_ptp_rx_hang(struct igb_adapter *adapter); | void igb_ptp_rx_hang(struct igb_adapter *adapter); | ||||||
| void igb_ptp_rx_rgtstamp(struct igb_q_vector *q_vector, struct sk_buff *skb); | void igb_ptp_rx_rgtstamp(struct igb_q_vector *q_vector, struct sk_buff *skb); | ||||||
| void igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, unsigned char *va, | void igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va, | ||||||
| 			 struct sk_buff *skb); | 			 struct sk_buff *skb); | ||||||
| int igb_ptp_set_ts_config(struct net_device *netdev, struct ifreq *ifr); | int igb_ptp_set_ts_config(struct net_device *netdev, struct ifreq *ifr); | ||||||
| int igb_ptp_get_ts_config(struct net_device *netdev, struct ifreq *ifr); | int igb_ptp_get_ts_config(struct net_device *netdev, struct ifreq *ifr); | ||||||
|  | |||||||
| @ -6927,7 +6927,7 @@ static bool igb_add_rx_frag(struct igb_ring *rx_ring, | |||||||
| 			    struct sk_buff *skb) | 			    struct sk_buff *skb) | ||||||
| { | { | ||||||
| 	struct page *page = rx_buffer->page; | 	struct page *page = rx_buffer->page; | ||||||
| 	unsigned char *va = page_address(page) + rx_buffer->page_offset; | 	void *va = page_address(page) + rx_buffer->page_offset; | ||||||
| #if (PAGE_SIZE < 8192) | #if (PAGE_SIZE < 8192) | ||||||
| 	unsigned int truesize = IGB_RX_BUFSZ; | 	unsigned int truesize = IGB_RX_BUFSZ; | ||||||
| #else | #else | ||||||
| @ -6969,7 +6969,7 @@ static bool igb_add_rx_frag(struct igb_ring *rx_ring, | |||||||
| 
 | 
 | ||||||
| add_tail_frag: | add_tail_frag: | ||||||
| 	skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, | 	skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, | ||||||
| 			(unsigned long)va & ~PAGE_MASK, size, truesize); | 			va - page_address(page), size, truesize); | ||||||
| 
 | 
 | ||||||
| 	return igb_can_reuse_rx_page(rx_buffer, page, truesize); | 	return igb_can_reuse_rx_page(rx_buffer, page, truesize); | ||||||
| } | } | ||||||
| @ -6994,13 +6994,12 @@ static struct sk_buff *igb_fetch_rx_buffer(struct igb_ring *rx_ring, | |||||||
| 				      DMA_FROM_DEVICE); | 				      DMA_FROM_DEVICE); | ||||||
| 
 | 
 | ||||||
| 	if (likely(!skb)) { | 	if (likely(!skb)) { | ||||||
| 		void *page_addr = page_address(page) + | 		void *va = page_address(page) + rx_buffer->page_offset; | ||||||
| 				  rx_buffer->page_offset; |  | ||||||
| 
 | 
 | ||||||
| 		/* prefetch first cache line of first page */ | 		/* prefetch first cache line of first page */ | ||||||
| 		prefetch(page_addr); | 		prefetch(va); | ||||||
| #if L1_CACHE_BYTES < 128 | #if L1_CACHE_BYTES < 128 | ||||||
| 		prefetch(page_addr + L1_CACHE_BYTES); | 		prefetch(va + L1_CACHE_BYTES); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 		/* allocate a skb to store the frags */ | 		/* allocate a skb to store the frags */ | ||||||
|  | |||||||
| @ -764,8 +764,7 @@ static void igb_ptp_tx_hwtstamp(struct igb_adapter *adapter) | |||||||
|  * incoming frame.  The value is stored in little endian format starting on |  * incoming frame.  The value is stored in little endian format starting on | ||||||
|  * byte 8. |  * byte 8. | ||||||
|  **/ |  **/ | ||||||
| void igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, | void igb_ptp_rx_pktstamp(struct igb_q_vector *q_vector, void *va, | ||||||
| 			 unsigned char *va, |  | ||||||
| 			 struct sk_buff *skb) | 			 struct sk_buff *skb) | ||||||
| { | { | ||||||
| 	__le64 *regval = (__le64 *)va; | 	__le64 *regval = (__le64 *)va; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Alexander Duyck
						Alexander Duyck