From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C8F95C43381 for ; Wed, 20 Mar 2019 02:24:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9133420857 for ; Wed, 20 Mar 2019 02:24:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NAuyM/LE" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726936AbfCTCYA (ORCPT ); Tue, 19 Mar 2019 22:24:00 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:37622 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726686AbfCTCYA (ORCPT ); Tue, 19 Mar 2019 22:24:00 -0400 Received: by mail-pg1-f194.google.com with SMTP id q206so585263pgq.4 for ; Tue, 19 Mar 2019 19:23:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=sw1M/QlD6+V1CXJouhynVObwVVP6yddsVwTNxezh840=; b=NAuyM/LEt1m+Nf44Ha4wujU179fEH8nPCymtTtalXHa8bsEi/1B0X2zIXPtDjBfdyY BVqmK3nyzDwP/9W8lQtOga9N9n3LXdYlcEmW7vs2rlZ5PMuvM8JG7DZq8BeGWtCaDQzI ZCK3cUw84FdCYPzq+aGLt/Zb09NsHfLpTbT1XcqOwr1oDRJp617WiwXEyhvyITcPHs9H diprX8xJF7Le8pebzET/AuIx4mJNMAl4ZvQQfSZfE6MmFRIahq1DR2GOJy4GQnJSjH48 loLpbumIOvyyydkmufrJi7SRZgnV3qDZdaIZcJbEBIA13fALO3P5UnT2YhtoylsFo1q5 P/Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=sw1M/QlD6+V1CXJouhynVObwVVP6yddsVwTNxezh840=; b=QKG7l3A9a+wao/yY4P4XkgOiWYgOQeZWsq1SI7GzeH5TvE6btdET5lj7xstAtug0Iy nvw5iUaYLojv//11WA5sUsRpuL4bWlNsn1qJ5ZedrRaAkYsju15OWvDqsOkBFFca2chE Dku3cZTXT+1fazuSEasQhZo/rjY9F4TTOzM4Tc2EeUep0+xIWWrxEppHJI7XqcYLcrbT BOWLiJ6Y6dPpGqN4hmViYV7LYfnuAGp1z53vFl2prsKUlsFBc0Ip1rfUZt6mMcvWscOQ 6j/CCPcXJ5soEDRZw6eAWfXtuyH2UALoOdRXsEPjisv8huUyxIm2h4nfuT66VWrMrrDj 61fw== X-Gm-Message-State: APjAAAV6pdnwaQh8cdxXqX7wUH2lkz/G0W6HmMSIyYaaeE3jk5rsbAz3 sMZIcifUnvBPQMSrncCunTgYe09H X-Google-Smtp-Source: APXvYqwy54XGl1hH0M6bkQktNO0n9tvFVwmkAkJgVcLdiI4gj6pdcQ0i9YM3NPRJI0SziBEURfUaNg== X-Received: by 2002:a17:902:8a96:: with SMTP id p22mr5253414plo.113.1553048639165; Tue, 19 Mar 2019 19:23:59 -0700 (PDT) Received: from dhcp-12-139.nay.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id f15sm357434pgd.74.2019.03.19.19.23.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Mar 2019 19:23:58 -0700 (PDT) From: Hangbin Liu To: netdev@vger.kernel.org Cc: David Miller , Richard Cochran , Miroslav Lichvar , Patrick McHardy , Hangbin Liu Subject: [PATCH net-next] macvlan: pass get_ts_info and SIOC[SG]HWTSTAMP ioctl to real device Date: Wed, 20 Mar 2019 10:23:33 +0800 Message-Id: <20190320022333.3378-1-liuhangbin@gmail.com> X-Mailer: git-send-email 2.19.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Similiar to commit a6111d3c93d0 ("vlan: Pass SIOC[SG]HWTSTAMP ioctls to real device") and commit 37dd9255b2f6 ("vlan: Pass ethtool get_ts_info queries to real device."), add MACVlan HW ptp support. Signed-off-by: Hangbin Liu --- drivers/net/macvlan.c | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 0c0f105657d3..4a6be8fab884 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -34,6 +35,7 @@ #include #include #include +#include #define MACVLAN_HASH_BITS 8 #define MACVLAN_HASH_SIZE (1<netdev_ops; + struct ifreq ifrr; + int err = -EOPNOTSUPP; + + strncpy(ifrr.ifr_name, real_dev->name, IFNAMSIZ); + ifrr.ifr_ifru = ifr->ifr_ifru; + + switch (cmd) { + case SIOCSHWTSTAMP: + case SIOCGHWTSTAMP: + if (netif_device_present(real_dev) && ops->ndo_do_ioctl) + err = ops->ndo_do_ioctl(real_dev, &ifrr, cmd); + break; + } + + if (!err) + ifr->ifr_ifru = ifrr.ifr_ifru; + + return err; +} + /* * macvlan network devices have devices nesting below it and are a special * "super class" of normal network devices; split their locks off into a @@ -1020,6 +1046,26 @@ static int macvlan_ethtool_get_link_ksettings(struct net_device *dev, return __ethtool_get_link_ksettings(vlan->lowerdev, cmd); } +static int macvlan_ethtool_get_ts_info(struct net_device *dev, + struct ethtool_ts_info *info) +{ + struct net_device *real_dev = macvlan_dev_real_dev(dev); + const struct ethtool_ops *ops = real_dev->ethtool_ops; + struct phy_device *phydev = real_dev->phydev; + + if (phydev && phydev->drv && phydev->drv->ts_info) { + return phydev->drv->ts_info(phydev, info); + } else if (ops->get_ts_info) { + return ops->get_ts_info(real_dev, info); + } else { + info->so_timestamping = SOF_TIMESTAMPING_RX_SOFTWARE | + SOF_TIMESTAMPING_SOFTWARE; + info->phc_index = -1; + } + + return 0; +} + static netdev_features_t macvlan_fix_features(struct net_device *dev, netdev_features_t features) { @@ -1094,6 +1140,7 @@ static const struct ethtool_ops macvlan_ethtool_ops = { .get_link = ethtool_op_get_link, .get_link_ksettings = macvlan_ethtool_get_link_ksettings, .get_drvinfo = macvlan_ethtool_get_drvinfo, + .get_ts_info = macvlan_ethtool_get_ts_info, }; static const struct net_device_ops macvlan_netdev_ops = { @@ -1103,6 +1150,7 @@ static const struct net_device_ops macvlan_netdev_ops = { .ndo_stop = macvlan_stop, .ndo_start_xmit = macvlan_start_xmit, .ndo_change_mtu = macvlan_change_mtu, + .ndo_do_ioctl = macvlan_do_ioctl, .ndo_fix_features = macvlan_fix_features, .ndo_change_rx_flags = macvlan_change_rx_flags, .ndo_set_mac_address = macvlan_set_mac_address, -- 2.19.2