All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Richard Cochran <richardcochran@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>, <netdev@vger.kernel.org>,
	Mugunthan V N <mugunthanvnm@ti.com>, Sekhar Nori <nsekhar@ti.com>,
	<linux-kernel@vger.kernel.org>, <linux-omap@vger.kernel.org>,
	WingMan Kwok <w-kwok2@ti.com>
Subject: Re: [PATCH 3/9] net: ethernet: ti: cpts: rework initialization/deinitialization
Date: Wed, 14 Sep 2016 23:10:48 +0300	[thread overview]
Message-ID: <606f7cfc-aa34-528b-df04-7a60a9695425@ti.com> (raw)
In-Reply-To: <20160914135214.GA28592@localhost.localdomain>

On 09/14/2016 04:52 PM, Richard Cochran wrote:
> On Wed, Sep 14, 2016 at 04:02:25PM +0300, Grygorii Strashko wrote:
>> @@ -323,7 +307,7 @@ void cpts_rx_timestamp(struct cpts *cpts, struct sk_buff *skb)
>>  	u64 ns;
>>  	struct skb_shared_hwtstamps *ssh;
>>  
>> -	if (!cpts->rx_enable)
>> +	if (!cpts || !cpts->rx_enable)
>>  		return;
> 
> This function is in the hot path, and you have added a pointless new
> test.  Don't do that.
> 
>>  	ns = cpts_find_ts(cpts, skb, CPTS_EV_RX);
>>  	if (!ns)
>> @@ -338,7 +322,7 @@ void cpts_tx_timestamp(struct cpts *cpts, struct sk_buff *skb)
>>  	u64 ns;
>>  	struct skb_shared_hwtstamps ssh;
>>  
>> -	if (!(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS))
>> +	if (!cpts || !(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS))
>>  		return;
> 
> Same here.
> 
>>  	ns = cpts_find_ts(cpts, skb, CPTS_EV_TX);
>>  	if (!ns)
>> @@ -348,53 +332,102 @@ void cpts_tx_timestamp(struct cpts *cpts, struct sk_buff *skb)
>>  	skb_tstamp_tx(skb, &ssh);
>>  }
>>  
>> -int cpts_register(struct device *dev, struct cpts *cpts,
>> -		  u32 mult, u32 shift)
>> +int cpts_register(struct cpts *cpts)
>>  {
>>  	int err, i;
>> -	unsigned long flags;
>>  
>> -	cpts->info = cpts_info;
>> -	cpts->clock = ptp_clock_register(&cpts->info, dev);
>> -	if (IS_ERR(cpts->clock)) {
>> -		err = PTR_ERR(cpts->clock);
>> -		cpts->clock = NULL;
>> -		return err;
>> -	}
>> -	spin_lock_init(&cpts->lock);
>> -
>> -	cpts->cc.read = cpts_systim_read;
>> -	cpts->cc.mask = CLOCKSOURCE_MASK(32);
>> -	cpts->cc_mult = mult;
>> -	cpts->cc.mult = mult;
>> -	cpts->cc.shift = shift;
>> +	if (!cpts)
>> +		return -EINVAL;
> 
> Not hot path, but still silly.  The caller should never pass NULL.

Ok. I can't say I'd like all this checks, but there are internal requirement 
to allow CPTS to be disabled though DT on KS2 (even if built in).
I'd try to clarify and return back here.

But It'll be good to know your position - acceptable/can be discussed/completely unacceptable?


-- 
regards,
-grygorii

WARNING: multiple messages have this Message-ID (diff)
From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Richard Cochran <richardcochran@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>,
	netdev@vger.kernel.org, Mugunthan V N <mugunthanvnm@ti.com>,
	Sekhar Nori <nsekhar@ti.com>,
	linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org,
	WingMan Kwok <w-kwok2@ti.com>
Subject: Re: [PATCH 3/9] net: ethernet: ti: cpts: rework initialization/deinitialization
Date: Wed, 14 Sep 2016 23:10:48 +0300	[thread overview]
Message-ID: <606f7cfc-aa34-528b-df04-7a60a9695425@ti.com> (raw)
In-Reply-To: <20160914135214.GA28592@localhost.localdomain>

On 09/14/2016 04:52 PM, Richard Cochran wrote:
> On Wed, Sep 14, 2016 at 04:02:25PM +0300, Grygorii Strashko wrote:
>> @@ -323,7 +307,7 @@ void cpts_rx_timestamp(struct cpts *cpts, struct sk_buff *skb)
>>  	u64 ns;
>>  	struct skb_shared_hwtstamps *ssh;
>>  
>> -	if (!cpts->rx_enable)
>> +	if (!cpts || !cpts->rx_enable)
>>  		return;
> 
> This function is in the hot path, and you have added a pointless new
> test.  Don't do that.
> 
>>  	ns = cpts_find_ts(cpts, skb, CPTS_EV_RX);
>>  	if (!ns)
>> @@ -338,7 +322,7 @@ void cpts_tx_timestamp(struct cpts *cpts, struct sk_buff *skb)
>>  	u64 ns;
>>  	struct skb_shared_hwtstamps ssh;
>>  
>> -	if (!(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS))
>> +	if (!cpts || !(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS))
>>  		return;
> 
> Same here.
> 
>>  	ns = cpts_find_ts(cpts, skb, CPTS_EV_TX);
>>  	if (!ns)
>> @@ -348,53 +332,102 @@ void cpts_tx_timestamp(struct cpts *cpts, struct sk_buff *skb)
>>  	skb_tstamp_tx(skb, &ssh);
>>  }
>>  
>> -int cpts_register(struct device *dev, struct cpts *cpts,
>> -		  u32 mult, u32 shift)
>> +int cpts_register(struct cpts *cpts)
>>  {
>>  	int err, i;
>> -	unsigned long flags;
>>  
>> -	cpts->info = cpts_info;
>> -	cpts->clock = ptp_clock_register(&cpts->info, dev);
>> -	if (IS_ERR(cpts->clock)) {
>> -		err = PTR_ERR(cpts->clock);
>> -		cpts->clock = NULL;
>> -		return err;
>> -	}
>> -	spin_lock_init(&cpts->lock);
>> -
>> -	cpts->cc.read = cpts_systim_read;
>> -	cpts->cc.mask = CLOCKSOURCE_MASK(32);
>> -	cpts->cc_mult = mult;
>> -	cpts->cc.mult = mult;
>> -	cpts->cc.shift = shift;
>> +	if (!cpts)
>> +		return -EINVAL;
> 
> Not hot path, but still silly.  The caller should never pass NULL.

Ok. I can't say I'd like all this checks, but there are internal requirement 
to allow CPTS to be disabled though DT on KS2 (even if built in).
I'd try to clarify and return back here.

But It'll be good to know your position - acceptable/can be discussed/completely unacceptable?


-- 
regards,
-grygorii

  reply	other threads:[~2016-09-14 20:10 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-14 13:02 [PATCH 0/9] net: ethernet: ti: cpts: update and fixes Grygorii Strashko
2016-09-14 13:02 ` Grygorii Strashko
2016-09-14 13:02 ` [PATCH 1/9] net: ethernet: ti: exclude cpts from build when disabled Grygorii Strashko
2016-09-14 13:02   ` Grygorii Strashko
2016-09-14 13:02 ` [PATCH 2/9] net: ethernet: ti: cpsw: minimize direct access to struct cpts Grygorii Strashko
2016-09-14 13:02   ` Grygorii Strashko
2016-09-14 13:02 ` [PATCH 3/9] net: ethernet: ti: cpts: rework initialization/deinitialization Grygorii Strashko
2016-09-14 13:02   ` Grygorii Strashko
2016-09-14 13:52   ` Richard Cochran
2016-09-14 20:10     ` Grygorii Strashko [this message]
2016-09-14 20:10       ` Grygorii Strashko
2016-09-14 20:32       ` Richard Cochran
2016-09-14 20:37         ` Grygorii Strashko
2016-09-14 20:37           ` Grygorii Strashko
2016-09-14 20:52           ` Richard Cochran
2016-09-14 20:59             ` Grygorii Strashko
2016-09-14 20:59               ` Grygorii Strashko
2016-09-15  8:13   ` Richard Cochran
2016-09-14 13:02 ` [PATCH 4/9] net: ethernet: ti: cpts: move dt props parsing to cpts driver Grygorii Strashko
2016-09-14 13:02   ` Grygorii Strashko
2016-09-14 13:55   ` Richard Cochran
2016-09-14 19:45     ` Grygorii Strashko
2016-09-14 19:45       ` Grygorii Strashko
2016-09-14 20:03       ` Richard Cochran
2016-09-14 13:02 ` [PATCH 5/9] net: ethernet: ti: cpts: add return value to tx and rx timestamp funcitons Grygorii Strashko
2016-09-14 13:02   ` Grygorii Strashko
2016-09-14 14:00   ` Richard Cochran
2016-09-14 13:02 ` [PATCH 6/9] net: ethernet: ti: cpts: clean up event list if event pool is empty Grygorii Strashko
2016-09-14 13:02   ` Grygorii Strashko
2016-09-14 14:14   ` Richard Cochran
2016-09-14 19:54     ` Grygorii Strashko
2016-09-14 19:54       ` Grygorii Strashko
2016-09-14 13:02 ` [PATCH 7/9] net: ethernet: ti: cpts: calc mult and shift from refclk freq Grygorii Strashko
2016-09-14 13:02   ` Grygorii Strashko
2016-09-14 14:22   ` Richard Cochran
2016-09-14 19:59     ` Grygorii Strashko
2016-09-14 19:59       ` Grygorii Strashko
2016-09-14 20:26   ` Richard Cochran
2016-09-14 20:47     ` Grygorii Strashko
2016-09-14 20:47       ` Grygorii Strashko
2016-09-14 21:03       ` Richard Cochran
2016-09-14 21:14         ` Grygorii Strashko
2016-09-14 21:14           ` Grygorii Strashko
2016-09-15 11:58     ` Richard Cochran
2016-09-15 13:49       ` Richard Cochran
2016-09-14 13:02 ` [PATCH 8/9] net: ethernet: ti: cpts: fix overflow check period Grygorii Strashko
2016-09-14 13:02   ` Grygorii Strashko
2016-09-14 14:25   ` Richard Cochran
2016-09-14 20:03     ` Grygorii Strashko
2016-09-14 20:03       ` Grygorii Strashko
2016-09-14 20:08       ` Richard Cochran
2016-09-14 20:23         ` Grygorii Strashko
2016-09-14 20:23           ` Grygorii Strashko
2016-09-14 20:43           ` Richard Cochran
2016-09-14 20:48             ` Grygorii Strashko
2016-09-14 20:48               ` Grygorii Strashko
2016-09-14 13:02 ` [PATCH 9/9] net: ethernet: ti: cpts: switch to readl/writel_relaxed() Grygorii Strashko
2016-09-14 13:02   ` Grygorii Strashko

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=606f7cfc-aa34-528b-df04-7a60a9695425@ti.com \
    --to=grygorii.strashko@ti.com \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=mugunthanvnm@ti.com \
    --cc=netdev@vger.kernel.org \
    --cc=nsekhar@ti.com \
    --cc=richardcochran@gmail.com \
    --cc=w-kwok2@ti.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.