Re: [PATCH net-next 0/7] net: bridge: Notify about bridge VLANs

2018-05-25 Thread Petr Machata
Florian Fainelli  writes:

> You seem to have approached the bridge changes a little differently from
> this series:
>
> https://lists.linux-foundation.org/pipermail/bridge/2016-November/010112.html

It pretty much extends the patchset to also send the notifications for
the CPU port.

I missed this e-mail yesterday and now I see you already found out for
yourself how it behaves.

> Both have the same intent that by targeting the bridge device itself,
> you can propagate that through switchdev to the switch drivers, and in
> turn create configurations where for instance, you have:
>
> - CPU/management port present in specific VLANs that is a subset or
> superset of the VLANs configured on front-panel ports
> - CPU/management port tagged/untagged in specific VLANs which can be a
> different setting from the front-panel ports
>
> One problem we have in DSA at the moment is that we always add the CPU
> port to the VLANs configured to the front-panel port but we do this with
> the same attributes as the front panel ports! For instance, if you add
> Port 0 to VLAN1 untagged, the the CPU port also gets added to that
> VLAN1, also untagged. As long as there is just one VLAN untagged, this
> is not much of a problem. Now do this with another VLAN or another port,
> and the CPU can no longer differentiate the traffic from which VLAN it
> is coming from, no bueno.

Yep, with this patchset you should be able to use the CPU port
notifications to configure things exactly.

> bridge vlan add vid 2 dev port0 pvid untagged
>   -> port0 (e.g: switch port 0) gets programmed
>   -> CPU port gets programmed
> bridge vlan add vid 2 dev br0 self
>   -> CPU port gets programmed
> bridge vlan add vid 2 dev port0
>   -> port0 (switch port 0) gets programmed
>
> Are these use cases possible with your series? It seems to me like it is
> if we drop the netif_is_bridge_master() checks and resolve orig_dev as
> being a hint for the CPU/management port.

Yeah, that's how it behaves. If you accept the events where
netif_is_bridge_master(orig_dev), you can tell the CPU port-related
events from the rest by BRIDGE_VLAN_INFO_BRENTRY.

Thanks,
Petr
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] PCI: hv: Do not wait forever on a device that has disappeared

2018-05-25 Thread Lorenzo Pieralisi
On Thu, May 24, 2018 at 11:55:35PM +, Dexuan Cui wrote:
> > From: Lorenzo Pieralisi 
> > Sent: Thursday, May 24, 2018 05:41
> > On Wed, May 23, 2018 at 09:12:01PM +, Dexuan Cui wrote:
> > >
> > > Before the guest finishes the device initialization, the device can be
> > > removed anytime by the host, and after that the host won't respond to
> > > the guest's request, so the guest should be prepared to handle this
> > > case.
> > >
> > > --- a/drivers/pci/host/pci-hyperv.c
> > > +++ b/drivers/pci/host/pci-hyperv.c
> > > @@ -556,6 +556,26 @@ static void put_pcichild(struct hv_pci_dev
> > *hv_pcidev,
> > >  static void get_hvpcibus(struct hv_pcibus_device *hv_pcibus);
> > >  static void put_hvpcibus(struct hv_pcibus_device *hv_pcibus);
> > >
> > > +/*
> > > + * There is no good way to get notified from vmbus_onoffer_rescind(),
> > > + * so let's use polling here, since this is not a hot path.
> > > + */
> > > +static int wait_for_response(struct hv_device *hdev,
> > > +  struct completion *comp)
> > > +{
> > > + while (true) {
> > > + if (hdev->channel->rescind) {
> > > + dev_warn_once(&hdev->device, "The device is gone.\n");
> > > + return -ENODEV;
> > > + }
> > > +
> > > + if (wait_for_completion_timeout(comp, HZ / 10))
> > > + break;
> > > + }
> > > +
> > > + return 0;
> > 
> > This is pretty racy, isn't it ? Also, I reckon you should consider the
> > timeout return value as an error condition unless I am completely
> > missing the point of what you are doing.
> > 
> > Lorenzo
> 
> Actually, this is not racy: we only exit the loop when 
> 1) the channel is rescinded 
> or
> 2) the channel is not rescinded, and the event is completed.
> 
> wait_for_completion_timeout() returns 0 if timed out: in this case,
> we keep spinning in the loop every 0.1 second, testing the 2 conditions.

Yes sorry, you are right, the exit condition is correct, I am waiting for
maintainers ACK to merge it, I need it as soon as possible if you want
this to make it for v4.18.

Thanks,
Lorenzo

> If the chanel is not rescinded, here we should wait for the event 
> forever, as the host is supposed to respond to us quickly, and the
> event will be completed accordingly. This is what the current code
> does. But, in case the channel is rescinded, we need to exit the loop 
> immediately with an error return value: this is the only change
> made by the patch.
> 
> Ideally, we should not use this ugly "polling" method, and the
> rescind-handler, i.e. vmbus_onoffer_rescind(), should notify 
> wait_for_response(), but as I mentioned, there is no good way
> to get notified from vmbus_onoffer_rescind(), so I'm proposing
> this "polling" method: it's simple and it can work correctly,
> and this is not a hot path.
> 
> Thanks,
> -- Dexuan
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: comedi: comedidev.h: Fix SPDX-License-Identifier tag style

2018-05-25 Thread Ian Abbott

On 24/05/18 18:44, Nishad Kamdar wrote:

Replace // SPDX-License-Identifier: GPL-2.0+ by
/* SPDX-License-Identifier: GPL-2.0+ */ as per licensing rule
for C header files. Issue found by checkpatch. Part of
Eudyptula Challenge.

Signed-off-by: Nishad Kamdar 
---
  drivers/staging/comedi/comedidev.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/comedi/comedidev.h 
b/drivers/staging/comedi/comedidev.h
index f3474a4ba69e..c54ac94d89d2 100644
--- a/drivers/staging/comedi/comedidev.h
+++ b/drivers/staging/comedi/comedidev.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+/* SPDX-License-Identifier: GPL-2.0+ */
  /*
   * comedidev.h
   * header file for kernel-only structures, variables, and constants



That looks fine thanks.

Reviewed-by: Ian Abbott 

--
-=( Ian Abbott  || Web: www.mev.co.uk )=-
-=( MEV Ltd. is a company registered in England & Wales. )=-
-=( Registered number: 02862268.  Registered address:)=-
-=( 15 West Park Road, Bramhall, STOCKPORT, SK7 3JZ, UK. )=-
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


RE: [PATCH] PCI: hv: Do not wait forever on a device that has disappeared

2018-05-25 Thread Haiyang Zhang


> -Original Message-
> From: Dexuan Cui
> Sent: Wednesday, May 23, 2018 5:12 PM
> To: 'Lorenzo Pieralisi' ; 'Bjorn Helgaas'
> ; 'linux-...@vger.kernel.org'  p...@vger.kernel.org>; KY Srinivasan ; Stephen
> Hemminger ; 'o...@aepfle.de' ;
> 'a...@canonical.com' ; 'jasow...@redhat.com'
> 
> Cc: 'linux-ker...@vger.kernel.org' ; 'driverdev-
> de...@linuxdriverproject.org' ;
> Haiyang Zhang ; 'vkuzn...@redhat.com'
> ; 'marcelo.ce...@canonical.com'
> 
> Subject: [PATCH] PCI: hv: Do not wait forever on a device that has disappeared
> 
> 
> Before the guest finishes the device initialization, the device can be removed
> anytime by the host, and after that the host won't respond to the guest's
> request, so the guest should be prepared to handle this case.
> 
> Signed-off-by: Dexuan Cui 
> Cc: Stephen Hemminger 
> Cc: K. Y. Srinivasan 
> ---
>  drivers/pci/host/pci-hyperv.c | 46 ---
> 

Reviewed-by: Haiyang Zhang 

Thank you!

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH net-next 1/7] net: bridge: Extract boilerplate around switchdev_port_obj_*()

2018-05-25 Thread Nikolay Aleksandrov
On 24/05/18 18:10, Petr Machata wrote:
> A call to switchdev_port_obj_add() or switchdev_port_obj_del() involves
> initializing a struct switchdev_obj_port_vlan, a piece of code that
> repeats on each call site almost verbatim. While in the current codebase
> there is just one duplicated add call, the follow-up patches add more of
> both add and del calls.
> 
> Thus to remove the duplication, extract the repetition into named
> functions and reuse.
> 
> Signed-off-by: Petr Machata 
> ---
>  net/bridge/br_vlan.c | 44 +++-
>  1 file changed, 23 insertions(+), 21 deletions(-)
> 

Reviewed-by: Nikolay Aleksandrov 

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH net-next 6/7] net: bridge: Notify about bridge VLANs

2018-05-25 Thread Nikolay Aleksandrov
On 24/05/18 18:10, Petr Machata wrote:
> A driver might need to react to changes in settings of brentry VLANs.
> Therefore send switchdev port notifications for these as well. Reuse
> SWITCHDEV_OBJ_ID_PORT_VLAN for this purpose. Listeners should use
> netif_is_bridge_master() on orig_dev to determine whether the
> notification is about a bridge port or a bridge.
> 
> Signed-off-by: Petr Machata 
> ---
>  net/bridge/br_vlan.c | 14 ++
>  1 file changed, 14 insertions(+)
> 

Reviewed-by: Nikolay Aleksandrov 


___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH net-next 0/7] net: bridge: Notify about bridge VLANs

2018-05-25 Thread Ilias Apalodimas
On Fri, May 25, 2018 at 01:09:46PM +0300, Petr Machata wrote:
> Florian Fainelli  writes:
> 
> > You seem to have approached the bridge changes a little differently from
> > this series:
> >
> > https://lists.linux-foundation.org/pipermail/bridge/2016-November/010112.html
> 
> It pretty much extends the patchset to also send the notifications for
> the CPU port.
> 
> I missed this e-mail yesterday and now I see you already found out for
> yourself how it behaves.
> 
> > Both have the same intent that by targeting the bridge device itself,
> > you can propagate that through switchdev to the switch drivers, and in
> > turn create configurations where for instance, you have:
> >
> > - CPU/management port present in specific VLANs that is a subset or
> > superset of the VLANs configured on front-panel ports
> > - CPU/management port tagged/untagged in specific VLANs which can be a
> > different setting from the front-panel ports
> >
> > One problem we have in DSA at the moment is that we always add the CPU
> > port to the VLANs configured to the front-panel port but we do this with
> > the same attributes as the front panel ports! For instance, if you add
> > Port 0 to VLAN1 untagged, the the CPU port also gets added to that
> > VLAN1, also untagged. As long as there is just one VLAN untagged, this
> > is not much of a problem. Now do this with another VLAN or another port,
> > and the CPU can no longer differentiate the traffic from which VLAN it
> > is coming from, no bueno.
> 
> Yep, with this patchset you should be able to use the CPU port
> notifications to configure things exactly.
> 
> > bridge vlan add vid 2 dev port0 pvid untagged
> > -> port0 (e.g: switch port 0) gets programmed
> > -> CPU port gets programmed
> > bridge vlan add vid 2 dev br0 self
> > -> CPU port gets programmed
> > bridge vlan add vid 2 dev port0
> > -> port0 (switch port 0) gets programmed
> >
> > Are these use cases possible with your series? It seems to me like it is
> > if we drop the netif_is_bridge_master() checks and resolve orig_dev as
> > being a hint for the CPU/management port.
> 
> Yeah, that's how it behaves. If you accept the events where
> netif_is_bridge_master(orig_dev), you can tell the CPU port-related
> events from the rest by BRIDGE_VLAN_INFO_BRENTRY.
This also addresses the issue i am having trying to add switchdev functionality
to a driver that needs separate configuration for cpu port.  
https://www.spinics.net/lists/netdev/msg504577.html

Tested it and it works fine

Thanks,
Ilias
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] PCI: hv: Do not wait forever on a device that has disappeared

2018-05-25 Thread Lorenzo Pieralisi
On Wed, May 23, 2018 at 09:12:01PM +, Dexuan Cui wrote:
> 
> Before the guest finishes the device initialization, the device can be
> removed anytime by the host, and after that the host won't respond to
> the guest's request, so the guest should be prepared to handle this
> case.
> 
> Signed-off-by: Dexuan Cui 
> Cc: Stephen Hemminger 
> Cc: K. Y. Srinivasan 
> ---
>  drivers/pci/host/pci-hyperv.c | 46 
> ---
>  1 file changed, 34 insertions(+), 12 deletions(-)

Applied with a minor tweak to the commit log to pci/hv for v4.18.

Thanks,
Lorenzo

> diff --git a/drivers/pci/host/pci-hyperv.c b/drivers/pci/host/pci-hyperv.c
> index ad6a64d..248765f 100644
> --- a/drivers/pci/host/pci-hyperv.c
> +++ b/drivers/pci/host/pci-hyperv.c
> @@ -556,6 +556,26 @@ static void put_pcichild(struct hv_pci_dev *hv_pcidev,
>  static void get_hvpcibus(struct hv_pcibus_device *hv_pcibus);
>  static void put_hvpcibus(struct hv_pcibus_device *hv_pcibus);
>  
> +/*
> + * There is no good way to get notified from vmbus_onoffer_rescind(),
> + * so let's use polling here, since this is not a hot path.
> + */
> +static int wait_for_response(struct hv_device *hdev,
> +  struct completion *comp)
> +{
> + while (true) {
> + if (hdev->channel->rescind) {
> + dev_warn_once(&hdev->device, "The device is gone.\n");
> + return -ENODEV;
> + }
> +
> + if (wait_for_completion_timeout(comp, HZ / 10))
> + break;
> + }
> +
> + return 0;
> +}
> +
>  /**
>   * devfn_to_wslot() - Convert from Linux PCI slot to Windows
>   * @devfn:   The Linux representation of PCI slot
> @@ -1569,7 +1589,8 @@ static struct hv_pci_dev *new_pcichild_device(struct 
> hv_pcibus_device *hbus,
>   if (ret)
>   goto error;
>  
> - wait_for_completion(&comp_pkt.host_event);
> + if (wait_for_response(hbus->hdev, &comp_pkt.host_event))
> + goto error;
>  
>   hpdev->desc = *desc;
>   refcount_set(&hpdev->refs, 1);
> @@ -2070,15 +2091,16 @@ static int hv_pci_protocol_negotiation(struct 
> hv_device *hdev)
>   sizeof(struct pci_version_request),
>   (unsigned long)pkt, VM_PKT_DATA_INBAND,
>   VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
> + if (!ret)
> + ret = wait_for_response(hdev, &comp_pkt.host_event);
> +
>   if (ret) {
>   dev_err(&hdev->device,
> - "PCI Pass-through VSP failed sending version 
> reqquest: %#x",
> + "PCI Pass-through VSP failed to request 
> version: %d",
>   ret);
>   goto exit;
>   }
>  
> - wait_for_completion(&comp_pkt.host_event);
> -
>   if (comp_pkt.completion_status >= 0) {
>   pci_protocol_version = pci_protocol_versions[i];
>   dev_info(&hdev->device,
> @@ -2287,11 +2309,12 @@ static int hv_pci_enter_d0(struct hv_device *hdev)
>   ret = vmbus_sendpacket(hdev->channel, d0_entry, sizeof(*d0_entry),
>  (unsigned long)pkt, VM_PKT_DATA_INBAND,
>  VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
> + if (!ret)
> + ret = wait_for_response(hdev, &comp_pkt.host_event);
> +
>   if (ret)
>   goto exit;
>  
> - wait_for_completion(&comp_pkt.host_event);
> -
>   if (comp_pkt.completion_status < 0) {
>   dev_err(&hdev->device,
>   "PCI Pass-through VSP failed D0 Entry with status %x\n",
> @@ -2331,11 +2354,10 @@ static int hv_pci_query_relations(struct hv_device 
> *hdev)
>  
>   ret = vmbus_sendpacket(hdev->channel, &message, sizeof(message),
>  0, VM_PKT_DATA_INBAND, 0);
> - if (ret)
> - return ret;
> + if (!ret)
> + ret = wait_for_response(hdev, &comp);
>  
> - wait_for_completion(&comp);
> - return 0;
> + return ret;
>  }
>  
>  /**
> @@ -2405,11 +2427,11 @@ static int hv_send_resources_allocated(struct 
> hv_device *hdev)
>   size_res, (unsigned long)pkt,
>   VM_PKT_DATA_INBAND,
>   VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
> + if (!ret)
> + ret = wait_for_response(hdev, &comp_pkt.host_event);
>   if (ret)
>   break;
>  
> - wait_for_completion(&comp_pkt.host_event);
> -
>   if (comp_pkt.completion_status < 0) {
>   ret = -EPROTO;
>   dev_err(&hdev->device,
> -- 
> 2.7.4
> 
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.o

[PATCH] staging: typec: rt1711h: fix tcpci dependency

2018-05-25 Thread Arnd Bergmann
Using 'select' instead of the normal 'depends on' causes
a build issue with CONFIG_I2C=m:

WARNING: unmet direct dependencies detected for TYPEC_TCPCI
  Depends on [m]: STAGING [=y] && TYPEC_TCPM [=y] && I2C [=m]
  Selected by [y]:
  - TYPEC_RT1711H [=y] && STAGING [=y] && TYPEC_TCPM [=y]

Fixes: ce08eaeb6388 ("staging: typec: rt1711h typec chip driver")
Signed-off-by: Arnd Bergmann 
---
 drivers/staging/typec/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/typec/Kconfig b/drivers/staging/typec/Kconfig
index 3aa981fbc8f5..51474d798f99 100644
--- a/drivers/staging/typec/Kconfig
+++ b/drivers/staging/typec/Kconfig
@@ -11,7 +11,7 @@ config TYPEC_TCPCI
 
 config TYPEC_RT1711H
tristate "Richtek RT1711H Type-C chip driver"
-   select TYPEC_TCPCI
+   depends on TYPEC_TCPCI
help
  Richtek RT1711H Type-C chip driver that works with
  Type-C Port Controller Manager to provide USB PD and USB
-- 
2.9.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: fsl-dpaa2/rtc: fix PTP dependency

2018-05-25 Thread Arnd Bergmann
We can't select PTP_1588_CLOCK when posix timers are completely
disabled:

WARNING: unmet direct dependencies detected for PTP_1588_CLOCK
  Depends on [n]: NET [=y] && POSIX_TIMERS [=n]
  Selected by [y]:
  - FSL_DPAA2_PTP_CLOCK [=y] && STAGING [=y] && FSL_DPAA2_ETH [=y]

This adds the necessary dependency.

Fixes: 9bdf43b3d40f ("staging: fsl-dpaa2/rtc: add rtc driver")
Signed-off-by: Arnd Bergmann 
---
 drivers/staging/fsl-dpaa2/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/fsl-dpaa2/Kconfig 
b/drivers/staging/fsl-dpaa2/Kconfig
index cad016aee3b5..a4c4b83ddc9c 100644
--- a/drivers/staging/fsl-dpaa2/Kconfig
+++ b/drivers/staging/fsl-dpaa2/Kconfig
@@ -27,7 +27,7 @@ config FSL_DPAA2_ETHSW
 
 config FSL_DPAA2_PTP_CLOCK
tristate "Freescale DPAA2 PTP Clock"
-   depends on FSL_DPAA2_ETH
+   depends on FSL_DPAA2_ETH && POSIX_TIMERS
select PTP_1588_CLOCK
help
  This driver adds support for using the DPAA2 1588 timer module
-- 
2.9.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: typec: rt1711h: fix tcpci dependency

2018-05-25 Thread Greg Kroah-Hartman
On Fri, May 25, 2018 at 05:38:25PM +0200, Arnd Bergmann wrote:
> Using 'select' instead of the normal 'depends on' causes
> a build issue with CONFIG_I2C=m:
> 
> WARNING: unmet direct dependencies detected for TYPEC_TCPCI
>   Depends on [m]: STAGING [=y] && TYPEC_TCPM [=y] && I2C [=m]
>   Selected by [y]:
>   - TYPEC_RT1711H [=y] && STAGING [=y] && TYPEC_TCPM [=y]
> 
> Fixes: ce08eaeb6388 ("staging: typec: rt1711h typec chip driver")
> Signed-off-by: Arnd Bergmann 
> ---
>  drivers/staging/typec/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

I think that this is already fixed in linux-next with some patches that
I queued up there yesterday.  When did you last see this problem?

thanks,

greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: typec: rt1711h: fix tcpci dependency

2018-05-25 Thread Arnd Bergmann
On Fri, May 25, 2018 at 5:52 PM, Greg Kroah-Hartman
 wrote:
> On Fri, May 25, 2018 at 05:38:25PM +0200, Arnd Bergmann wrote:
>> Using 'select' instead of the normal 'depends on' causes
>> a build issue with CONFIG_I2C=m:
>>
>> WARNING: unmet direct dependencies detected for TYPEC_TCPCI
>>   Depends on [m]: STAGING [=y] && TYPEC_TCPM [=y] && I2C [=m]
>>   Selected by [y]:
>>   - TYPEC_RT1711H [=y] && STAGING [=y] && TYPEC_TCPM [=y]
>>
>> Fixes: ce08eaeb6388 ("staging: typec: rt1711h typec chip driver")
>> Signed-off-by: Arnd Bergmann 
>> ---
>>  drivers/staging/typec/Kconfig | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> I think that this is already fixed in linux-next with some patches that
> I queued up there yesterday.  When did you last see this problem?

It's on linux-next, but since there hasn't been a release this week,
I'm sure you are right that this was already fixed.

  Arnd
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH net-next 6/7] net: bridge: Notify about bridge VLANs

2018-05-25 Thread Vivien Didelot
Hi Petr,

Petr Machata  writes:

> A driver might need to react to changes in settings of brentry VLANs.
> Therefore send switchdev port notifications for these as well. Reuse
> SWITCHDEV_OBJ_ID_PORT_VLAN for this purpose. Listeners should use
> netif_is_bridge_master() on orig_dev to determine whether the
> notification is about a bridge port or a bridge.
>
> Signed-off-by: Petr Machata 

> + } else {
> + err = br_switchdev_port_obj_add(dev, v->vid, flags);
> + if (err && err != -EOPNOTSUPP)
> + goto out;
>   }

Except that br_switchdev_port_obj_add taking vid and flags arguments
seems confusing to me, the change looks good:

Reviewed-by: Vivien Didelot 

Thanks,

Vivien
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH net-next 4/7] dsa: port: Ignore bridge VLAN events

2018-05-25 Thread Vivien Didelot
Hi Petr,

Petr Machata  writes:

> Ignore VLAN events where the orig_dev is the bridge device itself.
>
> Signed-off-by: Petr Machata 

Reviewed-by: Vivien Didelot 

Thanks,

Vivien
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH net-next 1/7] net: bridge: Extract boilerplate around switchdev_port_obj_*()

2018-05-25 Thread Vivien Didelot
Hi Petr,

Petr Machata  writes:

> -static int __vlan_vid_add(struct net_device *dev, struct net_bridge *br,
> -   u16 vid, u16 flags)
> +static int br_switchdev_port_obj_add(struct net_device *dev, u16 vid, u16 
> flags)
>  {
>   struct switchdev_obj_port_vlan v = {
>   .obj.orig_dev = dev,
> @@ -89,12 +88,29 @@ static int __vlan_vid_add(struct net_device *dev, struct 
> net_bridge *br,
>   .vid_begin = vid,
>   .vid_end = vid,
>   };
> - int err;
>  
> + return switchdev_port_obj_add(dev, &v.obj);
> +}
> +
> +static int br_switchdev_port_obj_del(struct net_device *dev, u16 vid)
> +{
> + struct switchdev_obj_port_vlan v = {
> + .obj.orig_dev = dev,
> + .obj.id = SWITCHDEV_OBJ_ID_PORT_VLAN,
> + .vid_begin = vid,
> + .vid_end = vid,
> + };
> +
> + return switchdev_port_obj_del(dev, &v.obj);
> +}

Shouldn't they be br_switchdev_port_vlan_add (or similar) implemented in
net/bridge/br_switchdev.c instead, since they are VLAN specific?

Other than that, the change looks good!

Thanks,

Vivien
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH net-next 0/7] net: bridge: Notify about bridge VLANs

2018-05-25 Thread Vivien Didelot
Hi Florian,

Florian Fainelli  writes:

> Andrew, Vivien, if the following hunks get applied are we possibly
> breaking mv88e6xxx? This is the use case that is really missing IMHO at
> the moment in DSA: we cannot control the VLAN membership and attributes
> of the CPU port(s), so either we make it always tagged in every VLAN
> (not great), or we introduce the ability to target the CPU port which is
> what Petr's patches + mine do.

Your change looks good to me. mv88e6xxx programs the DSA and CPU ports'
membership as "unmodified" (i.e. "as-is", which is a Marvell feature),
so that shouldn't change the current behavior.


Thanks,

Vivien
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 0/7] staging: mt7621-gpio: cleanups to move this driver out of staging

2018-05-25 Thread Sergio Paracuellos
This patch series review all the probably missing stuff
in order to get this driver out of staging..

All of these are described in the following mail by NeilBrown:

- 
https://www.mail-archive.com/driverdev-devel@linuxdriverproject.org/msg76202.html

I don't move the driver yet because I think is better to
review and test this before and if all is likely to be
alright just move all this stuff afterwards.

Hope this helps.

Best regards,
Sergio Paracuellos

Sergio Paracuellos (7):
  staging: mt7621-gpio: rename MTK_MAX_BANK into MTK_BANK_CNT
  staging: mt7621-gpio: use module_platform_driver() instead subsys
initcall
  staging: mt7621-gpio: fix masks for gpio pin
  staging: mt7621-gpio: avoid locking in mediatek_gpio_get_direction
  staging: mt7621-gpio: change lock place in irq mask and unmask
functions
  staging: mt7621-dts: add missing properties to gpio node
  staging: mt7621-gpio: dt-bindings: complete documentation for the gpio

 drivers/staging/mt7621-dts/mt7621.dtsi |  2 ++
 drivers/staging/mt7621-gpio/gpio-mt7621.c  | 42 --
 .../staging/mt7621-gpio/mediatek,mt7621-gpio.txt   | 14 +---
 3 files changed, 26 insertions(+), 32 deletions(-)

-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 6/7] staging: mt7621-dts: add missing properties to gpio node

2018-05-25 Thread Sergio Paracuellos
In order to let other devices reference the GPIO interrupts
if necessary properties 'interrupt-controller' and
'#interrupt-cells' becomes necessary. Add both of them to
complete gpio device tree node.

Signed-off-by: Sergio Paracuellos 
---
 drivers/staging/mt7621-dts/mt7621.dtsi | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/staging/mt7621-dts/mt7621.dtsi 
b/drivers/staging/mt7621-dts/mt7621.dtsi
index 240d396..d7e4981 100644
--- a/drivers/staging/mt7621-dts/mt7621.dtsi
+++ b/drivers/staging/mt7621-dts/mt7621.dtsi
@@ -69,6 +69,8 @@
 
interrupt-parent = <&gic>;
interrupts = ;
+   interrupt-controller;
+   #interrupt-cells = <1>;
 
gpio0: bank@0 {
reg = <0>;
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 2/7] staging: mt7621-gpio: use module_platform_driver() instead subsys initcall

2018-05-25 Thread Sergio Paracuellos
The driver's init function don't do anything besides registering the platform
driver, and the exit function which is not included in the driver should only
do driver unregister. Because of this module_platform_driver() macro could
just be used instead of having separate functions.

Currently the macro is not being used because the driver is initialized at
subsys init call level but this isn't necessary since platform devices are
defined in the DT as dependencies so there's no need for init calls order.

Signed-off-by: Sergio Paracuellos 
---
 drivers/staging/mt7621-gpio/gpio-mt7621.c | 8 +---
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/drivers/staging/mt7621-gpio/gpio-mt7621.c 
b/drivers/staging/mt7621-gpio/gpio-mt7621.c
index 6416936..d41cc3e 100644
--- a/drivers/staging/mt7621-gpio/gpio-mt7621.c
+++ b/drivers/staging/mt7621-gpio/gpio-mt7621.c
@@ -379,10 +379,4 @@ static struct platform_driver mediatek_gpio_driver = {
},
 };
 
-static int __init
-mediatek_gpio_init(void)
-{
-   return platform_driver_register(&mediatek_gpio_driver);
-}
-
-subsys_initcall(mediatek_gpio_init);
+module_platform_driver(mediatek_gpio_driver);
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 4/7] staging: mt7621-gpio: avoid locking in mediatek_gpio_get_direction

2018-05-25 Thread Sergio Paracuellos
mediatek_gpio_get_direction function is holding across a simple read
which it seems to be not neccessary at all. Just remove this locking
cleaning code of this function a bit.

Signed-off-by: Sergio Paracuellos 
---
 drivers/staging/mt7621-gpio/gpio-mt7621.c | 7 +--
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/staging/mt7621-gpio/gpio-mt7621.c 
b/drivers/staging/mt7621-gpio/gpio-mt7621.c
index 79452eb..143268a 100644
--- a/drivers/staging/mt7621-gpio/gpio-mt7621.c
+++ b/drivers/staging/mt7621-gpio/gpio-mt7621.c
@@ -129,12 +129,7 @@ static int
 mediatek_gpio_get_direction(struct gpio_chip *chip, unsigned int offset)
 {
struct mtk_gc *rg = to_mediatek_gpio(chip);
-   unsigned long flags;
-   u32 t;
-
-   spin_lock_irqsave(&rg->lock, flags);
-   t = mtk_gpio_r32(rg, GPIO_REG_CTRL);
-   spin_unlock_irqrestore(&rg->lock, flags);
+   u32 t = mtk_gpio_r32(rg, GPIO_REG_CTRL);
 
return (t & BIT(offset)) ? 0 : 1;
 }
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 1/7] staging: mt7621-gpio: rename MTK_MAX_BANK into MTK_BANK_CNT

2018-05-25 Thread Sergio Paracuellos
There are 3 banks of gpios numbered '0' and '1' and '2'. So
the maximum bank number is "2". "3" is the count of banks.
In order to make the code looks and be correct on checking
max allowed gpio's id it makes sense to change the name of
this definition. Also there is another definitions which
start with the same prefix MKK_BANK_ of the new name so
having those with the same prefix makes all preprocessor
structure to be the same. This improves readability.

Signed-off-by: Sergio Paracuellos 
---
 drivers/staging/mt7621-gpio/gpio-mt7621.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/mt7621-gpio/gpio-mt7621.c 
b/drivers/staging/mt7621-gpio/gpio-mt7621.c
index 5d923a7..6416936 100644
--- a/drivers/staging/mt7621-gpio/gpio-mt7621.c
+++ b/drivers/staging/mt7621-gpio/gpio-mt7621.c
@@ -14,7 +14,7 @@
 #include 
 #include 
 
-#define MTK_MAX_BANK   3
+#define MTK_BANK_CNT   3
 #define MTK_BANK_WIDTH 32
 
 enum mediatek_gpio_reg {
@@ -43,7 +43,7 @@ struct mtk_data {
void __iomem *gpio_membase;
int gpio_irq;
struct irq_domain *gpio_irq_domain;
-   struct mtk_gc *gc_map[MTK_MAX_BANK];
+   struct mtk_gc *gc_map[MTK_BANK_CNT];
 };
 
 static inline struct mtk_gc
@@ -156,7 +156,7 @@ mediatek_gpio_bank_probe(struct platform_device *pdev, 
struct device_node *bank)
struct mtk_gc *rg;
int ret;
 
-   if (!id || be32_to_cpu(*id) >= MTK_MAX_BANK)
+   if (!id || be32_to_cpu(*id) >= MTK_BANK_CNT)
return -EINVAL;
 
rg = devm_kzalloc(&pdev->dev, sizeof(struct mtk_gc), GFP_KERNEL);
@@ -202,7 +202,7 @@ mediatek_gpio_irq_handler(struct irq_desc *desc)
struct mtk_data *gpio_data = irq_desc_get_handler_data(desc);
int i;
 
-   for (i = 0; i < MTK_MAX_BANK; i++) {
+   for (i = 0; i < MTK_BANK_CNT; i++) {
struct mtk_gc *rg = gpio_data->gc_map[i];
unsigned long pending;
int bit;
@@ -345,7 +345,7 @@ mediatek_gpio_probe(struct platform_device *pdev)
gpio_data->gpio_irq = irq_of_parse_and_map(np, 0);
if (gpio_data->gpio_irq) {
gpio_data->gpio_irq_domain = irq_domain_add_linear(np,
-   MTK_MAX_BANK * MTK_BANK_WIDTH,
+   MTK_BANK_CNT * MTK_BANK_WIDTH,
&irq_domain_ops, gpio_data);
if (!gpio_data->gpio_irq_domain)
dev_err(&pdev->dev, "irq_domain_add_linear failed\n");
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 5/7] staging: mt7621-gpio: change lock place in irq mask and unmask functions

2018-05-25 Thread Sergio Paracuellos
Functions mediatek_gpio_irq_umask mediatek_gpio_irq_unmask are
reading and modifying registers but only the write is being hold.
It should be a complete lock instead for those which are type of
"read-modify-write". This makes more sense.

Signed-off-by: Sergio Paracuellos 
---
 drivers/staging/mt7621-gpio/gpio-mt7621.c | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/mt7621-gpio/gpio-mt7621.c 
b/drivers/staging/mt7621-gpio/gpio-mt7621.c
index 143268a..c96ae67 100644
--- a/drivers/staging/mt7621-gpio/gpio-mt7621.c
+++ b/drivers/staging/mt7621-gpio/gpio-mt7621.c
@@ -231,10 +231,9 @@ mediatek_gpio_irq_unmask(struct irq_data *d)
if (!rg)
return;
 
+   spin_lock_irqsave(&rg->lock, flags);
rise = mtk_gpio_r32(rg, GPIO_REG_REDGE);
fall = mtk_gpio_r32(rg, GPIO_REG_FEDGE);
-
-   spin_lock_irqsave(&rg->lock, flags);
mtk_gpio_w32(rg, GPIO_REG_REDGE, rise | (PIN_MASK(pin) & rg->rising));
mtk_gpio_w32(rg, GPIO_REG_FEDGE, fall | (PIN_MASK(pin) & rg->falling));
spin_unlock_irqrestore(&rg->lock, flags);
@@ -253,10 +252,9 @@ mediatek_gpio_irq_mask(struct irq_data *d)
if (!rg)
return;
 
+   spin_lock_irqsave(&rg->lock, flags);
rise = mtk_gpio_r32(rg, GPIO_REG_REDGE);
fall = mtk_gpio_r32(rg, GPIO_REG_FEDGE);
-
-   spin_lock_irqsave(&rg->lock, flags);
mtk_gpio_w32(rg, GPIO_REG_FEDGE, fall & ~PIN_MASK(pin));
mtk_gpio_w32(rg, GPIO_REG_REDGE, rise & ~PIN_MASK(pin));
spin_unlock_irqrestore(&rg->lock, flags);
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 7/7] staging: mt7621-gpio: dt-bindings: complete documentation for the gpio

2018-05-25 Thread Sergio Paracuellos
This commit reviews and complete documentation for gpio related stuff
in the mt7621 device. It should be complete now.

Signed-off-by: Sergio Paracuellos 
---
 drivers/staging/mt7621-gpio/mediatek,mt7621-gpio.txt | 14 +-
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/mt7621-gpio/mediatek,mt7621-gpio.txt 
b/drivers/staging/mt7621-gpio/mediatek,mt7621-gpio.txt
index af64092..94caba7 100644
--- a/drivers/staging/mt7621-gpio/mediatek,mt7621-gpio.txt
+++ b/drivers/staging/mt7621-gpio/mediatek,mt7621-gpio.txt
@@ -13,15 +13,17 @@ Required properties for the top level node:
   - "mediatek,mt7621-gpio" for Mediatek controllers
 - reg : Physical base address and length of the controller's registers
 - interrupt-parent : phandle of the parent interrupt controller.
-- interrupts = Interrupt specifier for the controllers interrupt
+- interrupts : Interrupt specifier for the controllers interrupt.
+- interrupt-controller : Mark the device node as an interrupt controller.
+- #interrupt-cells : Should be 1. The first cell is the GPIO number.
 
 Required properties for the GPIO bank node:
 - compatible:
   - "mediatek,mt7621-gpio-bank" for Mediatek banks
-- #gpio-cells : Should be two.
-  - first cell is the pin number
-  - second cell is used to specify optional parameters (unused)
-- gpio-controller : Marks the device node as a GPIO controller
+- #gpio-cells : Should be two. The first cell is the GPIO pin number and the
+   second cell specifies GPIO flags, as defined in .
+   Only the GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.
+- gpio-controller : Marks the device node as a GPIO controller.
 - reg : The id of the bank that the node describes.
 
 Example:
@@ -34,6 +36,8 @@ Example:
 
interrupt-parent = <&gic>;
interrupts = ;
+   interrupt-controller;
+   #interrupt-cells = <1>;
 
gpio0: bank@0 {
reg = <0>;
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 3/7] staging: mt7621-gpio: fix masks for gpio pin

2018-05-25 Thread Sergio Paracuellos
BIT macro is being used to get mask for gpio's pin
which is retrieved using 'hwirq' from struct irq_data.
The problem here is that 'hwirq' can be as large as 95,
and 1UL << 95 is unlikely to work well. Instead of using
BIT macro use a new PIN_MASK macro which takes into account
pin and WIDTH of the bank in order to make a proper mask for
the gpio pin. Also 'd->hwirq' has been replaced by 'pin' in
some places because there was a 'pin' variable in changed
functions with the proper value. This improves readability.

Signed-off-by: Sergio Paracuellos 
---
 drivers/staging/mt7621-gpio/gpio-mt7621.c | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/mt7621-gpio/gpio-mt7621.c 
b/drivers/staging/mt7621-gpio/gpio-mt7621.c
index d41cc3e..79452eb 100644
--- a/drivers/staging/mt7621-gpio/gpio-mt7621.c
+++ b/drivers/staging/mt7621-gpio/gpio-mt7621.c
@@ -16,6 +16,7 @@
 
 #define MTK_BANK_CNT   3
 #define MTK_BANK_WIDTH 32
+#define PIN_MASK(nr)   (1UL << ((nr % MTK_BANK_WIDTH)))
 
 enum mediatek_gpio_reg {
GPIO_REG_CTRL = 0,
@@ -239,8 +240,8 @@ mediatek_gpio_irq_unmask(struct irq_data *d)
fall = mtk_gpio_r32(rg, GPIO_REG_FEDGE);
 
spin_lock_irqsave(&rg->lock, flags);
-   mtk_gpio_w32(rg, GPIO_REG_REDGE, rise | (BIT(d->hwirq) & rg->rising));
-   mtk_gpio_w32(rg, GPIO_REG_FEDGE, fall | (BIT(d->hwirq) & rg->falling));
+   mtk_gpio_w32(rg, GPIO_REG_REDGE, rise | (PIN_MASK(pin) & rg->rising));
+   mtk_gpio_w32(rg, GPIO_REG_FEDGE, fall | (PIN_MASK(pin) & rg->falling));
spin_unlock_irqrestore(&rg->lock, flags);
 }
 
@@ -261,8 +262,8 @@ mediatek_gpio_irq_mask(struct irq_data *d)
fall = mtk_gpio_r32(rg, GPIO_REG_FEDGE);
 
spin_lock_irqsave(&rg->lock, flags);
-   mtk_gpio_w32(rg, GPIO_REG_FEDGE, fall & ~BIT(d->hwirq));
-   mtk_gpio_w32(rg, GPIO_REG_REDGE, rise & ~BIT(d->hwirq));
+   mtk_gpio_w32(rg, GPIO_REG_FEDGE, fall & ~PIN_MASK(pin));
+   mtk_gpio_w32(rg, GPIO_REG_REDGE, rise & ~PIN_MASK(pin));
spin_unlock_irqrestore(&rg->lock, flags);
 }
 
@@ -273,7 +274,7 @@ mediatek_gpio_irq_type(struct irq_data *d, unsigned int 
type)
int pin = d->hwirq;
int bank = pin / MTK_BANK_WIDTH;
struct mtk_gc *rg = gpio_data->gc_map[bank];
-   u32 mask = BIT(d->hwirq);
+   u32 mask = PIN_MASK(pin);
 
if (!rg)
return -1;
-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH net-next 1/7] net: bridge: Extract boilerplate around switchdev_port_obj_*()

2018-05-25 Thread Petr Machata
Vivien Didelot  writes:

> Hi Petr,
>
> Petr Machata  writes:
>
>> -static int __vlan_vid_add(struct net_device *dev, struct net_bridge *br,
>> -  u16 vid, u16 flags)
>> +static int br_switchdev_port_obj_add(struct net_device *dev, u16 vid, u16 
>> flags)
>>  {
>>  struct switchdev_obj_port_vlan v = {
>>  .obj.orig_dev = dev,
>> @@ -89,12 +88,29 @@ static int __vlan_vid_add(struct net_device *dev, struct 
>> net_bridge *br,
>>  .vid_begin = vid,
>>  .vid_end = vid,
>>  };
>> -int err;
>>  
>> +return switchdev_port_obj_add(dev, &v.obj);
>> +}
>> +
>> +static int br_switchdev_port_obj_del(struct net_device *dev, u16 vid)
>> +{
>> +struct switchdev_obj_port_vlan v = {
>> +.obj.orig_dev = dev,
>> +.obj.id = SWITCHDEV_OBJ_ID_PORT_VLAN,
>> +.vid_begin = vid,
>> +.vid_end = vid,
>> +};
>> +
>> +return switchdev_port_obj_del(dev, &v.obj);
>> +}
>
> Shouldn't they be br_switchdev_port_vlan_add (or similar) implemented in
> net/bridge/br_switchdev.c instead, since they are VLAN specific?

(You mean switchdev-specific?)

This logic was in br_vlan.c before as well, so it's natural to think
about the functions as helpers of VLAN module. I can move to
br_switchdev.c if you think that's the better place.

Thanks,
Petr
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH net-next 6/7] net: bridge: Notify about bridge VLANs

2018-05-25 Thread Petr Machata
Vivien Didelot  writes:

>> +} else {
>> +err = br_switchdev_port_obj_add(dev, v->vid, flags);
>> +if (err && err != -EOPNOTSUPP)
>> +goto out;
>>  }
>
> Except that br_switchdev_port_obj_add taking vid and flags arguments
> seems confusing to me, the change looks good:

I'm not sure what you're aiming at. Both VID and flags are sent with the
notification, so they need to be passed on to the function somehow. Do
you have a counterproposal for the API?

Thanks,
Petr
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: wlan-ng: remove unused declarations from p80211types.h

2018-05-25 Thread Tim Collier
A number of extern struct declarations in p80211types.h were causing
checkpatch warnings: "extern prototypes should be avoided in .h files"
and "function definition argument 'xx' should also have an
identifier name".

This appears to be a result of using a macro to form the declarations
and checkpatch consequently misinterpreting the declarations as
function prototypes.

On checking, the declarations have no corresponding definition in the
driver and are not used, so they are removed along with the macro used
to construct them, which is not needed elsewhere. After this change,
checkpatch reports that p80211types.h has no obvious issues.

Signed-off-by: Tim Collier 
---
 drivers/staging/wlan-ng/p80211types.h | 31 ---
 1 file changed, 31 deletions(-)

diff --git a/drivers/staging/wlan-ng/p80211types.h 
b/drivers/staging/wlan-ng/p80211types.h
index 388357bbcbf5..7c37d56dd9b7 100644
--- a/drivers/staging/wlan-ng/p80211types.h
+++ b/drivers/staging/wlan-ng/p80211types.h
@@ -119,11 +119,6 @@
/* is a DID-LEN-DATA triple */
/* with a max size of 4+4+384 */
 
-/**/
-/* The following macro creates a name for an enum */
-
-#define MKENUMNAME(name) p80211enum_ ## name
-
 /*
  * The following constants and macros are used to construct and
  * deconstruct the Data ID codes.  The coding is as follows:
@@ -348,30 +343,4 @@ typedef void (*p80211_fromtext_t) (struct catlistitem *, 
u32 did, u8 *itembuf,
   char *textbuf);
 typedef u32(*p80211_valid_t) (struct catlistitem *, u32 did, u8 *itembuf);
 
-/**/
-/* Enumeration Lists */
-/*  The following are the external declarations */
-/*  for all enumerations  */
-
-extern struct p80211enum MKENUMNAME(truth);
-extern struct p80211enum MKENUMNAME(ifstate);
-extern struct p80211enum MKENUMNAME(powermgmt);
-extern struct p80211enum MKENUMNAME(bsstype);
-extern struct p80211enum MKENUMNAME(authalg);
-extern struct p80211enum MKENUMNAME(phytype);
-extern struct p80211enum MKENUMNAME(temptype);
-extern struct p80211enum MKENUMNAME(regdomain);
-extern struct p80211enum MKENUMNAME(ccamode);
-extern struct p80211enum MKENUMNAME(diversity);
-extern struct p80211enum MKENUMNAME(scantype);
-extern struct p80211enum MKENUMNAME(resultcode);
-extern struct p80211enum MKENUMNAME(reason);
-extern struct p80211enum MKENUMNAME(status);
-extern struct p80211enum MKENUMNAME(msgcode);
-extern struct p80211enum MKENUMNAME(msgitem_status);
-
-extern struct p80211enum MKENUMNAME(lnxroam_reason);
-
-extern struct p80211enum MKENUMNAME(p2preamble);
-
 #endif /* _P80211TYPES_H */
-- 
2.11.0

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[staging:staging-testing 754/791] drivers/staging/lustre/lustre/ptlrpc/errno.c:49:3: error: 'ENXIO' undeclared here (not in a function)

2018-05-25 Thread kbuild test robot
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
staging-testing
head:   0badacd779df08fbbc895cf6c488e100b86c1f39
commit: 0922c0084b91799193059a47bfbd215ffd3a4b50 [754/791] staging: lustre: 
remove libcfs_all from ptlrpc
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 8.1.0
reproduce:
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 0922c0084b91799193059a47bfbd215ffd3a4b50
# save the attached .config to linux build tree
make.cross ARCH=ia64 

All error/warnings (new ones prefixed by >>):

   drivers/staging/lustre/lustre/ptlrpc/errno.c:44:3: error: 'EPERM' undeclared 
here (not in a function)
 [EPERM]   = LUSTRE_EPERM,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:44:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:44:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
   drivers/staging/lustre/lustre/ptlrpc/errno.c:45:3: error: 'ENOENT' 
undeclared here (not in a function)
 [ENOENT]  = LUSTRE_ENOENT,
  ^~
   drivers/staging/lustre/lustre/ptlrpc/errno.c:45:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:45:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
   drivers/staging/lustre/lustre/ptlrpc/errno.c:46:3: error: 'ESRCH' undeclared 
here (not in a function)
 [ESRCH]   = LUSTRE_ESRCH,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:46:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:46:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
   drivers/staging/lustre/lustre/ptlrpc/errno.c:47:3: error: 'EINTR' undeclared 
here (not in a function)
 [EINTR]   = LUSTRE_EINTR,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:47:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:47:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
   drivers/staging/lustre/lustre/ptlrpc/errno.c:48:3: error: 'EIO' undeclared 
here (not in a function)
 [EIO]   = LUSTRE_EIO,
  ^~~
   drivers/staging/lustre/lustre/ptlrpc/errno.c:48:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:48:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:49:3: error: 'ENXIO' undeclared 
>> here (not in a function)
 [ENXIO]   = LUSTRE_ENXIO,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:49:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:49:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
   drivers/staging/lustre/lustre/ptlrpc/errno.c:50:3: error: 'E2BIG' undeclared 
here (not in a function)
 [E2BIG]   = LUSTRE_E2BIG,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:50:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:50:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:51:3: error: 'ENOEXEC' 
>> undeclared here (not in a function)
 [ENOEXEC]  = LUSTRE_ENOEXEC,
  ^~~
   drivers/staging/lustre/lustre/ptlrpc/errno.c:51:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:51:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
   drivers/staging/lustre/lustre/ptlrpc/errno.c:52:3: error: 'EBADF' undeclared 
here (not in a function)
 [EBADF]   = LUSTRE_EBADF,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:52:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:52:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
   drivers/staging/lustre/lustre/ptlrpc/errno.c:53:3: error: 'ECHILD' 
undeclared here (not in a function)
 [ECHILD]  = LUSTRE_ECHILD,
  ^~
   drivers/staging/lustre/lustre/ptlrpc/errno.c:53:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:53:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
   drivers/staging/lustre/lustre/ptlrpc/errno.c:54:3: error: 'EAGAIN' 
undeclared here (not in a function)
 [EAGAIN]  = LUSTRE_EAGAIN,
  ^~
   drivers/staging/lustre/lustre/ptlrpc/errno.c:54:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:54:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:55:3: error: 'ENOMEM' 
>> undeclared here (not in a function)
 [ENOMEM]  = LUSTRE_ENOMEM,
  ^~
   drivers/staging/lustre/lustre/ptlrpc/errno

[staging:staging-testing 752/791] drivers/staging/lustre/lustre/mdc/mdc_request.c:1200:3: error: implicit declaration of function 'prefetchw'

2018-05-25 Thread kbuild test robot
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
staging-testing
head:   0badacd779df08fbbc895cf6c488e100b86c1f39
commit: 73d65c8d1a851785af624870424b332f42af1b37 [752/791] staging: lustre: 
remove libcfs_all.h from lustre/include/*.h
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 73d65c8d1a851785af624870424b332f42af1b37
# save the attached .config to linux build tree
make.cross ARCH=sh 

All errors (new ones prefixed by >>):

   drivers/staging/lustre/lustre/mdc/mdc_request.c: In function 
'mdc_read_page_remote':
>> drivers/staging/lustre/lustre/mdc/mdc_request.c:1200:3: error: implicit 
>> declaration of function 'prefetchw' [-Werror=implicit-function-declaration]
  prefetchw(&page->flags);
  ^
   cc1: some warnings being treated as errors

vim +/prefetchw +1200 drivers/staging/lustre/lustre/mdc/mdc_request.c

4f76f0ec wang di 2016-08-19  1114  
4f76f0ec wang di 2016-08-19  1115  /**
4f76f0ec wang di 2016-08-19  1116   * Read pages from server.
4f76f0ec wang di 2016-08-19  1117   *
4f76f0ec wang di 2016-08-19  1118   * Page in MDS_READPAGE RPC is 
packed in LU_PAGE_SIZE, and each page contains
4f76f0ec wang di 2016-08-19  1119   * a header lu_dirpage which 
describes the start/end hash, and whether this
4f76f0ec wang di 2016-08-19  1120   * page is empty (contains no dir 
entry) or hash collide with next page.
4f76f0ec wang di 2016-08-19  1121   * After client receives reply, 
several pages will be integrated into dir page
4f76f0ec wang di 2016-08-19  1122   * in PAGE_SIZE (if PAGE_SIZE 
greater than LU_PAGE_SIZE), and the
4f76f0ec wang di 2016-08-19  1123   * lu_dirpage for this integrated 
page will be adjusted.
4f76f0ec wang di 2016-08-19  1124   **/
4f76f0ec wang di 2016-08-19  1125  static int mdc_read_page_remote(void 
*data, struct page *page0)
4f76f0ec wang di 2016-08-19  1126  {
4f76f0ec wang di 2016-08-19  1127   struct readpage_param *rp = 
data;
4f76f0ec wang di 2016-08-19  1128   struct page **page_pool;
4f76f0ec wang di 2016-08-19  1129   struct page *page;
4f76f0ec wang di 2016-08-19  1130   struct lu_dirpage *dp;
4f76f0ec wang di 2016-08-19  1131   int rd_pgs = 0; /* number of 
pages read actually */
4f76f0ec wang di 2016-08-19  1132   int npages;
4f76f0ec wang di 2016-08-19  1133   struct md_op_data *op_data = 
rp->rp_mod;
4f76f0ec wang di 2016-08-19  1134   struct ptlrpc_request *req;
4f76f0ec wang di 2016-08-19  1135   int max_pages = 
op_data->op_max_pages;
4f76f0ec wang di 2016-08-19  1136   struct inode *inode;
4f76f0ec wang di 2016-08-19  1137   struct lu_fid *fid;
4f76f0ec wang di 2016-08-19  1138   int i;
4f76f0ec wang di 2016-08-19  1139   int rc;
4f76f0ec wang di 2016-08-19  1140  
4f76f0ec wang di 2016-08-19  1141   LASSERT(max_pages > 0 && 
max_pages <= PTLRPC_MAX_BRW_PAGES);
4f76f0ec wang di 2016-08-19  1142   inode = op_data->op_data;
4f76f0ec wang di 2016-08-19  1143   fid = &op_data->op_fid1;
4f76f0ec wang di 2016-08-19  1144   LASSERT(inode);
4f76f0ec wang di 2016-08-19  1145  
4f76f0ec wang di 2016-08-19  1146   page_pool = kcalloc(max_pages, 
sizeof(page), GFP_NOFS);
4f76f0ec wang di 2016-08-19  1147   if (page_pool) {
4f76f0ec wang di 2016-08-19  1148   page_pool[0] = page0;
4f76f0ec wang di 2016-08-19  1149   } else {
4f76f0ec wang di 2016-08-19  1150   page_pool = &page0;
4f76f0ec wang di 2016-08-19  1151   max_pages = 1;
4f76f0ec wang di 2016-08-19  1152   }
4f76f0ec wang di 2016-08-19  1153  
4f76f0ec wang di 2016-08-19  1154   for (npages = 1; npages < 
max_pages; npages++) {
453f85d4 Mel Gorman  2017-11-15  1155   page = 
page_cache_alloc(inode->i_mapping);
4f76f0ec wang di 2016-08-19  1156   if (!page)
4f76f0ec wang di 2016-08-19  1157   break;
4f76f0ec wang di 2016-08-19  1158   page_pool[npages] = 
page;
4f76f0ec wang di 2016-08-19  1159   }
4f76f0ec wang di 2016-08-19  1160  
4f76f0ec wang di 2016-08-19  1161   rc = mdc_getpage(rp->rp_exp, 
fid, rp->rp_off, page_pool, npages, &req);
4f76f0ec wang di 2016-08-19  1162   if (!rc) {
4f76f0ec wang di 2016-08-19  1163   int lu_pgs = 
req->rq_bulk->bd_nob_transferred;
4f76f0ec wang di 2016-08-19  1164  
4f76f0ec wang di 2016-08-19  

Re: [staging:staging-testing 754/791] drivers/staging/lustre/lustre/ptlrpc/errno.c:49:3: error: 'ENXIO' undeclared here (not in a function)

2018-05-25 Thread Greg Kroah-Hartman
On Sat, May 26, 2018 at 02:04:59AM +0800, kbuild test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
> staging-testing
> head:   0badacd779df08fbbc895cf6c488e100b86c1f39
> commit: 0922c0084b91799193059a47bfbd215ffd3a4b50 [754/791] staging: lustre: 
> remove libcfs_all from ptlrpc
> config: ia64-allmodconfig (attached as .config)
> compiler: ia64-linux-gcc (GCC) 8.1.0
> reproduce:
> wget 
> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
> ~/bin/make.cross
> chmod +x ~/bin/make.cross
> git checkout 0922c0084b91799193059a47bfbd215ffd3a4b50
> # save the attached .config to linux build tree
> make.cross ARCH=ia64 
> 
> All error/warnings (new ones prefixed by >>):
> 
>drivers/staging/lustre/lustre/ptlrpc/errno.c:44:3: error: 'EPERM' 
> undeclared here (not in a function)
>  [EPERM]   = LUSTRE_EPERM,
>   ^



Neil, looks like some .h files still need to be included.  Care to fix
these up?

thanks,

greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


RE: [PATCH] PCI: hv: Fix a __local_bh_enable_ip warning in hv_compose_msi_msg()

2018-05-25 Thread Haiyang Zhang


> -Original Message-
> From: Dexuan Cui
> Sent: Tuesday, May 22, 2018 8:18 PM
> To: Lorenzo Pieralisi ; Bjorn Helgaas
> ; linux-...@vger.kernel.org; KY Srinivasan
> ; Stephen Hemminger ;
> o...@aepfle.de; a...@canonical.com; jasow...@redhat.com
> Cc: linux-ker...@vger.kernel.org; driverdev-devel@linuxdriverproject.org;
> Haiyang Zhang ; vkuzn...@redhat.com;
> marcelo.ce...@canonical.com
> Subject: [PATCH] PCI: hv: Fix a __local_bh_enable_ip warning in
> hv_compose_msi_msg()
> 
> 
> Commit de0aa7b2f97d ("PCI: hv: Fix 2 hang issues in hv_compose_msi_msg()")
> uses local_bh_disable()/enable(), because hv_pci_onchannelcallback() can also
> run in tasklet context as the channel event callback.
> 
> With CONFIG_PROVE_LOCKING=y in the latest mainline, or old kernels that
> don't have commit f71b74bca637 ("irq/softirqs: Use lockdep to assert IRQs are
> disabled/enabled"), it turns out can we trigger a warning at the beginning of
> __local_bh_enable_ip(), because the upper layer irq code can call
> hv_compose_msi_msg() with local irqs disabled.
> 
> Let's fix the warning by switching to local_irq_save()/restore(). This is not 
> an
> issue because hv_pci_onchannelcallback() is not slow, and it not a hot path.
> 
> Fixes: de0aa7b2f97d ("PCI: hv: Fix 2 hang issues in hv_compose_msi_msg()")
> Signed-off-by: Dexuan Cui 
> Cc: 
> Cc: Stephen Hemminger 
> Cc: K. Y. Srinivasan 
> ---

Reviewed-by: Haiyang Zhang 

Thanks you.

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[staging:staging-testing 754/791] drivers/staging/lustre/lustre/ptlrpc/errno.c:44:3: error: 'EPERM' undeclared here (not in a function)

2018-05-25 Thread kbuild test robot
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
staging-testing
head:   0badacd779df08fbbc895cf6c488e100b86c1f39
commit: 0922c0084b91799193059a47bfbd215ffd3a4b50 [754/791] staging: lustre: 
remove libcfs_all from ptlrpc
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 0922c0084b91799193059a47bfbd215ffd3a4b50
# save the attached .config to linux build tree
make.cross ARCH=sh 

All error/warnings (new ones prefixed by >>):

>> drivers/staging/lustre/lustre/ptlrpc/errno.c:44:3: error: 'EPERM' undeclared 
>> here (not in a function)
 [EPERM]   = LUSTRE_EPERM,
  ^
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:44:3: error: array index in 
>> initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:44:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:45:3: error: 'ENOENT' 
>> undeclared here (not in a function)
 [ENOENT]  = LUSTRE_ENOENT,
  ^~
   drivers/staging/lustre/lustre/ptlrpc/errno.c:45:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:45:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:46:3: error: 'ESRCH' undeclared 
>> here (not in a function)
 [ESRCH]   = LUSTRE_ESRCH,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:46:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:46:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:47:3: error: 'EINTR' undeclared 
>> here (not in a function)
 [EINTR]   = LUSTRE_EINTR,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:47:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:47:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:48:3: error: 'EIO' undeclared 
>> here (not in a function)
 [EIO]   = LUSTRE_EIO,
  ^~~
   drivers/staging/lustre/lustre/ptlrpc/errno.c:48:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:48:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:49:3: error: 'ENXIO' undeclared 
>> here (not in a function); did you mean 'EIO'?
 [ENXIO]   = LUSTRE_ENXIO,
  ^
  EIO
   drivers/staging/lustre/lustre/ptlrpc/errno.c:49:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:49:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:50:3: error: 'E2BIG' undeclared 
>> here (not in a function)
 [E2BIG]   = LUSTRE_E2BIG,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:50:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:50:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:51:3: error: 'ENOEXEC' 
>> undeclared here (not in a function); did you mean 'ENOENT'?
 [ENOEXEC]  = LUSTRE_ENOEXEC,
  ^~~
  ENOENT
   drivers/staging/lustre/lustre/ptlrpc/errno.c:51:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:51:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:52:3: error: 'EBADF' undeclared 
>> here (not in a function)
 [EBADF]   = LUSTRE_EBADF,
  ^
   drivers/staging/lustre/lustre/ptlrpc/errno.c:52:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:52:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:53:3: error: 'ECHILD' 
>> undeclared here (not in a function)
 [ECHILD]  = LUSTRE_ECHILD,
  ^~
   drivers/staging/lustre/lustre/ptlrpc/errno.c:53:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:53:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:54:3: error: 'EAGAIN' 
>> undeclared here (not in a function)
 [EAGAIN]  = LUSTRE_EAGAIN,
  ^~
   drivers/staging/lustre/lustre/ptlrpc/errno.c:54:3: error: array index in 
initializer not of integer type
   drivers/staging/lustre/lustre/ptlrpc/errno.c:54:3: note: (near 
initialization for 'lustre_errno_hton_mapping')
>> drivers/staging/lustre/lustre/ptlrpc/errno.c:55:3: error: 'ENOMEM' 
>> undeclared here (

[PATCH] IB: Revert "remove redundant INFINIBAND kconfig dependencies"

2018-05-25 Thread Arnd Bergmann
Several subsystems depend on INFINIBAND_ADDR_TRANS, which in turn depends
on INFINIBAND. However, when with CONFIG_INIFIBAND=m, this leads to a
link error when another driver using it is built-in. The
INFINIBAND_ADDR_TRANS dependency is insufficient here as this is
a 'bool' symbol that does not force anything to be a module in turn.

fs/cifs/smbdirect.o: In function `smbd_disconnect_rdma_work':
smbdirect.c:(.text+0x1e4): undefined reference to `rdma_disconnect'
net/9p/trans_rdma.o: In function `rdma_request':
trans_rdma.c:(.text+0x7bc): undefined reference to `rdma_disconnect'
net/9p/trans_rdma.o: In function `rdma_destroy_trans':
trans_rdma.c:(.text+0x830): undefined reference to `ib_destroy_qp'
trans_rdma.c:(.text+0x858): undefined reference to `ib_dealloc_pd'

Fixes: 9533b292a7ac ("IB: remove redundant INFINIBAND kconfig dependencies")
Signed-off-by: Arnd Bergmann 
---
The patch that introduced the problem has been queued in the
rdma-fixes/for-rc tree. Please revert the patch before sending
the branch to Linus.
---
 drivers/infiniband/ulp/srpt/Kconfig | 2 +-
 drivers/nvme/host/Kconfig   | 2 +-
 drivers/nvme/target/Kconfig | 2 +-
 drivers/staging/lustre/lnet/Kconfig | 2 +-
 fs/cifs/Kconfig | 2 +-
 net/9p/Kconfig  | 2 +-
 net/rds/Kconfig | 2 +-
 net/sunrpc/Kconfig  | 2 +-
 8 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/infiniband/ulp/srpt/Kconfig 
b/drivers/infiniband/ulp/srpt/Kconfig
index 25bf6955b6d0..fb8b7182f05e 100644
--- a/drivers/infiniband/ulp/srpt/Kconfig
+++ b/drivers/infiniband/ulp/srpt/Kconfig
@@ -1,6 +1,6 @@
 config INFINIBAND_SRPT
tristate "InfiniBand SCSI RDMA Protocol target support"
-   depends on INFINIBAND_ADDR_TRANS && TARGET_CORE
+   depends on INFINIBAND && INFINIBAND_ADDR_TRANS && TARGET_CORE
---help---
 
  Support for the SCSI RDMA Protocol (SRP) Target driver. The
diff --git a/drivers/nvme/host/Kconfig b/drivers/nvme/host/Kconfig
index dbb7464c018c..88a8b5916624 100644
--- a/drivers/nvme/host/Kconfig
+++ b/drivers/nvme/host/Kconfig
@@ -27,7 +27,7 @@ config NVME_FABRICS
 
 config NVME_RDMA
tristate "NVM Express over Fabrics RDMA host driver"
-   depends on INFINIBAND_ADDR_TRANS && BLOCK
+   depends on INFINIBAND && INFINIBAND_ADDR_TRANS && BLOCK
select NVME_CORE
select NVME_FABRICS
select SG_POOL
diff --git a/drivers/nvme/target/Kconfig b/drivers/nvme/target/Kconfig
index 7595664ee753..3c7b61ddb0d1 100644
--- a/drivers/nvme/target/Kconfig
+++ b/drivers/nvme/target/Kconfig
@@ -27,7 +27,7 @@ config NVME_TARGET_LOOP
 
 config NVME_TARGET_RDMA
tristate "NVMe over Fabrics RDMA target support"
-   depends on INFINIBAND_ADDR_TRANS
+   depends on INFINIBAND && INFINIBAND_ADDR_TRANS
depends on NVME_TARGET
select SGL_ALLOC
help
diff --git a/drivers/staging/lustre/lnet/Kconfig 
b/drivers/staging/lustre/lnet/Kconfig
index f3b1ad4bd3dc..ad049e6f24e4 100644
--- a/drivers/staging/lustre/lnet/Kconfig
+++ b/drivers/staging/lustre/lnet/Kconfig
@@ -34,7 +34,7 @@ config LNET_SELFTEST
 
 config LNET_XPRT_IB
tristate "LNET infiniband support"
-   depends on LNET && PCI && INFINIBAND_ADDR_TRANS
+   depends on LNET && PCI && INFINIBAND && INFINIBAND_ADDR_TRANS
default LNET && INFINIBAND
help
  This option allows the LNET users to use infiniband as an
diff --git a/fs/cifs/Kconfig b/fs/cifs/Kconfig
index d61e2de8d0eb..5f132d59dfc2 100644
--- a/fs/cifs/Kconfig
+++ b/fs/cifs/Kconfig
@@ -197,7 +197,7 @@ config CIFS_SMB311
 
 config CIFS_SMB_DIRECT
bool "SMB Direct support (Experimental)"
-   depends on CIFS=m && INFINIBAND_ADDR_TRANS || CIFS=y && 
INFINIBAND_ADDR_TRANS=y
+   depends on CIFS=m && INFINIBAND && INFINIBAND_ADDR_TRANS || CIFS=y && 
INFINIBAND=y && INFINIBAND_ADDR_TRANS=y
help
  Enables SMB Direct experimental support for SMB 3.0, 3.02 and 3.1.1.
  SMB Direct allows transferring SMB packets over RDMA. If unsure,
diff --git a/net/9p/Kconfig b/net/9p/Kconfig
index 46c39f7da444..e6014e0e51f7 100644
--- a/net/9p/Kconfig
+++ b/net/9p/Kconfig
@@ -32,7 +32,7 @@ config NET_9P_XEN
 
 
 config NET_9P_RDMA
-   depends on INET && INFINIBAND_ADDR_TRANS
+   depends on INET && INFINIBAND && INFINIBAND_ADDR_TRANS
tristate "9P RDMA Transport (Experimental)"
help
  This builds support for an RDMA transport.
diff --git a/net/rds/Kconfig b/net/rds/Kconfig
index 1a31502ee7db..bffde4b46c5d 100644
--- a/net/rds/Kconfig
+++ b/net/rds/Kconfig
@@ -8,7 +8,7 @@ config RDS
 
 config RDS_RDMA
tristate "RDS over Infiniband"
-   depends on RDS && INFINIBAND_ADDR_TRANS
+   depends on RDS && INFINIBAND && INFINIBAND_ADDR_TRANS
---help---
  Allow RDS to use Infiniband as a transport.
  This transport supports RDMA operations.
diff --git a/net/sunrpc/Kconfig b

Re: [PATCH] IB: Revert "remove redundant INFINIBAND kconfig dependencies"

2018-05-25 Thread Leon Romanovsky
On Fri, May 25, 2018 at 11:29:59PM +0200, Arnd Bergmann wrote:
> Several subsystems depend on INFINIBAND_ADDR_TRANS, which in turn depends
> on INFINIBAND. However, when with CONFIG_INIFIBAND=m, this leads to a
> link error when another driver using it is built-in. The
> INFINIBAND_ADDR_TRANS dependency is insufficient here as this is
> a 'bool' symbol that does not force anything to be a module in turn.
>
> fs/cifs/smbdirect.o: In function `smbd_disconnect_rdma_work':
> smbdirect.c:(.text+0x1e4): undefined reference to `rdma_disconnect'
> net/9p/trans_rdma.o: In function `rdma_request':
> trans_rdma.c:(.text+0x7bc): undefined reference to `rdma_disconnect'
> net/9p/trans_rdma.o: In function `rdma_destroy_trans':
> trans_rdma.c:(.text+0x830): undefined reference to `ib_destroy_qp'
> trans_rdma.c:(.text+0x858): undefined reference to `ib_dealloc_pd'
>
> Fixes: 9533b292a7ac ("IB: remove redundant INFINIBAND kconfig dependencies")
> Signed-off-by: Arnd Bergmann 
> ---
> The patch that introduced the problem has been queued in the
> rdma-fixes/for-rc tree. Please revert the patch before sending
> the branch to Linus.
> ---

It was already sent to Linus.

https://marc.info/?l=linux-rdma&m=152719509803047&w=2

Thanks


signature.asc
Description: PGP signature
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel