* [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops
@ 2015-10-07 23:48 Vivien Didelot
2015-10-07 23:48 ` [PATCH net-next 1/6] net: dsa: add uses_hw_tag Vivien Didelot
` (6 more replies)
0 siblings, 7 replies; 23+ messages in thread
From: Vivien Didelot @ 2015-10-07 23:48 UTC (permalink / raw)
To: netdev
Cc: linux-kernel, kernel, David S. Miller, Scott Feldman, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov,
Vivien Didelot
This patchset pushes the switchdev prepare phase for the FDB add and del
operations down to the DSA drivers. Currently only mv88e6xxx is affected.
Since the dump requires a bit of refactoring in the driver, it'll come in a
future patchset.
The first 3 patches removes the dsa.h include from linux/netdevice.h, which
broke the inclusion of switchdev.h in dsa.h.
The last 3 patches add port_fdb_prepare and change port_fdb_add and
port_fdb_del to use the switchdev FDB object structure.
To be more specific about the include dependency issue, here's a snippet of
what happens currently if you include switchdev.h in dsa.h:
[...]
include/net/switchdev.h:52:30: error: field ‘ppid’ has incomplete type
struct netdev_phys_item_id ppid; /* PORT_PARENT_ID */
^
include/net/switchdev.h:185:14: warning: ‘struct nlmsghdr’ declared inside parameter list [enabled by default]
struct nlmsghdr *nlh, u16 flags);
^
include/net/switchdev.h:195:7: warning: ‘struct ndmsg’ declared inside parameter list [enabled by default]
include/net/switchdev.h:198:7: warning: ‘struct nlattr’ declared inside parameter list [enabled by default]
u16 vid);
^
include/net/switchdev.h:201:15: warning: ‘struct netlink_callback’ declared inside parameter list [enabled by default]
struct net_device *filter_dev, int idx);
^
[...]
Removing the dsa.h include from linux/netdevice.h gets rid of these errors but
then the DSA code complains if you don't include it in dsa_priv.h:
[...]
net/dsa/slave.c: In function ‘dsa_slave_set_mac_address’:
net/dsa/slave.c:178:39: error: dereferencing pointer to incomplete type
struct net_device *master = p->parent->dst->master_netdev;
^
In file included from include/linux/list.h:8:0,
from net/dsa/slave.c:11:
net/dsa/slave.c: In function ‘dsa_bridge_check_vlan_range’:
net/dsa/slave.c:209:26: error: ‘DSA_MAX_PORTS’ undeclared (first use in this function)
DECLARE_BITMAP(members, DSA_MAX_PORTS);
^
net/dsa/slave.c:209:26: note: each undeclared identifier is reported only once for each function it appears in
DECLARE_BITMAP(members, DSA_MAX_PORTS);
^
include/linux/kernel.h:67:30: note: in definition of macro ‘DIV_ROUND_UP’
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
^
include/linux/types.h:10:21: note: in expansion of macro ‘BITS_TO_LONGS’
unsigned long name[BITS_TO_LONGS(bits)]
^
net/dsa/slave.c:209:2: note: in expansion of macro ‘DECLARE_BITMAP’
DECLARE_BITMAP(members, DSA_MAX_PORTS);
^
net/dsa/slave.c:1190:7: error: ‘DSA_TAG_PROTO_EDSA’ undeclared (first use in this function)
case DSA_TAG_PROTO_EDSA:
^
net/dsa/slave.c: In function ‘dsa_slave_get_iflink’:
net/dsa/slave.c:64:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
[...]
Thanks,
-v
Vivien Didelot (6):
net: dsa: add uses_hw_tag
net: dsa: include dsa.h in dsa_priv.h
net: remove dsa.h include from linux/netdevice.h
net: dsa: add port_fdb_prepare
net: dsa: push prepare phase in port_fdb_add
net: dsa: use switchdev obj in port_fdb_del
drivers/net/dsa/mv88e6171.c | 1 +
drivers/net/dsa/mv88e6352.c | 1 +
drivers/net/dsa/mv88e6xxx.c | 23 +++++++++++++++++------
drivers/net/dsa/mv88e6xxx.h | 8 ++++++--
include/linux/netdevice.h | 9 ++++++---
include/net/dsa.h | 14 +++++++-------
net/dsa/dsa.c | 1 +
net/dsa/dsa_priv.h | 1 +
net/dsa/slave.c | 11 +++++++----
9 files changed, 47 insertions(+), 22 deletions(-)
--
2.6.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH net-next 1/6] net: dsa: add uses_hw_tag
2015-10-07 23:48 [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops Vivien Didelot
@ 2015-10-07 23:48 ` Vivien Didelot
2015-10-07 23:48 ` [PATCH net-next 2/6] net: dsa: include dsa.h in dsa_priv.h Vivien Didelot
` (5 subsequent siblings)
6 siblings, 0 replies; 23+ messages in thread
From: Vivien Didelot @ 2015-10-07 23:48 UTC (permalink / raw)
To: netdev
Cc: linux-kernel, kernel, David S. Miller, Scott Feldman, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov,
Vivien Didelot
Instead of checking that the dsa_switch_tree rcv pointer is not NULL,
add a uses_hw_tag boolean to net_device to explicit whether it uses
hardware inserted tag or not.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
---
include/linux/netdevice.h | 6 ++++--
include/net/dsa.h | 5 -----
net/dsa/dsa.c | 1 +
3 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index b337440..73f0510 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1422,6 +1422,7 @@ enum netdev_priv_flags {
* @allmulti: Counter, enables or disables allmulticast mode
*
* @vlan_info: VLAN info
+ * @uses_hw_tag: Whether the device uses hardware inserted tag or not
* @dsa_ptr: dsa specific data
* @tipc_ptr: TIPC specific data
* @atalk_ptr: AppleTalk link
@@ -1640,6 +1641,7 @@ struct net_device {
struct vlan_info __rcu *vlan_info;
#endif
#if IS_ENABLED(CONFIG_NET_DSA)
+ bool uses_hw_tag;
struct dsa_switch_tree *dsa_ptr;
#endif
#if IS_ENABLED(CONFIG_TIPC)
@@ -1891,8 +1893,8 @@ void dev_net_set(struct net_device *dev, struct net *net)
static inline bool netdev_uses_dsa(struct net_device *dev)
{
#if IS_ENABLED(CONFIG_NET_DSA)
- if (dev->dsa_ptr != NULL)
- return dsa_uses_tagged_protocol(dev->dsa_ptr);
+ if (dev->uses_hw_tag)
+ return true;
#endif
return false;
}
diff --git a/include/net/dsa.h b/include/net/dsa.h
index b34d812..3e9eb6c 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -333,9 +333,4 @@ static inline void *ds_to_priv(struct dsa_switch *ds)
{
return (void *)(ds + 1);
}
-
-static inline bool dsa_uses_tagged_protocol(struct dsa_switch_tree *dst)
-{
- return dst->rcv != NULL;
-}
#endif
diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
index aa398bc..51b3815 100644
--- a/net/dsa/dsa.c
+++ b/net/dsa/dsa.c
@@ -834,6 +834,7 @@ static void dsa_setup_dst(struct dsa_switch_tree *dst, struct net_device *dev,
*/
wmb();
dev->dsa_ptr = (void *)dst;
+ dev->uses_hw_tag = dst->tag_protocol != DSA_TAG_PROTO_NONE;
if (dst->link_poll_needed) {
INIT_WORK(&dst->link_poll_work, dsa_link_poll_work);
--
2.6.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH net-next 2/6] net: dsa: include dsa.h in dsa_priv.h
2015-10-07 23:48 [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops Vivien Didelot
2015-10-07 23:48 ` [PATCH net-next 1/6] net: dsa: add uses_hw_tag Vivien Didelot
@ 2015-10-07 23:48 ` Vivien Didelot
2015-10-07 23:48 ` [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h Vivien Didelot
` (4 subsequent siblings)
6 siblings, 0 replies; 23+ messages in thread
From: Vivien Didelot @ 2015-10-07 23:48 UTC (permalink / raw)
To: netdev
Cc: linux-kernel, kernel, David S. Miller, Scott Feldman, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov,
Vivien Didelot
dsa_priv.h uses dsa specific structures, as well as the files using it,
so include dsa.h here.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
---
net/dsa/dsa_priv.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h
index 311796c8..4522f47 100644
--- a/net/dsa/dsa_priv.h
+++ b/net/dsa/dsa_priv.h
@@ -14,6 +14,7 @@
#include <linux/phy.h>
#include <linux/netdevice.h>
#include <linux/netpoll.h>
+#include <net/dsa.h>
struct dsa_device_ops {
struct sk_buff *(*xmit)(struct sk_buff *skb, struct net_device *dev);
--
2.6.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h
2015-10-07 23:48 [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops Vivien Didelot
2015-10-07 23:48 ` [PATCH net-next 1/6] net: dsa: add uses_hw_tag Vivien Didelot
2015-10-07 23:48 ` [PATCH net-next 2/6] net: dsa: include dsa.h in dsa_priv.h Vivien Didelot
@ 2015-10-07 23:48 ` Vivien Didelot
2015-10-08 9:04 ` kbuild test robot
2015-10-10 23:35 ` kbuild test robot
2015-10-07 23:48 ` [PATCH net-next 4/6] net: dsa: add port_fdb_prepare Vivien Didelot
` (3 subsequent siblings)
6 siblings, 2 replies; 23+ messages in thread
From: Vivien Didelot @ 2015-10-07 23:48 UTC (permalink / raw)
To: netdev
Cc: linux-kernel, kernel, David S. Miller, Scott Feldman, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov,
Vivien Didelot
Forward declare struct dsa_switch_tree in netdevice.h instead of
including the dsa.h header.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
---
include/linux/netdevice.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 73f0510..d0bcabb 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -41,7 +41,6 @@
#include <linux/ethtool.h>
#include <net/net_namespace.h>
-#include <net/dsa.h>
#ifdef CONFIG_DCB
#include <net/dcbnl.h>
#endif
@@ -60,6 +59,8 @@ struct wireless_dev;
/* 802.15.4 specific */
struct wpan_dev;
struct mpls_dev;
+/* DSA specific */
+struct dsa_switch_tree;
void netdev_set_default_ethtool_ops(struct net_device *dev,
const struct ethtool_ops *ops);
--
2.6.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH net-next 4/6] net: dsa: add port_fdb_prepare
2015-10-07 23:48 [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops Vivien Didelot
` (2 preceding siblings ...)
2015-10-07 23:48 ` [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h Vivien Didelot
@ 2015-10-07 23:48 ` Vivien Didelot
2015-10-08 0:25 ` Andrew Lunn
2015-10-08 6:19 ` Scott Feldman
2015-10-07 23:48 ` [PATCH net-next 5/6] net: dsa: push prepare phase in port_fdb_add Vivien Didelot
` (2 subsequent siblings)
6 siblings, 2 replies; 23+ messages in thread
From: Vivien Didelot @ 2015-10-07 23:48 UTC (permalink / raw)
To: netdev
Cc: linux-kernel, kernel, David S. Miller, Scott Feldman, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov,
Vivien Didelot
Push the prepare phase for FDB operations down to the DSA drivers, with
a new port_fdb_prepare function. Currently only mv88e6xxx is affected.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
---
drivers/net/dsa/mv88e6171.c | 1 +
drivers/net/dsa/mv88e6352.c | 1 +
drivers/net/dsa/mv88e6xxx.c | 10 ++++++++++
drivers/net/dsa/mv88e6xxx.h | 3 +++
include/net/dsa.h | 4 ++++
net/dsa/slave.c | 7 +++++--
6 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/drivers/net/dsa/mv88e6171.c b/drivers/net/dsa/mv88e6171.c
index c95cfab..ca3330a 100644
--- a/drivers/net/dsa/mv88e6171.c
+++ b/drivers/net/dsa/mv88e6171.c
@@ -121,6 +121,7 @@ struct dsa_switch_driver mv88e6171_switch_driver = {
.port_vlan_add = mv88e6xxx_port_vlan_add,
.port_vlan_del = mv88e6xxx_port_vlan_del,
.vlan_getnext = mv88e6xxx_vlan_getnext,
+ .port_fdb_prepare = mv88e6xxx_port_fdb_prepare,
.port_fdb_add = mv88e6xxx_port_fdb_add,
.port_fdb_del = mv88e6xxx_port_fdb_del,
.port_fdb_getnext = mv88e6xxx_port_fdb_getnext,
diff --git a/drivers/net/dsa/mv88e6352.c b/drivers/net/dsa/mv88e6352.c
index 3736706..078a358 100644
--- a/drivers/net/dsa/mv88e6352.c
+++ b/drivers/net/dsa/mv88e6352.c
@@ -348,6 +348,7 @@ struct dsa_switch_driver mv88e6352_switch_driver = {
.port_vlan_add = mv88e6xxx_port_vlan_add,
.port_vlan_del = mv88e6xxx_port_vlan_del,
.vlan_getnext = mv88e6xxx_vlan_getnext,
+ .port_fdb_prepare = mv88e6xxx_port_fdb_prepare,
.port_fdb_add = mv88e6xxx_port_fdb_add,
.port_fdb_del = mv88e6xxx_port_fdb_del,
.port_fdb_getnext = mv88e6xxx_port_fdb_getnext,
diff --git a/drivers/net/dsa/mv88e6xxx.c b/drivers/net/dsa/mv88e6xxx.c
index 6053d11..9fbb727 100644
--- a/drivers/net/dsa/mv88e6xxx.c
+++ b/drivers/net/dsa/mv88e6xxx.c
@@ -1841,6 +1841,16 @@ static int _mv88e6xxx_port_fdb_load(struct dsa_switch *ds, int port,
return _mv88e6xxx_atu_load(ds, &entry);
}
+int mv88e6xxx_port_fdb_prepare(struct dsa_switch *ds, int port,
+ const struct switchdev_obj_port_fdb *fdb,
+ struct switchdev_trans *trans)
+{
+ /* We don't need any dynamic resource from the kernel (yet),
+ * so skip the prepare phase.
+ */
+ return 0;
+}
+
int mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
const unsigned char *addr, u16 vid)
{
diff --git a/drivers/net/dsa/mv88e6xxx.h b/drivers/net/dsa/mv88e6xxx.h
index 39b261f..4475640 100644
--- a/drivers/net/dsa/mv88e6xxx.h
+++ b/drivers/net/dsa/mv88e6xxx.h
@@ -479,6 +479,9 @@ int mv88e6xxx_port_vlan_add(struct dsa_switch *ds, int port, u16 vid,
int mv88e6xxx_port_vlan_del(struct dsa_switch *ds, int port, u16 vid);
int mv88e6xxx_vlan_getnext(struct dsa_switch *ds, u16 *vid,
unsigned long *ports, unsigned long *untagged);
+int mv88e6xxx_port_fdb_prepare(struct dsa_switch *ds, int port,
+ const struct switchdev_obj_port_fdb *fdb,
+ struct switchdev_trans *trans);
int mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
const unsigned char *addr, u16 vid);
int mv88e6xxx_port_fdb_del(struct dsa_switch *ds, int port,
diff --git a/include/net/dsa.h b/include/net/dsa.h
index 3e9eb6c..3aee8a5 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -19,6 +19,7 @@
#include <linux/phy.h>
#include <linux/phy_fixed.h>
#include <linux/ethtool.h>
+#include <net/switchdev.h>
enum dsa_tag_protocol {
DSA_TAG_PROTO_NONE = 0,
@@ -316,6 +317,9 @@ struct dsa_switch_driver {
/*
* Forwarding database
*/
+ int (*port_fdb_prepare)(struct dsa_switch *ds, int port,
+ const struct switchdev_obj_port_fdb *fdb,
+ struct switchdev_trans *trans);
int (*port_fdb_add)(struct dsa_switch *ds, int port,
const unsigned char *addr, u16 vid);
int (*port_fdb_del)(struct dsa_switch *ds, int port,
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 4f607bc..48e8c15 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -346,10 +346,13 @@ static int dsa_slave_port_fdb_add(struct net_device *dev,
{
struct dsa_slave_priv *p = netdev_priv(dev);
struct dsa_switch *ds = p->parent;
- int ret = -EOPNOTSUPP;
+ int ret;
+
+ if (!ds->drv->port_fdb_prepare || !ds->drv->port_fdb_add)
+ return -EOPNOTSUPP;
if (switchdev_trans_ph_prepare(trans))
- ret = ds->drv->port_fdb_add ? 0 : -EOPNOTSUPP;
+ ret = ds->drv->port_fdb_prepare(ds, p->port, fdb, trans);
else
ret = ds->drv->port_fdb_add(ds, p->port, fdb->addr, fdb->vid);
--
2.6.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH net-next 5/6] net: dsa: push prepare phase in port_fdb_add
2015-10-07 23:48 [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops Vivien Didelot
` (3 preceding siblings ...)
2015-10-07 23:48 ` [PATCH net-next 4/6] net: dsa: add port_fdb_prepare Vivien Didelot
@ 2015-10-07 23:48 ` Vivien Didelot
2015-10-08 6:19 ` Scott Feldman
2015-10-07 23:48 ` [PATCH net-next 6/6] net: dsa: use switchdev obj in port_fdb_del Vivien Didelot
2015-10-08 12:28 ` [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops David Miller
6 siblings, 1 reply; 23+ messages in thread
From: Vivien Didelot @ 2015-10-07 23:48 UTC (permalink / raw)
To: netdev
Cc: linux-kernel, kernel, David S. Miller, Scott Feldman, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov,
Vivien Didelot
Now that the prepare phase is pushed down to the DSA drivers, propagate
it to the port_fdb_add function.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
---
drivers/net/dsa/mv88e6xxx.c | 7 ++++---
drivers/net/dsa/mv88e6xxx.h | 3 ++-
include/net/dsa.h | 3 ++-
net/dsa/slave.c | 2 +-
4 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/drivers/net/dsa/mv88e6xxx.c b/drivers/net/dsa/mv88e6xxx.c
index 9fbb727..916c98e 100644
--- a/drivers/net/dsa/mv88e6xxx.c
+++ b/drivers/net/dsa/mv88e6xxx.c
@@ -1852,16 +1852,17 @@ int mv88e6xxx_port_fdb_prepare(struct dsa_switch *ds, int port,
}
int mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
- const unsigned char *addr, u16 vid)
+ const struct switchdev_obj_port_fdb *fdb,
+ struct switchdev_trans *trans)
{
- int state = is_multicast_ether_addr(addr) ?
+ int state = is_multicast_ether_addr(fdb->addr) ?
GLOBAL_ATU_DATA_STATE_MC_STATIC :
GLOBAL_ATU_DATA_STATE_UC_STATIC;
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
int ret;
mutex_lock(&ps->smi_mutex);
- ret = _mv88e6xxx_port_fdb_load(ds, port, addr, vid, state);
+ ret = _mv88e6xxx_port_fdb_load(ds, port, fdb->addr, fdb->vid, state);
mutex_unlock(&ps->smi_mutex);
return ret;
diff --git a/drivers/net/dsa/mv88e6xxx.h b/drivers/net/dsa/mv88e6xxx.h
index 4475640..e688bee 100644
--- a/drivers/net/dsa/mv88e6xxx.h
+++ b/drivers/net/dsa/mv88e6xxx.h
@@ -483,7 +483,8 @@ int mv88e6xxx_port_fdb_prepare(struct dsa_switch *ds, int port,
const struct switchdev_obj_port_fdb *fdb,
struct switchdev_trans *trans);
int mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
- const unsigned char *addr, u16 vid);
+ const struct switchdev_obj_port_fdb *fdb,
+ struct switchdev_trans *trans);
int mv88e6xxx_port_fdb_del(struct dsa_switch *ds, int port,
const unsigned char *addr, u16 vid);
int mv88e6xxx_port_fdb_getnext(struct dsa_switch *ds, int port,
diff --git a/include/net/dsa.h b/include/net/dsa.h
index 3aee8a5..2d86d31 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -321,7 +321,8 @@ struct dsa_switch_driver {
const struct switchdev_obj_port_fdb *fdb,
struct switchdev_trans *trans);
int (*port_fdb_add)(struct dsa_switch *ds, int port,
- const unsigned char *addr, u16 vid);
+ const struct switchdev_obj_port_fdb *fdb,
+ struct switchdev_trans *trans);
int (*port_fdb_del)(struct dsa_switch *ds, int port,
const unsigned char *addr, u16 vid);
int (*port_fdb_getnext)(struct dsa_switch *ds, int port,
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 48e8c15..6f7f27e 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -354,7 +354,7 @@ static int dsa_slave_port_fdb_add(struct net_device *dev,
if (switchdev_trans_ph_prepare(trans))
ret = ds->drv->port_fdb_prepare(ds, p->port, fdb, trans);
else
- ret = ds->drv->port_fdb_add(ds, p->port, fdb->addr, fdb->vid);
+ ret = ds->drv->port_fdb_add(ds, p->port, fdb, trans);
return ret;
}
--
2.6.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH net-next 6/6] net: dsa: use switchdev obj in port_fdb_del
2015-10-07 23:48 [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops Vivien Didelot
` (4 preceding siblings ...)
2015-10-07 23:48 ` [PATCH net-next 5/6] net: dsa: push prepare phase in port_fdb_add Vivien Didelot
@ 2015-10-07 23:48 ` Vivien Didelot
2015-10-08 6:20 ` Scott Feldman
2015-10-08 12:28 ` [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops David Miller
6 siblings, 1 reply; 23+ messages in thread
From: Vivien Didelot @ 2015-10-07 23:48 UTC (permalink / raw)
To: netdev
Cc: linux-kernel, kernel, David S. Miller, Scott Feldman, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov,
Vivien Didelot
For consistency with the FDB add operation, propagate the
switchdev_obj_port_fdb structure in the DSA drivers.
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
---
drivers/net/dsa/mv88e6xxx.c | 4 ++--
drivers/net/dsa/mv88e6xxx.h | 2 +-
include/net/dsa.h | 2 +-
net/dsa/slave.c | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/dsa/mv88e6xxx.c b/drivers/net/dsa/mv88e6xxx.c
index 916c98e..f73c953 100644
--- a/drivers/net/dsa/mv88e6xxx.c
+++ b/drivers/net/dsa/mv88e6xxx.c
@@ -1869,13 +1869,13 @@ int mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
}
int mv88e6xxx_port_fdb_del(struct dsa_switch *ds, int port,
- const unsigned char *addr, u16 vid)
+ const struct switchdev_obj_port_fdb *fdb)
{
struct mv88e6xxx_priv_state *ps = ds_to_priv(ds);
int ret;
mutex_lock(&ps->smi_mutex);
- ret = _mv88e6xxx_port_fdb_load(ds, port, addr, vid,
+ ret = _mv88e6xxx_port_fdb_load(ds, port, fdb->addr, fdb->vid,
GLOBAL_ATU_DATA_STATE_UNUSED);
mutex_unlock(&ps->smi_mutex);
diff --git a/drivers/net/dsa/mv88e6xxx.h b/drivers/net/dsa/mv88e6xxx.h
index e688bee..1347a73 100644
--- a/drivers/net/dsa/mv88e6xxx.h
+++ b/drivers/net/dsa/mv88e6xxx.h
@@ -486,7 +486,7 @@ int mv88e6xxx_port_fdb_add(struct dsa_switch *ds, int port,
const struct switchdev_obj_port_fdb *fdb,
struct switchdev_trans *trans);
int mv88e6xxx_port_fdb_del(struct dsa_switch *ds, int port,
- const unsigned char *addr, u16 vid);
+ const struct switchdev_obj_port_fdb *fdb);
int mv88e6xxx_port_fdb_getnext(struct dsa_switch *ds, int port,
unsigned char *addr, u16 *vid, bool *is_static);
int mv88e6xxx_phy_page_read(struct dsa_switch *ds, int port, int page, int reg);
diff --git a/include/net/dsa.h b/include/net/dsa.h
index 2d86d31..b802dab 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -324,7 +324,7 @@ struct dsa_switch_driver {
const struct switchdev_obj_port_fdb *fdb,
struct switchdev_trans *trans);
int (*port_fdb_del)(struct dsa_switch *ds, int port,
- const unsigned char *addr, u16 vid);
+ const struct switchdev_obj_port_fdb *fdb);
int (*port_fdb_getnext)(struct dsa_switch *ds, int port,
unsigned char *addr, u16 *vid,
bool *is_static);
diff --git a/net/dsa/slave.c b/net/dsa/slave.c
index 6f7f27e..bb2bd3b 100644
--- a/net/dsa/slave.c
+++ b/net/dsa/slave.c
@@ -367,7 +367,7 @@ static int dsa_slave_port_fdb_del(struct net_device *dev,
int ret = -EOPNOTSUPP;
if (ds->drv->port_fdb_del)
- ret = ds->drv->port_fdb_del(ds, p->port, fdb->addr, fdb->vid);
+ ret = ds->drv->port_fdb_del(ds, p->port, fdb);
return ret;
}
--
2.6.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 4/6] net: dsa: add port_fdb_prepare
2015-10-07 23:48 ` [PATCH net-next 4/6] net: dsa: add port_fdb_prepare Vivien Didelot
@ 2015-10-08 0:25 ` Andrew Lunn
2015-10-08 12:55 ` Vivien Didelot
2015-10-08 6:19 ` Scott Feldman
1 sibling, 1 reply; 23+ messages in thread
From: Andrew Lunn @ 2015-10-08 0:25 UTC (permalink / raw)
To: Vivien Didelot
Cc: netdev, linux-kernel, kernel, David S. Miller, Scott Feldman,
Jiri Pirko, Florian Fainelli, Neil Armstrong, Sergei Shtylyov
On Wed, Oct 07, 2015 at 07:48:29PM -0400, Vivien Didelot wrote:
> Push the prepare phase for FDB operations down to the DSA drivers, with
> a new port_fdb_prepare function. Currently only mv88e6xxx is affected.
>
> Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
> ---
> drivers/net/dsa/mv88e6171.c | 1 +
> drivers/net/dsa/mv88e6352.c | 1 +
> drivers/net/dsa/mv88e6xxx.c | 10 ++++++++++
> drivers/net/dsa/mv88e6xxx.h | 3 +++
> include/net/dsa.h | 4 ++++
> net/dsa/slave.c | 7 +++++--
> 6 files changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/dsa/mv88e6171.c b/drivers/net/dsa/mv88e6171.c
> index c95cfab..ca3330a 100644
> --- a/drivers/net/dsa/mv88e6171.c
> +++ b/drivers/net/dsa/mv88e6171.c
> @@ -121,6 +121,7 @@ struct dsa_switch_driver mv88e6171_switch_driver = {
> .port_vlan_add = mv88e6xxx_port_vlan_add,
> .port_vlan_del = mv88e6xxx_port_vlan_del,
> .vlan_getnext = mv88e6xxx_vlan_getnext,
> + .port_fdb_prepare = mv88e6xxx_port_fdb_prepare,
Hi Vivien
Bike shedding a bit, but i would call this
mv88e6xxx_port_fdb_prepare_add.
> .port_fdb_add = mv88e6xxx_port_fdb_add,
> .port_fdb_del = mv88e6xxx_port_fdb_del,
> .port_fdb_getnext = mv88e6xxx_port_fdb_getnext,
Taking a theoretical example, say mv88e6xxx_port_fdb_getnext needed a
prepare call to allocate memory to put the returned ATU into. What
would you call that?
mv88e6xxx_port_fdb_prepare_add and mv88e6xxx_port_fdb_prepare_getnext
just seems unambiguous and future proof.
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 4/6] net: dsa: add port_fdb_prepare
2015-10-07 23:48 ` [PATCH net-next 4/6] net: dsa: add port_fdb_prepare Vivien Didelot
2015-10-08 0:25 ` Andrew Lunn
@ 2015-10-08 6:19 ` Scott Feldman
1 sibling, 0 replies; 23+ messages in thread
From: Scott Feldman @ 2015-10-08 6:19 UTC (permalink / raw)
To: Vivien Didelot
Cc: Netdev, linux-kernel, kernel, David S. Miller, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov
On Wed, Oct 7, 2015 at 4:48 PM, Vivien Didelot
<vivien.didelot@savoirfairelinux.com> wrote:
> Push the prepare phase for FDB operations down to the DSA drivers, with
> a new port_fdb_prepare function. Currently only mv88e6xxx is affected.
>
> Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Reviewed-by: Scott Feldman <sfeldma@gmail.com>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 5/6] net: dsa: push prepare phase in port_fdb_add
2015-10-07 23:48 ` [PATCH net-next 5/6] net: dsa: push prepare phase in port_fdb_add Vivien Didelot
@ 2015-10-08 6:19 ` Scott Feldman
0 siblings, 0 replies; 23+ messages in thread
From: Scott Feldman @ 2015-10-08 6:19 UTC (permalink / raw)
To: Vivien Didelot
Cc: Netdev, linux-kernel, kernel, David S. Miller, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov
On Wed, Oct 7, 2015 at 4:48 PM, Vivien Didelot
<vivien.didelot@savoirfairelinux.com> wrote:
> Now that the prepare phase is pushed down to the DSA drivers, propagate
> it to the port_fdb_add function.
>
> Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Reviewed-by: Scott Feldman <sfeldma@gmail.com>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 6/6] net: dsa: use switchdev obj in port_fdb_del
2015-10-07 23:48 ` [PATCH net-next 6/6] net: dsa: use switchdev obj in port_fdb_del Vivien Didelot
@ 2015-10-08 6:20 ` Scott Feldman
0 siblings, 0 replies; 23+ messages in thread
From: Scott Feldman @ 2015-10-08 6:20 UTC (permalink / raw)
To: Vivien Didelot
Cc: Netdev, linux-kernel, kernel, David S. Miller, Jiri Pirko,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov
On Wed, Oct 7, 2015 at 4:48 PM, Vivien Didelot
<vivien.didelot@savoirfairelinux.com> wrote:
> For consistency with the FDB add operation, propagate the
> switchdev_obj_port_fdb structure in the DSA drivers.
>
> Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Reviewed-by: Scott Feldman <sfeldma@gmail.com>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h
2015-10-07 23:48 ` [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h Vivien Didelot
@ 2015-10-08 9:04 ` kbuild test robot
2015-10-08 9:18 ` Jiri Pirko
2015-10-10 23:35 ` kbuild test robot
1 sibling, 1 reply; 23+ messages in thread
From: kbuild test robot @ 2015-10-08 9:04 UTC (permalink / raw)
To: Vivien Didelot
Cc: kbuild-all, netdev, linux-kernel, kernel, David S. Miller,
Scott Feldman, Jiri Pirko, Florian Fainelli, Andrew Lunn,
Neil Armstrong, Sergei Shtylyov, Vivien Didelot
[-- Attachment #1: Type: text/plain, Size: 2906 bytes --]
Hi Vivien,
[auto build test ERROR on net-next/master -- if it's inappropriate base, please ignore]
config: arm64-allyesconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=arm64
All errors (new ones prefixed by >>):
In file included from drivers/net/ethernet/hisilicon/hns/hnae.c:15:0:
>> drivers/net/ethernet/hisilicon/hns/hnae.h:465:2: error: unknown type name 'phy_interface_t'
phy_interface_t phy_if;
^
vim +/phy_interface_t +465 drivers/net/ethernet/hisilicon/hns/hnae.h
6fe6611f huangdaode 2015-09-17 449 struct hnae_ae_dev {
6fe6611f huangdaode 2015-09-17 450 struct device cls_dev; /* the class dev */
6fe6611f huangdaode 2015-09-17 451 struct device *dev; /* the presented dev */
6fe6611f huangdaode 2015-09-17 452 struct hnae_ae_ops *ops;
6fe6611f huangdaode 2015-09-17 453 struct list_head node;
6fe6611f huangdaode 2015-09-17 454 struct module *owner; /* the module who provides this dev */
6fe6611f huangdaode 2015-09-17 455 int id;
6fe6611f huangdaode 2015-09-17 456 char name[AE_NAME_SIZE];
6fe6611f huangdaode 2015-09-17 457 struct list_head handle_list;
6fe6611f huangdaode 2015-09-17 458 spinlock_t lock; /* lock to protect the handle_list */
6fe6611f huangdaode 2015-09-17 459 };
6fe6611f huangdaode 2015-09-17 460
6fe6611f huangdaode 2015-09-17 461 struct hnae_handle {
6fe6611f huangdaode 2015-09-17 462 struct device *owner_dev; /* the device which make use of this handle */
6fe6611f huangdaode 2015-09-17 463 struct hnae_ae_dev *dev; /* the device who provides this handle */
6fe6611f huangdaode 2015-09-17 464 struct device_node *phy_node;
6fe6611f huangdaode 2015-09-17 @465 phy_interface_t phy_if;
6fe6611f huangdaode 2015-09-17 466 u32 if_support;
6fe6611f huangdaode 2015-09-17 467 int q_num;
6fe6611f huangdaode 2015-09-17 468 int vf_id;
6fe6611f huangdaode 2015-09-17 469 u32 eport_id;
6fe6611f huangdaode 2015-09-17 470 enum hnae_port_type port_type;
6fe6611f huangdaode 2015-09-17 471 struct list_head node; /* list to hnae_ae_dev->handle_list */
6fe6611f huangdaode 2015-09-17 472 struct hnae_buf_ops *bops; /* operation for the buffer */
6fe6611f huangdaode 2015-09-17 473 struct hnae_queue **qs; /* array base of all queues */
:::::: The code at line 465 was first introduced by commit
:::::: 6fe6611ff275522a4e4c0359e2f46cdd07780d2f net: add Hisilicon Network Subsystem hnae framework support
:::::: TO: huangdaode <huangdaode@hisilicon.com>
:::::: CC: David S. Miller <davem@davemloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 45880 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h
2015-10-08 9:04 ` kbuild test robot
@ 2015-10-08 9:18 ` Jiri Pirko
2015-10-08 10:37 ` Wei Xu
[not found] ` <56165D5F.7050300@hisilicon.com>
0 siblings, 2 replies; 23+ messages in thread
From: Jiri Pirko @ 2015-10-08 9:18 UTC (permalink / raw)
To: kbuild test robot
Cc: Vivien Didelot, kbuild-all, netdev, linux-kernel, kernel,
David S. Miller, Scott Feldman, Florian Fainelli, Andrew Lunn,
Neil Armstrong, Sergei Shtylyov, xuwei5
Thu, Oct 08, 2015 at 11:04:48AM CEST, lkp@intel.com wrote:
>Hi Vivien,
>
>[auto build test ERROR on net-next/master -- if it's inappropriate base, please ignore]
>
>config: arm64-allyesconfig (attached as .config)
>reproduce:
> wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # save the attached .config to linux build tree
> make.cross ARCH=arm64
>
>All errors (new ones prefixed by >>):
>
> In file included from drivers/net/ethernet/hisilicon/hns/hnae.c:15:0:
>>> drivers/net/ethernet/hisilicon/hns/hnae.h:465:2: error: unknown type name 'phy_interface_t'
> phy_interface_t phy_if;
> ^
>
>vim +/phy_interface_t +465 drivers/net/ethernet/hisilicon/hns/hnae.h
Looks like hnae.c needs to do "#include <linux/phy.h>" directly.
Cc'ing maintainer.
>
>6fe6611f huangdaode 2015-09-17 449 struct hnae_ae_dev {
>6fe6611f huangdaode 2015-09-17 450 struct device cls_dev; /* the class dev */
>6fe6611f huangdaode 2015-09-17 451 struct device *dev; /* the presented dev */
>6fe6611f huangdaode 2015-09-17 452 struct hnae_ae_ops *ops;
>6fe6611f huangdaode 2015-09-17 453 struct list_head node;
>6fe6611f huangdaode 2015-09-17 454 struct module *owner; /* the module who provides this dev */
>6fe6611f huangdaode 2015-09-17 455 int id;
>6fe6611f huangdaode 2015-09-17 456 char name[AE_NAME_SIZE];
>6fe6611f huangdaode 2015-09-17 457 struct list_head handle_list;
>6fe6611f huangdaode 2015-09-17 458 spinlock_t lock; /* lock to protect the handle_list */
>6fe6611f huangdaode 2015-09-17 459 };
>6fe6611f huangdaode 2015-09-17 460
>6fe6611f huangdaode 2015-09-17 461 struct hnae_handle {
>6fe6611f huangdaode 2015-09-17 462 struct device *owner_dev; /* the device which make use of this handle */
>6fe6611f huangdaode 2015-09-17 463 struct hnae_ae_dev *dev; /* the device who provides this handle */
>6fe6611f huangdaode 2015-09-17 464 struct device_node *phy_node;
>6fe6611f huangdaode 2015-09-17 @465 phy_interface_t phy_if;
>6fe6611f huangdaode 2015-09-17 466 u32 if_support;
>6fe6611f huangdaode 2015-09-17 467 int q_num;
>6fe6611f huangdaode 2015-09-17 468 int vf_id;
>6fe6611f huangdaode 2015-09-17 469 u32 eport_id;
>6fe6611f huangdaode 2015-09-17 470 enum hnae_port_type port_type;
>6fe6611f huangdaode 2015-09-17 471 struct list_head node; /* list to hnae_ae_dev->handle_list */
>6fe6611f huangdaode 2015-09-17 472 struct hnae_buf_ops *bops; /* operation for the buffer */
>6fe6611f huangdaode 2015-09-17 473 struct hnae_queue **qs; /* array base of all queues */
>
>:::::: The code at line 465 was first introduced by commit
>:::::: 6fe6611ff275522a4e4c0359e2f46cdd07780d2f net: add Hisilicon Network Subsystem hnae framework support
>
>:::::: TO: huangdaode <huangdaode@hisilicon.com>
>:::::: CC: David S. Miller <davem@davemloft.net>
>
>---
>0-DAY kernel test infrastructure Open Source Technology Center
>https://lists.01.org/pipermail/kbuild-all Intel Corporation
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h
2015-10-08 9:18 ` Jiri Pirko
@ 2015-10-08 10:37 ` Wei Xu
[not found] ` <56165D5F.7050300@hisilicon.com>
1 sibling, 0 replies; 23+ messages in thread
From: Wei Xu @ 2015-10-08 10:37 UTC (permalink / raw)
To: Jiri Pirko, kbuild test robot, huangdaode, Liguozhu (Kenneth),
yankejian 00180145, Salil Mehta, yisenzhuang
Cc: Vivien Didelot, kbuild-all, netdev, linux-kernel, kernel,
David S. Miller, Scott Feldman, Florian Fainelli, Andrew Lunn,
Neil Armstrong, Sergei Shtylyov, Linuxarm
On 10/8/2015 10:18 AM, Jiri Pirko wrote:
> Thu, Oct 08, 2015 at 11:04:48AM CEST, lkp@intel.com wrote:
>> Hi Vivien,
>>
>> [auto build test ERROR on net-next/master -- if it's inappropriate base, please ignore]
>>
>> config: arm64-allyesconfig (attached as .config)
>> reproduce:
>> wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>> chmod +x ~/bin/make.cross
>> # save the attached .config to linux build tree
>> make.cross ARCH=arm64
>>
>> All errors (new ones prefixed by >>):
>>
>> In file included from drivers/net/ethernet/hisilicon/hns/hnae.c:15:0:
>>>> drivers/net/ethernet/hisilicon/hns/hnae.h:465:2: error: unknown type name 'phy_interface_t'
>> phy_interface_t phy_if;
>> ^
>>
>> vim +/phy_interface_t +465 drivers/net/ethernet/hisilicon/hns/hnae.h
>
>
Hi Jiri,
> Looks like hnae.c needs to do "#include <linux/phy.h>" directly.
> Cc'ing maintainer.
>
Thanks!
We will send the fix patch soon.
Best Regards,
Wei
>
>>
>> 6fe6611f huangdaode 2015-09-17 449 struct hnae_ae_dev {
>> 6fe6611f huangdaode 2015-09-17 450 struct device cls_dev; /* the class dev */
>> 6fe6611f huangdaode 2015-09-17 451 struct device *dev; /* the presented dev */
>> 6fe6611f huangdaode 2015-09-17 452 struct hnae_ae_ops *ops;
>> 6fe6611f huangdaode 2015-09-17 453 struct list_head node;
>> 6fe6611f huangdaode 2015-09-17 454 struct module *owner; /* the module who provides this dev */
>> 6fe6611f huangdaode 2015-09-17 455 int id;
>> 6fe6611f huangdaode 2015-09-17 456 char name[AE_NAME_SIZE];
>> 6fe6611f huangdaode 2015-09-17 457 struct list_head handle_list;
>> 6fe6611f huangdaode 2015-09-17 458 spinlock_t lock; /* lock to protect the handle_list */
>> 6fe6611f huangdaode 2015-09-17 459 };
>> 6fe6611f huangdaode 2015-09-17 460
>> 6fe6611f huangdaode 2015-09-17 461 struct hnae_handle {
>> 6fe6611f huangdaode 2015-09-17 462 struct device *owner_dev; /* the device which make use of this handle */
>> 6fe6611f huangdaode 2015-09-17 463 struct hnae_ae_dev *dev; /* the device who provides this handle */
>> 6fe6611f huangdaode 2015-09-17 464 struct device_node *phy_node;
>> 6fe6611f huangdaode 2015-09-17 @465 phy_interface_t phy_if;
>> 6fe6611f huangdaode 2015-09-17 466 u32 if_support;
>> 6fe6611f huangdaode 2015-09-17 467 int q_num;
>> 6fe6611f huangdaode 2015-09-17 468 int vf_id;
>> 6fe6611f huangdaode 2015-09-17 469 u32 eport_id;
>> 6fe6611f huangdaode 2015-09-17 470 enum hnae_port_type port_type;
>> 6fe6611f huangdaode 2015-09-17 471 struct list_head node; /* list to hnae_ae_dev->handle_list */
>> 6fe6611f huangdaode 2015-09-17 472 struct hnae_buf_ops *bops; /* operation for the buffer */
>> 6fe6611f huangdaode 2015-09-17 473 struct hnae_queue **qs; /* array base of all queues */
>>
>> :::::: The code at line 465 was first introduced by commit
>> :::::: 6fe6611ff275522a4e4c0359e2f46cdd07780d2f net: add Hisilicon Network Subsystem hnae framework support
>>
>> :::::: TO: huangdaode <huangdaode@hisilicon.com>
>> :::::: CC: David S. Miller <davem@davemloft.net>
>>
>> ---
>> 0-DAY kernel test infrastructure Open Source Technology Center
>> https://lists.01.org/pipermail/kbuild-all Intel Corporation
>
>
>
> .
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h
[not found] ` <56165D5F.7050300@hisilicon.com>
@ 2015-10-08 12:18 ` Jiri Pirko
2015-10-08 12:36 ` huangdaode
0 siblings, 1 reply; 23+ messages in thread
From: Jiri Pirko @ 2015-10-08 12:18 UTC (permalink / raw)
To: huangdaode
Cc: kbuild test robot, Vivien Didelot, kbuild-all, netdev,
linux-kernel, kernel, David S. Miller, Scott Feldman,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov,
xuwei5
Thu, Oct 08, 2015 at 02:11:11PM CEST, huangdaode@hisilicon.com wrote:
>On 2015/10/8 17:18, Jiri Pirko wrote:
>>Thu, Oct 08, 2015 at 11:04:48AM CEST, lkp@intel.com wrote:
>>>Hi Vivien,
>>>
>>>[auto build test ERROR on net-next/master -- if it's inappropriate base, please ignore]
>>>
>>>config: arm64-allyesconfig (attached as .config)
>>>reproduce:
>>> wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>>> chmod +x ~/bin/make.cross
>>> # save the attached .config to linux build tree
>>> make.cross ARCH=arm64
>>>
>>>All errors (new ones prefixed by >>):
>>>
>>> In file included from drivers/net/ethernet/hisilicon/hns/hnae.c:15:0:
>>>>>drivers/net/ethernet/hisilicon/hns/hnae.h:465:2: error: unknown type name 'phy_interface_t'
>>> phy_interface_t phy_if;
>>> ^
>>>
>>>vim +/phy_interface_t +465 drivers/net/ethernet/hisilicon/hns/hnae.h
>>
>>Looks like hnae.c needs to do "#include <linux/phy.h>" directly.
>>Cc'ing maintainer.
>>
>>
>>>6fe6611f huangdaode 2015-09-17 449 struct hnae_ae_dev {
>>>6fe6611f huangdaode 2015-09-17 450 struct device cls_dev; /* the class dev */
>>>6fe6611f huangdaode 2015-09-17 451 struct device *dev; /* the presented dev */
>>>6fe6611f huangdaode 2015-09-17 452 struct hnae_ae_ops *ops;
>>>6fe6611f huangdaode 2015-09-17 453 struct list_head node;
>>>6fe6611f huangdaode 2015-09-17 454 struct module *owner; /* the module who provides this dev */
>>>6fe6611f huangdaode 2015-09-17 455 int id;
>>>6fe6611f huangdaode 2015-09-17 456 char name[AE_NAME_SIZE];
>>>6fe6611f huangdaode 2015-09-17 457 struct list_head handle_list;
>>>6fe6611f huangdaode 2015-09-17 458 spinlock_t lock; /* lock to protect the handle_list */
>>>6fe6611f huangdaode 2015-09-17 459 };
>>>6fe6611f huangdaode 2015-09-17 460
>>>6fe6611f huangdaode 2015-09-17 461 struct hnae_handle {
>>>6fe6611f huangdaode 2015-09-17 462 struct device *owner_dev; /* the device which make use of this handle */
>>>6fe6611f huangdaode 2015-09-17 463 struct hnae_ae_dev *dev; /* the device who provides this handle */
>>>6fe6611f huangdaode 2015-09-17 464 struct device_node *phy_node;
>>>6fe6611f huangdaode 2015-09-17 @465 phy_interface_t phy_if;
>>>6fe6611f huangdaode 2015-09-17 466 u32 if_support;
>>>6fe6611f huangdaode 2015-09-17 467 int q_num;
>>>6fe6611f huangdaode 2015-09-17 468 int vf_id;
>>>6fe6611f huangdaode 2015-09-17 469 u32 eport_id;
>>>6fe6611f huangdaode 2015-09-17 470 enum hnae_port_type port_type;
>>>6fe6611f huangdaode 2015-09-17 471 struct list_head node; /* list to hnae_ae_dev->handle_list */
>>>6fe6611f huangdaode 2015-09-17 472 struct hnae_buf_ops *bops; /* operation for the buffer */
>>>6fe6611f huangdaode 2015-09-17 473 struct hnae_queue **qs; /* array base of all queues */
>>>
>>>:::::: The code at line 465 was first introduced by commit
>>>:::::: 6fe6611ff275522a4e4c0359e2f46cdd07780d2f net: add Hisilicon Network Subsystem hnae framework support
>>>
>>>:::::: TO: huangdaode <huangdaode@hisilicon.com>
>>>:::::: CC: David S. Miller <davem@davemloft.net>
>>>
>>>---
>>>0-DAY kernel test infrastructure Open Source Technology Center
>>>https://lists.01.org/pipermail/kbuild-all Intel Corporation
>>
>>--
>>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>>the body of a message to majordomo@vger.kernel.org
>>More majordomo info at http://vger.kernel.org/majordomo-info.html
>>Please read the FAQ at http://www.tux.org/lkml/
>>
>>.
>>
>Hi Jiri
>thanks for your information. i have compiled the latest net-next repo using
>your config file, but don't find the error you mentioned.
>the attachment is the build log and the config file.
>
>also, i used the following command to compile, but still fail to reproduce
>your issue.
>/ daode@Turing-Arch-b:~/work/net-next$ cat build.sh //
>// export ARCH=arm64 //
>// export CROSS_COMPILE=aarch64-linux-gnu-//
>// make allyesconfig//
>// make -j16 //
>////daode@Turing-Arch-b:~/work/net-next$ /
>
>so could you please help me to reproduce the issue.
The patch is not in tree. That does not change the fact that you should
include linux/phy.h directly. Please send the patch adding that. Thanks!
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops
2015-10-07 23:48 [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops Vivien Didelot
` (5 preceding siblings ...)
2015-10-07 23:48 ` [PATCH net-next 6/6] net: dsa: use switchdev obj in port_fdb_del Vivien Didelot
@ 2015-10-08 12:28 ` David Miller
2015-10-08 13:32 ` Vivien Didelot
6 siblings, 1 reply; 23+ messages in thread
From: David Miller @ 2015-10-08 12:28 UTC (permalink / raw)
To: vivien.didelot
Cc: netdev, linux-kernel, kernel, sfeldma, jiri, f.fainelli, andrew,
narmstrong, sergei.shtylyov
From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Date: Wed, 7 Oct 2015 19:48:25 -0400
> The first 3 patches removes the dsa.h include from linux/netdevice.h, which
> broke the inclusion of switchdev.h in dsa.h.
I still don't agree with bloating up struct netdevice just to deal with
an include file ordering issue, sorry.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h
2015-10-08 12:18 ` Jiri Pirko
@ 2015-10-08 12:36 ` huangdaode
0 siblings, 0 replies; 23+ messages in thread
From: huangdaode @ 2015-10-08 12:36 UTC (permalink / raw)
To: Jiri Pirko
Cc: kbuild test robot, Vivien Didelot, kbuild-all, netdev,
linux-kernel, kernel, David S. Miller, Scott Feldman,
Florian Fainelli, Andrew Lunn, Neil Armstrong, Sergei Shtylyov,
xuwei5
On 2015/10/8 20:18, Jiri Pirko wrote:
> Thu, Oct 08, 2015 at 02:11:11PM CEST, huangdaode@hisilicon.com wrote:
>> On 2015/10/8 17:18, Jiri Pirko wrote:
>>> Thu, Oct 08, 2015 at 11:04:48AM CEST, lkp@intel.com wrote:
>>>> Hi Vivien,
>>>>
>>>> [auto build test ERROR on net-next/master -- if it's inappropriate base, please ignore]
>>>>
>>>> config: arm64-allyesconfig (attached as .config)
>>>> reproduce:
>>>> wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>>>> chmod +x ~/bin/make.cross
>>>> # save the attached .config to linux build tree
>>>> make.cross ARCH=arm64
>>>>
>>>> All errors (new ones prefixed by >>):
>>>>
>>>> In file included from drivers/net/ethernet/hisilicon/hns/hnae.c:15:0:
>>>>>> drivers/net/ethernet/hisilicon/hns/hnae.h:465:2: error: unknown type name 'phy_interface_t'
>>>> phy_interface_t phy_if;
>>>> ^
>>>>
>>>> vim +/phy_interface_t +465 drivers/net/ethernet/hisilicon/hns/hnae.h
>>> Looks like hnae.c needs to do "#include <linux/phy.h>" directly.
>>> Cc'ing maintainer.
>>>
>>>
>>>> 6fe6611f huangdaode 2015-09-17 449 struct hnae_ae_dev {
>>>> 6fe6611f huangdaode 2015-09-17 450 struct device cls_dev; /* the class dev */
>>>> 6fe6611f huangdaode 2015-09-17 451 struct device *dev; /* the presented dev */
>>>> 6fe6611f huangdaode 2015-09-17 452 struct hnae_ae_ops *ops;
>>>> 6fe6611f huangdaode 2015-09-17 453 struct list_head node;
>>>> 6fe6611f huangdaode 2015-09-17 454 struct module *owner; /* the module who provides this dev */
>>>> 6fe6611f huangdaode 2015-09-17 455 int id;
>>>> 6fe6611f huangdaode 2015-09-17 456 char name[AE_NAME_SIZE];
>>>> 6fe6611f huangdaode 2015-09-17 457 struct list_head handle_list;
>>>> 6fe6611f huangdaode 2015-09-17 458 spinlock_t lock; /* lock to protect the handle_list */
>>>> 6fe6611f huangdaode 2015-09-17 459 };
>>>> 6fe6611f huangdaode 2015-09-17 460
>>>> 6fe6611f huangdaode 2015-09-17 461 struct hnae_handle {
>>>> 6fe6611f huangdaode 2015-09-17 462 struct device *owner_dev; /* the device which make use of this handle */
>>>> 6fe6611f huangdaode 2015-09-17 463 struct hnae_ae_dev *dev; /* the device who provides this handle */
>>>> 6fe6611f huangdaode 2015-09-17 464 struct device_node *phy_node;
>>>> 6fe6611f huangdaode 2015-09-17 @465 phy_interface_t phy_if;
>>>> 6fe6611f huangdaode 2015-09-17 466 u32 if_support;
>>>> 6fe6611f huangdaode 2015-09-17 467 int q_num;
>>>> 6fe6611f huangdaode 2015-09-17 468 int vf_id;
>>>> 6fe6611f huangdaode 2015-09-17 469 u32 eport_id;
>>>> 6fe6611f huangdaode 2015-09-17 470 enum hnae_port_type port_type;
>>>> 6fe6611f huangdaode 2015-09-17 471 struct list_head node; /* list to hnae_ae_dev->handle_list */
>>>> 6fe6611f huangdaode 2015-09-17 472 struct hnae_buf_ops *bops; /* operation for the buffer */
>>>> 6fe6611f huangdaode 2015-09-17 473 struct hnae_queue **qs; /* array base of all queues */
>>>>
>>>> :::::: The code at line 465 was first introduced by commit
>>>> :::::: 6fe6611ff275522a4e4c0359e2f46cdd07780d2f net: add Hisilicon Network Subsystem hnae framework support
>>>>
>>>> :::::: TO: huangdaode <huangdaode@hisilicon.com>
>>>> :::::: CC: David S. Miller <davem@davemloft.net>
>>>>
>>>> ---
>>>> 0-DAY kernel test infrastructure Open Source Technology Center
>>>> https://lists.01.org/pipermail/kbuild-all Intel Corporation
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>> Please read the FAQ at http://www.tux.org/lkml/
>>>
>>> .
>>>
>> Hi Jiri
>> thanks for your information. i have compiled the latest net-next repo using
>> your config file, but don't find the error you mentioned.
>> the attachment is the build log and the config file.
>>
>> also, i used the following command to compile, but still fail to reproduce
>> your issue.
>> / daode@Turing-Arch-b:~/work/net-next$ cat build.sh //
>> // export ARCH=arm64 //
>> // export CROSS_COMPILE=aarch64-linux-gnu-//
>> // make allyesconfig//
>> // make -j16 //
>> ////daode@Turing-Arch-b:~/work/net-next$ /
>>
>> so could you please help me to reproduce the issue.
> The patch is not in tree. That does not change the fact that you should
> include linux/phy.h directly. Please send the patch adding that. Thanks!
>
>
>
> .
>
ok,
thanks!
--
Best Regards
Daode Huang
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 4/6] net: dsa: add port_fdb_prepare
2015-10-08 0:25 ` Andrew Lunn
@ 2015-10-08 12:55 ` Vivien Didelot
2015-10-08 15:07 ` Andrew Lunn
0 siblings, 1 reply; 23+ messages in thread
From: Vivien Didelot @ 2015-10-08 12:55 UTC (permalink / raw)
To: Andrew Lunn
Cc: netdev, linux-kernel, kernel, David S. Miller, Scott Feldman,
Jiri Pirko, Florian Fainelli, Neil Armstrong, Sergei Shtylyov
Hi Andrew,
On Oct. Thursday 08 (41) 02:25 AM, Andrew Lunn wrote:
> On Wed, Oct 07, 2015 at 07:48:29PM -0400, Vivien Didelot wrote:
> > Push the prepare phase for FDB operations down to the DSA drivers, with
> > a new port_fdb_prepare function. Currently only mv88e6xxx is affected.
> >
> > Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
> > ---
> > drivers/net/dsa/mv88e6171.c | 1 +
> > drivers/net/dsa/mv88e6352.c | 1 +
> > drivers/net/dsa/mv88e6xxx.c | 10 ++++++++++
> > drivers/net/dsa/mv88e6xxx.h | 3 +++
> > include/net/dsa.h | 4 ++++
> > net/dsa/slave.c | 7 +++++--
> > 6 files changed, 24 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/dsa/mv88e6171.c b/drivers/net/dsa/mv88e6171.c
> > index c95cfab..ca3330a 100644
> > --- a/drivers/net/dsa/mv88e6171.c
> > +++ b/drivers/net/dsa/mv88e6171.c
> > @@ -121,6 +121,7 @@ struct dsa_switch_driver mv88e6171_switch_driver = {
> > .port_vlan_add = mv88e6xxx_port_vlan_add,
> > .port_vlan_del = mv88e6xxx_port_vlan_del,
> > .vlan_getnext = mv88e6xxx_vlan_getnext,
> > + .port_fdb_prepare = mv88e6xxx_port_fdb_prepare,
>
> Hi Vivien
>
> Bike shedding a bit, but i would call this
> mv88e6xxx_port_fdb_prepare_add.
I think port_fdb_prepare is fine because it is the only step that
actually needs the 2-phase model. del and dump are safe and don't need
pre-check.
> > .port_fdb_add = mv88e6xxx_port_fdb_add,
> > .port_fdb_del = mv88e6xxx_port_fdb_del,
> > .port_fdb_getnext = mv88e6xxx_port_fdb_getnext,
>
> Taking a theoretical example, say mv88e6xxx_port_fdb_getnext needed a
> prepare call to allocate memory to put the returned ATU into. What
> would you call that?
>
> mv88e6xxx_port_fdb_prepare_add and mv88e6xxx_port_fdb_prepare_getnext
> just seems unambiguous and future proof.
the switchdev dump operation is called just once, so no preparation is
implied (from the switchdev point of view). It is the responsability of
the driver to call the switchdev dump callback itself.
Thanks,
-v
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops
2015-10-08 12:28 ` [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops David Miller
@ 2015-10-08 13:32 ` Vivien Didelot
2015-10-08 13:47 ` Jiri Pirko
0 siblings, 1 reply; 23+ messages in thread
From: Vivien Didelot @ 2015-10-08 13:32 UTC (permalink / raw)
To: David Miller
Cc: netdev, linux-kernel, kernel, sfeldma, jiri, f.fainelli, andrew,
narmstrong, sergei.shtylyov
Hi David,
On Oct. Thursday 08 (41) 05:28 AM, David Miller wrote:
> From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
> Date: Wed, 7 Oct 2015 19:48:25 -0400
>
> > The first 3 patches removes the dsa.h include from linux/netdevice.h, which
> > broke the inclusion of switchdev.h in dsa.h.
>
> I still don't agree with bloating up struct netdevice just to deal with
> an include file ordering issue, sorry.
Yes, I just saw your reply on the first version. I will resend the
patchset with the forward declarations instead.
But looking at the issue that Jiri and the kbuild bot pointed out
earlier in the thread, we must agree that having the DSA header in
netdevice.h is wrong.
There are 2 points to note here:
* checking a "rcv" member of a DSA-specific structure to anwser the
question "does this interface uses hardware-inserted tag?" is not
generic and not robust at all.
* the "dsa_ptr" of net_device is just used to access the dsa_switch_tree
from DSA packet_type receive functions. There must be another way to
pass it, maybe from a netdev_priv or the packet_type->af_packet_priv?
Thanks,
-v
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops
2015-10-08 13:32 ` Vivien Didelot
@ 2015-10-08 13:47 ` Jiri Pirko
2015-10-08 14:11 ` Vivien Didelot
0 siblings, 1 reply; 23+ messages in thread
From: Jiri Pirko @ 2015-10-08 13:47 UTC (permalink / raw)
To: Vivien Didelot
Cc: David Miller, netdev, linux-kernel, kernel, sfeldma, f.fainelli,
andrew, narmstrong, sergei.shtylyov
Thu, Oct 08, 2015 at 03:32:51PM CEST, vivien.didelot@savoirfairelinux.com wrote:
>Hi David,
>
>On Oct. Thursday 08 (41) 05:28 AM, David Miller wrote:
>> From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
>> Date: Wed, 7 Oct 2015 19:48:25 -0400
>>
>> > The first 3 patches removes the dsa.h include from linux/netdevice.h, which
>> > broke the inclusion of switchdev.h in dsa.h.
>>
>> I still don't agree with bloating up struct netdevice just to deal with
>> an include file ordering issue, sorry.
>
>Yes, I just saw your reply on the first version. I will resend the
>patchset with the forward declarations instead.
>
>But looking at the issue that Jiri and the kbuild bot pointed out
>earlier in the thread, we must agree that having the DSA header in
>netdevice.h is wrong.
>
>There are 2 points to note here:
>
>* checking a "rcv" member of a DSA-specific structure to anwser the
> question "does this interface uses hardware-inserted tag?" is not
> generic and not robust at all.
>
>* the "dsa_ptr" of net_device is just used to access the dsa_switch_tree
> from DSA packet_type receive functions. There must be another way to
> pass it, maybe from a netdev_priv or the packet_type->af_packet_priv?
I sent previously patch for this:
http://patchwork.ozlabs.org/patch/336940/
So now my patch would have another user :)
Vivien, I will refresh the patch and send it to you, the you can
use the priv by dsa and send my patch along with your patchset. How does
that sound?
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops
2015-10-08 13:47 ` Jiri Pirko
@ 2015-10-08 14:11 ` Vivien Didelot
0 siblings, 0 replies; 23+ messages in thread
From: Vivien Didelot @ 2015-10-08 14:11 UTC (permalink / raw)
To: Jiri Pirko
Cc: David Miller, netdev, linux-kernel, kernel, sfeldma, f.fainelli,
andrew, narmstrong, sergei.shtylyov
Hi Jiri, David,
On Oct. Thursday 08 (41) 03:47 PM, Jiri Pirko wrote:
> Thu, Oct 08, 2015 at 03:32:51PM CEST, vivien.didelot@savoirfairelinux.com wrote:
> >Hi David,
> >
> >On Oct. Thursday 08 (41) 05:28 AM, David Miller wrote:
> >> From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
> >> Date: Wed, 7 Oct 2015 19:48:25 -0400
> >>
> >> > The first 3 patches removes the dsa.h include from linux/netdevice.h, which
> >> > broke the inclusion of switchdev.h in dsa.h.
> >>
> >> I still don't agree with bloating up struct netdevice just to deal with
> >> an include file ordering issue, sorry.
> >
> >Yes, I just saw your reply on the first version. I will resend the
> >patchset with the forward declarations instead.
> >
> >But looking at the issue that Jiri and the kbuild bot pointed out
> >earlier in the thread, we must agree that having the DSA header in
> >netdevice.h is wrong.
> >
> >There are 2 points to note here:
> >
> >* checking a "rcv" member of a DSA-specific structure to anwser the
> > question "does this interface uses hardware-inserted tag?" is not
> > generic and not robust at all.
> >
> >* the "dsa_ptr" of net_device is just used to access the dsa_switch_tree
> > from DSA packet_type receive functions. There must be another way to
> > pass it, maybe from a netdev_priv or the packet_type->af_packet_priv?
>
> I sent previously patch for this:
> http://patchwork.ozlabs.org/patch/336940/
> So now my patch would have another user :)
Your patch makes sense. It will reduce the bloating of net_device that
David is talking about. I would also suspect that other <protocol>_ptr
members of the structure are only used in the context of packet_type.
> Vivien, I will refresh the patch and send it to you, the you can
> use the priv by dsa and send my patch along with your patchset. How does
> that sound?
Sure, sounds good.
Thanks,
-v
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 4/6] net: dsa: add port_fdb_prepare
2015-10-08 12:55 ` Vivien Didelot
@ 2015-10-08 15:07 ` Andrew Lunn
0 siblings, 0 replies; 23+ messages in thread
From: Andrew Lunn @ 2015-10-08 15:07 UTC (permalink / raw)
To: Vivien Didelot
Cc: netdev, linux-kernel, kernel, David S. Miller, Scott Feldman,
Jiri Pirko, Florian Fainelli, Neil Armstrong, Sergei Shtylyov
> > Hi Vivien
> >
> > Bike shedding a bit, but i would call this
> > mv88e6xxx_port_fdb_prepare_add.
>
> I think port_fdb_prepare is fine because it is the only step that
> actually needs the 2-phase model. del and dump are safe and don't need
> pre-check.
O.K. I don't have a strong opinion, i just think sometime later we
might run into a naming consistency issue. If this does happen, we can
fix it then.
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h
2015-10-07 23:48 ` [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h Vivien Didelot
2015-10-08 9:04 ` kbuild test robot
@ 2015-10-10 23:35 ` kbuild test robot
1 sibling, 0 replies; 23+ messages in thread
From: kbuild test robot @ 2015-10-10 23:35 UTC (permalink / raw)
To: Vivien Didelot
Cc: kbuild-all, netdev, linux-kernel, kernel, David S. Miller,
Scott Feldman, Jiri Pirko, Florian Fainelli, Andrew Lunn,
Neil Armstrong, Sergei Shtylyov, Vivien Didelot
[-- Attachment #1: Type: text/plain, Size: 8640 bytes --]
Hi Vivien,
[auto build test ERROR on net-next/master -- if it's inappropriate base, please ignore]
config: x86_64-randconfig-n0-10110700 (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
drivers/net/usb/lan78xx.c: In function 'lan78xx_link_reset':
>> drivers/net/usb/lan78xx.c:841:8: error: implicit declaration of function 'phy_read' [-Werror=implicit-function-declaration]
ret = phy_read(phydev, LAN88XX_INT_STS);
^
>> drivers/net/usb/lan78xx.c:850:2: error: implicit declaration of function 'phy_read_status' [-Werror=implicit-function-declaration]
phy_read_status(phydev);
^
>> drivers/net/usb/lan78xx.c:852:13: error: dereferencing pointer to incomplete type 'struct phy_device'
if (!phydev->link && dev->link_on) {
^
>> drivers/net/usb/lan78xx.c:867:3: error: implicit declaration of function 'phy_ethtool_gset' [-Werror=implicit-function-declaration]
phy_ethtool_gset(phydev, &ecmd);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_set_wol':
>> drivers/net/usb/lan78xx.c:1067:2: error: implicit declaration of function 'phy_ethtool_set_wol' [-Werror=implicit-function-declaration]
phy_ethtool_set_wol(netdev->phydev, wol);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_get_eee':
>> drivers/net/usb/lan78xx.c:1085:8: error: implicit declaration of function 'phy_ethtool_get_eee' [-Werror=implicit-function-declaration]
ret = phy_ethtool_get_eee(phydev, edata);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_set_eee':
>> drivers/net/usb/lan78xx.c:1127:3: error: implicit declaration of function 'phy_ethtool_set_eee' [-Werror=implicit-function-declaration]
phy_ethtool_set_eee(net->phydev, edata);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_nway_reset':
>> drivers/net/usb/lan78xx.c:1151:9: error: implicit declaration of function 'phy_start_aneg' [-Werror=implicit-function-declaration]
return phy_start_aneg(net->phydev);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_get_mdix_status':
>> drivers/net/usb/lan78xx.c:1183:2: error: implicit declaration of function 'phy_write' [-Werror=implicit-function-declaration]
phy_write(phydev, LAN88XX_EXT_PAGE_ACCESS, LAN88XX_EXT_PAGE_SPACE_1);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_set_settings':
>> drivers/net/usb/lan78xx.c:1275:8: error: implicit declaration of function 'phy_ethtool_sset' [-Werror=implicit-function-declaration]
ret = phy_ethtool_sset(phydev, cmd);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_ioctl':
>> drivers/net/usb/lan78xx.c:1315:9: error: implicit declaration of function 'phy_mii_ioctl' [-Werror=implicit-function-declaration]
return phy_mii_ioctl(netdev->phydev, rq, cmd);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_mdiobus_read':
>> drivers/net/usb/lan78xx.c:1374:31: error: dereferencing pointer to incomplete type 'struct mii_bus'
struct lan78xx_net *dev = bus->priv;
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_mdio_init':
>> drivers/net/usb/lan78xx.c:1447:17: error: implicit declaration of function 'mdiobus_alloc' [-Werror=implicit-function-declaration]
dev->mdiobus = mdiobus_alloc();
^
drivers/net/usb/lan78xx.c:1447:15: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
dev->mdiobus = mdiobus_alloc();
^
>> drivers/net/usb/lan78xx.c:1458:29: error: 'MII_BUS_ID_SIZE' undeclared (first use in this function)
snprintf(dev->mdiobus->id, MII_BUS_ID_SIZE, "usb-%03d:%03d",
^
drivers/net/usb/lan78xx.c:1458:29: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/net/usb/lan78xx.c:1461:44: error: 'PHY_MAX_ADDR' undeclared (first use in this function)
dev->mdiobus->irq = kzalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
^
>> drivers/net/usb/lan78xx.c:1469:26: error: 'PHY_IGNORE_INTERRUPT' undeclared (first use in this function)
dev->mdiobus->irq[i] = PHY_IGNORE_INTERRUPT;
^
>> drivers/net/usb/lan78xx.c:1479:8: error: implicit declaration of function 'mdiobus_register' [-Werror=implicit-function-declaration]
ret = mdiobus_register(dev->mdiobus);
^
>> drivers/net/usb/lan78xx.c:1490:2: error: implicit declaration of function 'mdiobus_free' [-Werror=implicit-function-declaration]
mdiobus_free(dev->mdiobus);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_remove_mdio':
>> drivers/net/usb/lan78xx.c:1496:2: error: implicit declaration of function 'mdiobus_unregister' [-Werror=implicit-function-declaration]
mdiobus_unregister(dev->mdiobus);
^
drivers/net/usb/lan78xx.c: In function 'lan78xx_phy_init':
>> drivers/net/usb/lan78xx.c:1511:11: error: implicit declaration of function 'phy_find_first' [-Werror=implicit-function-declaration]
phydev = phy_find_first(dev->mdiobus);
^
drivers/net/usb/lan78xx.c:1511:9: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
phydev = phy_find_first(dev->mdiobus);
^
vim +/phy_read +841 drivers/net/usb/lan78xx.c
ce85e13ad Woojung.Huh@microchip.com 2015-09-16 835 struct phy_device *phydev = dev->net->phydev;
55d7de9de Woojung.Huh@microchip.com 2015-07-30 836 struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET };
99c79eceb Geert Uytterhoeven 2015-09-04 837 int ladv, radv, ret;
55d7de9de Woojung.Huh@microchip.com 2015-07-30 838 u32 buf;
55d7de9de Woojung.Huh@microchip.com 2015-07-30 839
55d7de9de Woojung.Huh@microchip.com 2015-07-30 840 /* clear PHY interrupt status */
bdfba55e0 Woojung.Huh@microchip.com 2015-09-16 @841 ret = phy_read(phydev, LAN88XX_INT_STS);
55d7de9de Woojung.Huh@microchip.com 2015-07-30 842 if (unlikely(ret < 0))
55d7de9de Woojung.Huh@microchip.com 2015-07-30 843 return -EIO;
55d7de9de Woojung.Huh@microchip.com 2015-07-30 844
55d7de9de Woojung.Huh@microchip.com 2015-07-30 845 /* clear LAN78xx interrupt status */
55d7de9de Woojung.Huh@microchip.com 2015-07-30 846 ret = lan78xx_write_reg(dev, INT_STS, INT_STS_PHY_INT_);
55d7de9de Woojung.Huh@microchip.com 2015-07-30 847 if (unlikely(ret < 0))
55d7de9de Woojung.Huh@microchip.com 2015-07-30 848 return -EIO;
55d7de9de Woojung.Huh@microchip.com 2015-07-30 849
ce85e13ad Woojung.Huh@microchip.com 2015-09-16 @850 phy_read_status(phydev);
ce85e13ad Woojung.Huh@microchip.com 2015-09-16 851
ce85e13ad Woojung.Huh@microchip.com 2015-09-16 @852 if (!phydev->link && dev->link_on) {
55d7de9de Woojung.Huh@microchip.com 2015-07-30 853 dev->link_on = false;
55d7de9de Woojung.Huh@microchip.com 2015-07-30 854 netif_carrier_off(dev->net);
55d7de9de Woojung.Huh@microchip.com 2015-07-30 855
55d7de9de Woojung.Huh@microchip.com 2015-07-30 856 /* reset MAC */
55d7de9de Woojung.Huh@microchip.com 2015-07-30 857 ret = lan78xx_read_reg(dev, MAC_CR, &buf);
55d7de9de Woojung.Huh@microchip.com 2015-07-30 858 if (unlikely(ret < 0))
55d7de9de Woojung.Huh@microchip.com 2015-07-30 859 return -EIO;
55d7de9de Woojung.Huh@microchip.com 2015-07-30 860 buf |= MAC_CR_RST_;
55d7de9de Woojung.Huh@microchip.com 2015-07-30 861 ret = lan78xx_write_reg(dev, MAC_CR, buf);
55d7de9de Woojung.Huh@microchip.com 2015-07-30 862 if (unlikely(ret < 0))
55d7de9de Woojung.Huh@microchip.com 2015-07-30 863 return -EIO;
ce85e13ad Woojung.Huh@microchip.com 2015-09-16 864 } else if (phydev->link && !dev->link_on) {
55d7de9de Woojung.Huh@microchip.com 2015-07-30 865 dev->link_on = true;
55d7de9de Woojung.Huh@microchip.com 2015-07-30 866
ce85e13ad Woojung.Huh@microchip.com 2015-09-16 @867 phy_ethtool_gset(phydev, &ecmd);
55d7de9de Woojung.Huh@microchip.com 2015-07-30 868
bdfba55e0 Woojung.Huh@microchip.com 2015-09-16 869 ret = phy_read(phydev, LAN88XX_INT_STS);
55d7de9de Woojung.Huh@microchip.com 2015-07-30 870
:::::: The code at line 841 was first introduced by commit
:::::: bdfba55e0d541a9547d737573ae11db7ed72e2bb lan78xx: Remove phy defines in lan78xx.h and use defines in include/linux/microchipphy.h
:::::: TO: Woojung.Huh@microchip.com <Woojung.Huh@microchip.com>
:::::: CC: David S. Miller <davem@davemloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 24162 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2015-10-10 23:36 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-07 23:48 [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops Vivien Didelot
2015-10-07 23:48 ` [PATCH net-next 1/6] net: dsa: add uses_hw_tag Vivien Didelot
2015-10-07 23:48 ` [PATCH net-next 2/6] net: dsa: include dsa.h in dsa_priv.h Vivien Didelot
2015-10-07 23:48 ` [PATCH net-next 3/6] net: remove dsa.h include from linux/netdevice.h Vivien Didelot
2015-10-08 9:04 ` kbuild test robot
2015-10-08 9:18 ` Jiri Pirko
2015-10-08 10:37 ` Wei Xu
[not found] ` <56165D5F.7050300@hisilicon.com>
2015-10-08 12:18 ` Jiri Pirko
2015-10-08 12:36 ` huangdaode
2015-10-10 23:35 ` kbuild test robot
2015-10-07 23:48 ` [PATCH net-next 4/6] net: dsa: add port_fdb_prepare Vivien Didelot
2015-10-08 0:25 ` Andrew Lunn
2015-10-08 12:55 ` Vivien Didelot
2015-10-08 15:07 ` Andrew Lunn
2015-10-08 6:19 ` Scott Feldman
2015-10-07 23:48 ` [PATCH net-next 5/6] net: dsa: push prepare phase in port_fdb_add Vivien Didelot
2015-10-08 6:19 ` Scott Feldman
2015-10-07 23:48 ` [PATCH net-next 6/6] net: dsa: use switchdev obj in port_fdb_del Vivien Didelot
2015-10-08 6:20 ` Scott Feldman
2015-10-08 12:28 ` [PATCH net-next 0/6] net: dsa: push switchdev prepare phase in FDB ops David Miller
2015-10-08 13:32 ` Vivien Didelot
2015-10-08 13:47 ` Jiri Pirko
2015-10-08 14:11 ` Vivien Didelot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).