Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24f476ee authored by Auke Kok's avatar Auke Kok Committed by Auke Kok
Browse files

e1000: remove risky prefetch on next_skb->data



It was brought to our attention that the prefetches break e1000 traffic
on xscale/arm architectures.  Remove them for now.  We'll let them
stay in mm for a while, or find a better solution to enable.

Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: default avatarAuke Kok <auke-jan.h.kok@intel.com>
parent b9b6e78b
Loading
Loading
Loading
Loading
+2 −6
Original line number Original line Diff line number Diff line
@@ -3519,7 +3519,7 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
	buffer_info = &rx_ring->buffer_info[i];
	buffer_info = &rx_ring->buffer_info[i];


	while (rx_desc->status & E1000_RXD_STAT_DD) {
	while (rx_desc->status & E1000_RXD_STAT_DD) {
		struct sk_buff *skb, *next_skb;
		struct sk_buff *skb;
		u8 status;
		u8 status;
#ifdef CONFIG_E1000_NAPI
#ifdef CONFIG_E1000_NAPI
		if (*work_done >= work_to_do)
		if (*work_done >= work_to_do)
@@ -3537,8 +3537,6 @@ e1000_clean_rx_irq(struct e1000_adapter *adapter,
		prefetch(next_rxd);
		prefetch(next_rxd);


		next_buffer = &rx_ring->buffer_info[i];
		next_buffer = &rx_ring->buffer_info[i];
		next_skb = next_buffer->skb;
		prefetch(next_skb->data - NET_IP_ALIGN);


		cleaned = TRUE;
		cleaned = TRUE;
		cleaned_count++;
		cleaned_count++;
@@ -3668,7 +3666,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
	struct e1000_buffer *buffer_info, *next_buffer;
	struct e1000_buffer *buffer_info, *next_buffer;
	struct e1000_ps_page *ps_page;
	struct e1000_ps_page *ps_page;
	struct e1000_ps_page_dma *ps_page_dma;
	struct e1000_ps_page_dma *ps_page_dma;
	struct sk_buff *skb, *next_skb;
	struct sk_buff *skb;
	unsigned int i, j;
	unsigned int i, j;
	uint32_t length, staterr;
	uint32_t length, staterr;
	int cleaned_count = 0;
	int cleaned_count = 0;
@@ -3697,8 +3695,6 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
		prefetch(next_rxd);
		prefetch(next_rxd);


		next_buffer = &rx_ring->buffer_info[i];
		next_buffer = &rx_ring->buffer_info[i];
		next_skb = next_buffer->skb;
		prefetch(next_skb->data - NET_IP_ALIGN);


		cleaned = TRUE;
		cleaned = TRUE;
		cleaned_count++;
		cleaned_count++;