diff options
Diffstat (limited to 'drivers/net/ethernet/realtek/r8169.c')
| -rw-r--r-- | drivers/net/ethernet/realtek/r8169.c | 21 | 
1 files changed, 6 insertions, 15 deletions
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c index ed96f309bca..11702324a07 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c @@ -1826,8 +1826,6 @@ static void rtl8169_rx_vlan_tag(struct RxDesc *desc, struct sk_buff *skb)  	if (opts2 & RxVlanTag)  		__vlan_hwaccel_put_tag(skb, swab16(opts2 & 0xffff)); - -	desc->opts2 = 0;  }  static int rtl8169_gset_tbi(struct net_device *dev, struct ethtool_cmd *cmd) @@ -6064,8 +6062,6 @@ static int rtl_rx(struct net_device *dev, struct rtl8169_private *tp, u32 budget  			    !(status & (RxRWT | RxFOVF)) &&  			    (dev->features & NETIF_F_RXALL))  				goto process_pkt; - -			rtl8169_mark_to_asic(desc, rx_buf_sz);  		} else {  			struct sk_buff *skb;  			dma_addr_t addr; @@ -6086,16 +6082,14 @@ process_pkt:  			if (unlikely(rtl8169_fragmented_frame(status))) {  				dev->stats.rx_dropped++;  				dev->stats.rx_length_errors++; -				rtl8169_mark_to_asic(desc, rx_buf_sz); -				continue; +				goto release_descriptor;  			}  			skb = rtl8169_try_rx_copy(tp->Rx_databuff[entry],  						  tp, pkt_size, addr); -			rtl8169_mark_to_asic(desc, rx_buf_sz);  			if (!skb) {  				dev->stats.rx_dropped++; -				continue; +				goto release_descriptor;  			}  			rtl8169_rx_csum(skb, status); @@ -6111,13 +6105,10 @@ process_pkt:  			tp->rx_stats.bytes += pkt_size;  			u64_stats_update_end(&tp->rx_stats.syncp);  		} - -		/* Work around for AMD plateform. */ -		if ((desc->opts2 & cpu_to_le32(0xfffe000)) && -		    (tp->mac_version == RTL_GIGA_MAC_VER_05)) { -			desc->opts2 = 0; -			cur_rx++; -		} +release_descriptor: +		desc->opts2 = 0; +		wmb(); +		rtl8169_mark_to_asic(desc, rx_buf_sz);  	}  	count = cur_rx - tp->cur_rx;  |