With posix timers having become optional, we get a build error with
the cpts time sync option of the CPSW driver:
drivers/net/ethernet/ti/cpts.c: In function 'cpts_find_ts':
drivers/net/ethernet/ti/cpts.c:291:23: error: implicit declaration of function 'ptp_classify_raw';did you mean 'ptp_classifier_init'? [-Werror=implicit-function-declaration]
It really makes no sense to build this driver if we can't use PTP,
so it's better to go back to 'select PTP_1588_CLOCK' but instead
add a dependency on POSIX_TIMERS. Adding 'depends on PTP_1588_CLOCK'
might also work, but has the risk of circular dependencies when
mixed with other drivers using 'imply'.
Fixes: baa73d9e478f ("posix-timers: Make them configurable")
Cc: Nicolas Pitre <redacted>
Cc: stable@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
Originally submitted on Dec 16, but not applied after I missed a
reply from Nico. I confirmed that this is still needed for v4.10
and v4.11-rc2 and am resending it without changes.
---
drivers/net/ethernet/ti/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
From: Nicolas Pitre <hidden> Date: 2017-03-13 20:10:07
On Mon, 13 Mar 2017, Arnd Bergmann wrote:
With posix timers having become optional, we get a build error with
the cpts time sync option of the CPSW driver:
drivers/net/ethernet/ti/cpts.c: In function 'cpts_find_ts':
drivers/net/ethernet/ti/cpts.c:291:23: error: implicit declaration of function 'ptp_classify_raw';did you mean 'ptp_classifier_init'? [-Werror=implicit-function-declaration]
It really makes no sense to build this driver if we can't use PTP,
so it's better to go back to 'select PTP_1588_CLOCK' but instead
add a dependency on POSIX_TIMERS. Adding 'depends on PTP_1588_CLOCK'
might also work, but has the risk of circular dependencies when
mixed with other drivers using 'imply'.
Could you elaborate on that risk please?
quoted hunk
Fixes: baa73d9e478f ("posix-timers: Make them configurable")
Cc: Nicolas Pitre <redacted>
Cc: stable@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
Originally submitted on Dec 16, but not applied after I missed a
reply from Nico. I confirmed that this is still needed for v4.10
and v4.11-rc2 and am resending it without changes.
---
drivers/net/ethernet/ti/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
On Mon, Mar 13, 2017 at 9:09 PM, Nicolas Pitre [off-list ref] wrote:
On Mon, 13 Mar 2017, Arnd Bergmann wrote:
quoted
With posix timers having become optional, we get a build error with
the cpts time sync option of the CPSW driver:
drivers/net/ethernet/ti/cpts.c: In function 'cpts_find_ts':
drivers/net/ethernet/ti/cpts.c:291:23: error: implicit declaration of function 'ptp_classify_raw';did you mean 'ptp_classifier_init'? [-Werror=implicit-function-declaration]
It really makes no sense to build this driver if we can't use PTP,
so it's better to go back to 'select PTP_1588_CLOCK' but instead
add a dependency on POSIX_TIMERS. Adding 'depends on PTP_1588_CLOCK'
might also work, but has the risk of circular dependencies when
mixed with other drivers using 'imply'.
Could you elaborate on that risk please?
I have seen many circular dependencies in the past that tend to be of type
config FOO
depends on A
select B
config BAR
select A
depends on B
The best way to avoid this problem is to only ever use either 'select' or
'depends on' for any given dependency, but not both. In this case, almost
all references to PTP_1588_CLOCK use 'select' or 'implies', so I don't
want to introduce any more 'depends on'.
Arnd
From: Nicolas Pitre <hidden> Date: 2017-03-13 20:41:51
On Mon, 13 Mar 2017, Arnd Bergmann wrote:
On Mon, Mar 13, 2017 at 9:09 PM, Nicolas Pitre [off-list ref] wrote:
quoted
On Mon, 13 Mar 2017, Arnd Bergmann wrote:
quoted
With posix timers having become optional, we get a build error with
the cpts time sync option of the CPSW driver:
drivers/net/ethernet/ti/cpts.c: In function 'cpts_find_ts':
drivers/net/ethernet/ti/cpts.c:291:23: error: implicit declaration of function 'ptp_classify_raw';did you mean 'ptp_classifier_init'? [-Werror=implicit-function-declaration]
It really makes no sense to build this driver if we can't use PTP,
so it's better to go back to 'select PTP_1588_CLOCK' but instead
add a dependency on POSIX_TIMERS. Adding 'depends on PTP_1588_CLOCK'
might also work, but has the risk of circular dependencies when
mixed with other drivers using 'imply'.
Could you elaborate on that risk please?
I have seen many circular dependencies in the past that tend to be of type
config FOO
depends on A
select B
config BAR
select A
depends on B
This is really a problem? I mean in this example there is nothing that
prevents A or B to be enabled independently. Of course if you had:
config A
depends on B
config B
depends on A
then the circular dependency is obvious.
The best way to avoid this problem is to only ever use either 'select' or
'depends on' for any given dependency, but not both. In this case, almost
all references to PTP_1588_CLOCK use 'select' or 'implies', so I don't
want to introduce any more 'depends on'.
I can't find any "select PTP_1588_CLOCK" in the tree.
The "imply" keyword in itself doesn't create nor inforce any
dependencies -- that's why it was created in the first place.
So unless I'm mistaken I don't see any problem using "depends on
PTP_1588_CLOCK" here.
Nicolas