From patchwork Tue Aug 13 20:37:45 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Wu X-Patchwork-Id: 266917 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 6CE1F2C00F4 for ; Wed, 14 Aug 2013 06:37:56 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759238Ab3HMUhw (ORCPT ); Tue, 13 Aug 2013 16:37:52 -0400 Received: from mail-wg0-f46.google.com ([74.125.82.46]:52911 "EHLO mail-wg0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759174Ab3HMUhv (ORCPT ); Tue, 13 Aug 2013 16:37:51 -0400 Received: by mail-wg0-f46.google.com with SMTP id k13so6935471wgh.25 for ; Tue, 13 Aug 2013 13:37:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=gbgVX4HdpwrVArvFwvQROzm0J7L9FS137gnq/v5hmyI=; b=oMqmO39aZk0eq6j3v+xmbhsxK9TBCz6Mi9GhUvFuaHbytoeg9psR89gifp3ujpMIhV TyjLuJH9pK3Vd3ydxPrlMQ/j+QBoC02sr/DuWyICGbdV1M9t4rShwHJ0PwtyL7Fviufg V2Xopn4/iUydxa4ltOL/ixt/PJVKIZv0q2AYyB/aYwkcolfOisqzr1k3488KEBhoMe6T zyQU4dnhg+mo+GyrVM8BNBdIrRq3l/KJQuq0VdgKiTLf9WAeW+f9mRUaZFoipTWDQWib bcaRrSdY0V6jMBjh0/7NqR/6OIxie4iORH3wCdxaID4xo+EeIfKYEWo4hHlYnMBk6tm9 i+8w== X-Received: by 10.180.97.101 with SMTP id dz5mr305379wib.11.1376426269879; Tue, 13 Aug 2013 13:37:49 -0700 (PDT) Received: from localhost.localdomain (ip4da018ae.direct-adsl.nl. [77.160.24.174]) by mx.google.com with ESMTPSA id r6sm5594120wiw.0.2013.08.13.13.37.47 for (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 13 Aug 2013 13:37:48 -0700 (PDT) From: Peter Wu To: Francois Romieu Cc: netdev@vger.kernel.org, nic_swsd@realtek.com, lekensteyn@gmail.com Subject: [PATCH] r8169: fix invalid register dump Date: Tue, 13 Aug 2013 22:37:45 +0200 Message-Id: <1376426265-30353-1-git-send-email-lekensteyn@gmail.com> X-Mailer: git-send-email 1.8.3.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Peter Wu For some reason, my PCIe RTL8111E onboard NIC on a GA-Z68X-UD3H-B3 motherboard reads as FFs when reading from MMIO with a block size larger than 7. Therefore change to reading blocks of four bytes. Signed-off-by: Peter Wu --- Hi, Personally I dislike the repetition of this patch, a hypothetical `memcpy_fromio_block(bytes, tp->mmio_addr, 4)` would look cleaner, but perhaps I am doing something wrong because apparantly nobody had a need for reading multiple blocks from IO? Anyway, this patch (with patched ethtool) allows `ethtool -d` to be more useful for the mentioned chip. Regards, Peter --- drivers/net/ethernet/realtek/r8169.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c index b5eb419..28af01c 100644 --- a/drivers/net/ethernet/realtek/r8169.c +++ b/drivers/net/ethernet/realtek/r8169.c @@ -1897,12 +1897,17 @@ static void rtl8169_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p) { struct rtl8169_private *tp = netdev_priv(dev); + char *bytes = p; + int i; if (regs->len > R8169_REGS_SIZE) regs->len = R8169_REGS_SIZE; rtl_lock_work(tp); - memcpy_fromio(p, tp->mmio_addr, regs->len); + for (i = 0; i < regs->len - 4; i += 4) + memcpy_fromio(bytes + i, tp->mmio_addr + i, 4); + if (i < regs->len) + memcpy_fromio(bytes + i, tp->mmio_addr + i, regs->len - i); rtl_unlock_work(tp); }