From: Nithin Nayak Sujir <nsujir@broadcom.com>
To: Ben Hutchings <bhutchings@solarflare.com>,
David Miller <davem@davemloft.net>
Cc: <netdev@vger.kernel.org>, <linux-net-drivers@solarflare.com>,
Richard Cochran <richardcochran@gmail.com>,
Michael Chan <mchan@broadcom.com>
Subject: Re: [PATCH net-next 07/16] tg3: Implement the SIOCGHWTSTAMP ioctl
Date: Thu, 5 Dec 2013 16:14:56 -0800 [thread overview]
Message-ID: <52A11700.6090600@broadcom.com> (raw)
In-Reply-To: <1386287352.1516.132.camel@bwh-desktop.uk.level5networks.com>
On 12/05/2013 03:49 PM, Ben Hutchings wrote:
> While we're doing this, fix the error code for SIOCSHWTSTAMP ioctl on
> non-timestamping hardware.
>
> Compile-tested only.
>
> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
> ---
> drivers/net/ethernet/broadcom/tg3.c | 71 ++++++++++++++++++++++++++++++++++---
> 1 file changed, 67 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
> index a9e068423ba0..539c6ace1706 100644
> --- a/drivers/net/ethernet/broadcom/tg3.c
> +++ b/drivers/net/ethernet/broadcom/tg3.c
> @@ -13603,14 +13603,13 @@ static void tg3_self_test(struct net_device *dev, struct ethtool_test *etest,
>
> }
>
> -static int tg3_hwtstamp_ioctl(struct net_device *dev,
> - struct ifreq *ifr, int cmd)
> +static int tg3_hwtstamp_set(struct net_device *dev, struct ifreq *ifr)
> {
> struct tg3 *tp = netdev_priv(dev);
> struct hwtstamp_config stmpconf;
>
> if (!tg3_flag(tp, PTP_CAPABLE))
> - return -EINVAL;
> + return -EOPNOTSUPP;
>
> if (copy_from_user(&stmpconf, ifr->ifr_data, sizeof(stmpconf)))
> return -EFAULT;
> @@ -13691,6 +13690,67 @@ static int tg3_hwtstamp_ioctl(struct net_device *dev,
> -EFAULT : 0;
> }
>
> +static int tg3_hwtstamp_get(struct net_device *dev, struct ifreq *ifr)
> +{
> + struct tg3 *tp = netdev_priv(dev);
> + struct hwtstamp_config stmpconf;
> +
> + if (!tg3_flag(tp, PTP_CAPABLE))
> + return -EOPNOTSUPP;
> +
> + stmpconf.flags = 0;
> + stmpconf.tx_type = (tg3_flag(tp, TX_TSTAMP_EN) ?
> + HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF);
> +
> + switch (tp->rxptpctl) {
> + case 0:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_NONE;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V1_EN | TG3_RX_PTP_CTL_ALL_V1_EVENTS:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V1_EN | TG3_RX_PTP_CTL_SYNC_EVNT:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_SYNC;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V1_EN | TG3_RX_PTP_CTL_DELAY_REQ:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V2_EN | TG3_RX_PTP_CTL_ALL_V2_EVENTS:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V2_L2_EN | TG3_RX_PTP_CTL_ALL_V2_EVENTS:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V2_L4_EN | TG3_RX_PTP_CTL_ALL_V2_EVENTS:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V2_EN | TG3_RX_PTP_CTL_SYNC_EVNT:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V2_SYNC;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V2_L2_EN | TG3_RX_PTP_CTL_SYNC_EVNT:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_SYNC;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V2_L4_EN | TG3_RX_PTP_CTL_SYNC_EVNT:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_SYNC;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V2_EN | TG3_RX_PTP_CTL_DELAY_REQ:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V2_DELAY_REQ;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V2_L2_EN | TG3_RX_PTP_CTL_DELAY_REQ:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ;
> + break;
> + case TG3_RX_PTP_CTL_RX_PTP_V2_L4_EN | TG3_RX_PTP_CTL_DELAY_REQ:
> + stmpconf.rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ;
> + break;
> + default:
> + WARN_ON_ONCE(1);
> + return -ERANGE;
> + }
> +
> + return copy_to_user(ifr->ifr_data, &stmpconf, sizeof(stmpconf)) ?
> + -EFAULT : 0;
> +}
> +
> static int tg3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
> {
> struct mii_ioctl_data *data = if_mii(ifr);
> @@ -13744,7 +13804,10 @@ static int tg3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
> return err;
>
> case SIOCSHWTSTAMP:
> - return tg3_hwtstamp_ioctl(dev, ifr, cmd);
> + return tg3_hwtstamp_set(dev, ifr);
> +
> + case SIOCGHWTSTAMP:
> + return tg3_hwtstamp_get(dev, ifr);
>
> default:
> /* do nothing */
>
>
Acked-by: Nithin Nayak Sujir <nsujir@broadcom.com>
next prev parent reply other threads:[~2013-12-06 0:24 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-05 23:37 Pull request: SIOCGHWTSTAMP ioctl Ben Hutchings
2013-12-05 23:38 ` [PATCH net-next 01/16] net_tstamp: Improve kernel-doc for struct hwtstamp_config Ben Hutchings
2013-12-05 23:42 ` [PATCH net-next 02/16] net/compat: Fix minor information leak in siocdevprivate_ioctl() Ben Hutchings
2013-12-05 23:43 ` [PATCH net-next 03/16] net/compat: Merge multiple implementations of ifreq::ifr_data conversion Ben Hutchings
2013-12-05 23:45 ` [PATCH net-next 04/16] net_tstamp: Add SIOCGHWTSTAMP ioctl to match SIOCSHWTSTAMP Ben Hutchings
2013-12-05 23:45 ` [PATCH net-next 05/16] sfc: Implement the SIOCGHWTSTAMP ioctl Ben Hutchings
2013-12-05 23:47 ` [PATCH net-next 06/16] bfin_mac: " Ben Hutchings
2013-12-05 23:49 ` [PATCH net-next 07/16] tg3: " Ben Hutchings
2013-12-06 0:14 ` Nithin Nayak Sujir [this message]
2013-12-05 23:52 ` [PATCH net-next 08/16] fec: " Ben Hutchings
2013-12-06 3:19 ` Fugang Duan
2013-12-05 23:53 ` [PATCH net-next 09/16] gianfar: " Ben Hutchings
2013-12-05 23:54 ` [PATCH net-next 10/16] e1000e: " Ben Hutchings
2013-12-05 23:54 ` [PATCH net-next 11/16] mlx4_en: " Ben Hutchings
2013-12-05 23:55 ` [PATCH net-next 12/16] vxge: " Ben Hutchings
2013-12-05 23:56 ` [PATCH net-next 13/16] ti_cpsw: " Ben Hutchings
2013-12-05 23:57 ` [PATCH net-next 14/16] tile_net: " Ben Hutchings
2013-12-09 19:39 ` Chris Metcalf
2013-12-05 23:57 ` [PATCH net-next 15/16] ixp4xx_eth: " Ben Hutchings
2013-12-05 23:58 ` [PATCH net-next 16/16] net_tstamp,doc: Add test program for SIOC{G,S}HWTSTAMP Ben Hutchings
2013-12-06 0:46 ` Pull request: SIOCGHWTSTAMP ioctl David Miller
2013-12-06 17:38 ` Ben Hutchings
2013-12-06 17:41 ` David Daney
2013-12-07 7:30 ` [E1000-devel] " Jeff Kirsher
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52A11700.6090600@broadcom.com \
--to=nsujir@broadcom.com \
--cc=bhutchings@solarflare.com \
--cc=davem@davemloft.net \
--cc=linux-net-drivers@solarflare.com \
--cc=mchan@broadcom.com \
--cc=netdev@vger.kernel.org \
--cc=richardcochran@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.