Re: [PATCH net-next 1/2] net: hns: enet specisies a reference to dsaf
On 2015/12/9 2:10, Florian Fainelli wrote: > Subject: s/specisies/specifies/? Thanks for pointing it out. i will change it in next patchset. Best Regards, yankejian > On 04/12/15 23:59, yankejian wrote: >> enet is associating with dasf. before this patch, the association is >> the same strings between ae-name and dsa-name. in a general way, enet >> specifies a reference to dsaf should be a good idea. so this patch >> deletes the ae-name in enet, and adds parsing the ae-handle >> from DT to set the associating with dsaf. >> >> Signed-off-by: yankejian>> --- > [snip] > >> diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.c >> b/drivers/net/ethernet/hisilicon/hns/hnae.c >> index b364529..3bfe36f 100644 >> --- a/drivers/net/ethernet/hisilicon/hns/hnae.c >> +++ b/drivers/net/ethernet/hisilicon/hns/hnae.c >> @@ -95,21 +95,17 @@ static struct hnae_buf_ops hnae_bops = { >> static int __ae_match(struct device *dev, const void *data) >> { >> struct hnae_ae_dev *hdev = cls_to_ae_dev(dev); >> -const char *ae_id = data; >> >> -if (!strncmp(ae_id, hdev->name, AE_NAME_SIZE)) >> -return 1; >> - >> -return 0; >> +return hdev->dev->of_node == data; >> } >> >> -static struct hnae_ae_dev *find_ae(const char *ae_id) >> +static struct hnae_ae_dev *find_ae(const struct device_node *ae_node) >> { >> struct device *dev; >> >> -WARN_ON(!ae_id); >> +WARN_ON(!ae_node); >> >> -dev = class_find_device(hnae_class, NULL, ae_id, __ae_match); >> +dev = class_find_device(hnae_class, NULL, ae_node, __ae_match); > of_find_net_device_by_node might be used for this maybe? it needs return hnae_ae_dev so we didn't decide to use of_find_net_device_by_node. Thanks -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH net-next 1/2] net: hns: enet specisies a reference to dsaf
Subject: s/specisies/specifies/? On 04/12/15 23:59, yankejian wrote: > enet is associating with dasf. before this patch, the association is > the same strings between ae-name and dsa-name. in a general way, enet > specifies a reference to dsaf should be a good idea. so this patch > deletes the ae-name in enet, and adds parsing the ae-handle > from DT to set the associating with dsaf. > > Signed-off-by: yankejian> --- [snip] > diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.c > b/drivers/net/ethernet/hisilicon/hns/hnae.c > index b364529..3bfe36f 100644 > --- a/drivers/net/ethernet/hisilicon/hns/hnae.c > +++ b/drivers/net/ethernet/hisilicon/hns/hnae.c > @@ -95,21 +95,17 @@ static struct hnae_buf_ops hnae_bops = { > static int __ae_match(struct device *dev, const void *data) > { > struct hnae_ae_dev *hdev = cls_to_ae_dev(dev); > - const char *ae_id = data; > > - if (!strncmp(ae_id, hdev->name, AE_NAME_SIZE)) > - return 1; > - > - return 0; > + return hdev->dev->of_node == data; > } > > -static struct hnae_ae_dev *find_ae(const char *ae_id) > +static struct hnae_ae_dev *find_ae(const struct device_node *ae_node) > { > struct device *dev; > > - WARN_ON(!ae_id); > + WARN_ON(!ae_node); > > - dev = class_find_device(hnae_class, NULL, ae_id, __ae_match); > + dev = class_find_device(hnae_class, NULL, ae_node, __ae_match); of_find_net_device_by_node might be used for this maybe? -- Florian -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH net-next 1/2] net: hns: enet specisies a reference to dsaf
enet is associating with dasf. before this patch, the association is the same strings between ae-name and dsa-name. in a general way, enet specifies a reference to dsaf should be a good idea. so this patch deletes the ae-name in enet, and adds parsing the ae-handle from DT to set the associating with dsaf. Signed-off-by: yankejian--- drivers/net/ethernet/hisilicon/hns/hnae.c | 17 +++-- drivers/net/ethernet/hisilicon/hns/hnae.h | 7 +-- drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c | 4 drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c | 10 +- drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h | 1 + drivers/net/ethernet/hisilicon/hns/hns_enet.c | 13 + drivers/net/ethernet/hisilicon/hns/hns_enet.h | 2 +- 7 files changed, 28 insertions(+), 26 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.c b/drivers/net/ethernet/hisilicon/hns/hnae.c index b364529..3bfe36f 100644 --- a/drivers/net/ethernet/hisilicon/hns/hnae.c +++ b/drivers/net/ethernet/hisilicon/hns/hnae.c @@ -95,21 +95,17 @@ static struct hnae_buf_ops hnae_bops = { static int __ae_match(struct device *dev, const void *data) { struct hnae_ae_dev *hdev = cls_to_ae_dev(dev); - const char *ae_id = data; - if (!strncmp(ae_id, hdev->name, AE_NAME_SIZE)) - return 1; - - return 0; + return hdev->dev->of_node == data; } -static struct hnae_ae_dev *find_ae(const char *ae_id) +static struct hnae_ae_dev *find_ae(const struct device_node *ae_node) { struct device *dev; - WARN_ON(!ae_id); + WARN_ON(!ae_node); - dev = class_find_device(hnae_class, NULL, ae_id, __ae_match); + dev = class_find_device(hnae_class, NULL, ae_node, __ae_match); return dev ? cls_to_ae_dev(dev) : NULL; } @@ -316,7 +312,8 @@ EXPORT_SYMBOL(hnae_reinit_handle); * return handle ptr or ERR_PTR */ struct hnae_handle *hnae_get_handle(struct device *owner_dev, - const char *ae_id, u32 port_id, + const struct device_node *ae_node, + u32 port_id, struct hnae_buf_ops *bops) { struct hnae_ae_dev *dev; @@ -324,7 +321,7 @@ struct hnae_handle *hnae_get_handle(struct device *owner_dev, int i, j; int ret; - dev = find_ae(ae_id); + dev = find_ae(ae_node); if (!dev) return ERR_PTR(-ENODEV); diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.h b/drivers/net/ethernet/hisilicon/hns/hnae.h index d1f3316..0012664 100644 --- a/drivers/net/ethernet/hisilicon/hns/hnae.h +++ b/drivers/net/ethernet/hisilicon/hns/hnae.h @@ -523,8 +523,11 @@ struct hnae_handle { #define ring_to_dev(ring) ((ring)->q->dev->dev) -struct hnae_handle *hnae_get_handle(struct device *owner_dev, const char *ae_id, - u32 port_id, struct hnae_buf_ops *bops); +struct hnae_handle *hnae_get_handle(struct device *owner_dev, + const struct device_node *ae_node, + u32 port_id, + struct hnae_buf_ops *bops); + void hnae_put_handle(struct hnae_handle *handle); int hnae_ae_register(struct hnae_ae_dev *dev, struct module *owner); void hnae_ae_unregister(struct hnae_ae_dev *dev); diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c index 77c6edb..ed9a72c 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c @@ -848,6 +848,7 @@ static struct hnae_ae_ops hns_dsaf_ops = { int hns_dsaf_ae_init(struct dsaf_device *dsaf_dev) { struct hnae_ae_dev *ae_dev = _dev->ae_dev; + static atomic_t id = ATOMIC_INIT(-1); switch (dsaf_dev->dsaf_ver) { case AE_VERSION_1: @@ -859,6 +860,9 @@ int hns_dsaf_ae_init(struct dsaf_device *dsaf_dev) default: break; } + + snprintf(ae_dev->name, AE_NAME_SIZE, "%s%d", DSAF_DEVICE_NAME, +(int)atomic_inc_return()); ae_dev->ops = _dsaf_ops; ae_dev->dev = dsaf_dev->dev; diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c index 636b205..f3de749 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c @@ -35,7 +35,7 @@ int hns_dsaf_get_cfg(struct dsaf_device *dsaf_dev) int ret, i; u32 desc_num; u32 buf_size; - const char *name, *mode_str; + const char *mode_str; struct device_node *np = dsaf_dev->dev->of_node; if (of_device_is_compatible(np, "hisilicon,hns-dsaf-v1")) @@ -43,14 +43,6 @@ int hns_dsaf_get_cfg(struct dsaf_device *dsaf_dev) else
[PATCH net-next 1/2] net: hns: enet specisies a reference to dsaf
enet is associating with dasf. before this patch, the association is the same strings between ae-name and dsa-name. in a general way, enet specifies a reference to dsaf should be a good idea. so this patch deletes the ae-name in enet, and adds parsing the ae-handle from DT to set the associating with dsaf. Signed-off-by: yankejian--- drivers/net/ethernet/hisilicon/hns/hnae.c | 17 +++-- drivers/net/ethernet/hisilicon/hns/hnae.h | 7 +-- drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c | 4 drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c | 10 +- drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h | 1 + drivers/net/ethernet/hisilicon/hns/hns_enet.c | 13 + drivers/net/ethernet/hisilicon/hns/hns_enet.h | 2 +- 7 files changed, 28 insertions(+), 26 deletions(-) diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.c b/drivers/net/ethernet/hisilicon/hns/hnae.c index b364529..3bfe36f 100644 --- a/drivers/net/ethernet/hisilicon/hns/hnae.c +++ b/drivers/net/ethernet/hisilicon/hns/hnae.c @@ -95,21 +95,17 @@ static struct hnae_buf_ops hnae_bops = { static int __ae_match(struct device *dev, const void *data) { struct hnae_ae_dev *hdev = cls_to_ae_dev(dev); - const char *ae_id = data; - if (!strncmp(ae_id, hdev->name, AE_NAME_SIZE)) - return 1; - - return 0; + return hdev->dev->of_node == data; } -static struct hnae_ae_dev *find_ae(const char *ae_id) +static struct hnae_ae_dev *find_ae(const struct device_node *ae_node) { struct device *dev; - WARN_ON(!ae_id); + WARN_ON(!ae_node); - dev = class_find_device(hnae_class, NULL, ae_id, __ae_match); + dev = class_find_device(hnae_class, NULL, ae_node, __ae_match); return dev ? cls_to_ae_dev(dev) : NULL; } @@ -316,7 +312,8 @@ EXPORT_SYMBOL(hnae_reinit_handle); * return handle ptr or ERR_PTR */ struct hnae_handle *hnae_get_handle(struct device *owner_dev, - const char *ae_id, u32 port_id, + const struct device_node *ae_node, + u32 port_id, struct hnae_buf_ops *bops) { struct hnae_ae_dev *dev; @@ -324,7 +321,7 @@ struct hnae_handle *hnae_get_handle(struct device *owner_dev, int i, j; int ret; - dev = find_ae(ae_id); + dev = find_ae(ae_node); if (!dev) return ERR_PTR(-ENODEV); diff --git a/drivers/net/ethernet/hisilicon/hns/hnae.h b/drivers/net/ethernet/hisilicon/hns/hnae.h index d1f3316..0012664 100644 --- a/drivers/net/ethernet/hisilicon/hns/hnae.h +++ b/drivers/net/ethernet/hisilicon/hns/hnae.h @@ -523,8 +523,11 @@ struct hnae_handle { #define ring_to_dev(ring) ((ring)->q->dev->dev) -struct hnae_handle *hnae_get_handle(struct device *owner_dev, const char *ae_id, - u32 port_id, struct hnae_buf_ops *bops); +struct hnae_handle *hnae_get_handle(struct device *owner_dev, + const struct device_node *ae_node, + u32 port_id, + struct hnae_buf_ops *bops); + void hnae_put_handle(struct hnae_handle *handle); int hnae_ae_register(struct hnae_ae_dev *dev, struct module *owner); void hnae_ae_unregister(struct hnae_ae_dev *dev); diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c index 77c6edb..ed9a72c 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c @@ -848,6 +848,7 @@ static struct hnae_ae_ops hns_dsaf_ops = { int hns_dsaf_ae_init(struct dsaf_device *dsaf_dev) { struct hnae_ae_dev *ae_dev = _dev->ae_dev; + static atomic_t id = ATOMIC_INIT(-1); switch (dsaf_dev->dsaf_ver) { case AE_VERSION_1: @@ -859,6 +860,9 @@ int hns_dsaf_ae_init(struct dsaf_device *dsaf_dev) default: break; } + + snprintf(ae_dev->name, AE_NAME_SIZE, "%s%d", DSAF_DEVICE_NAME, +(int)atomic_inc_return()); ae_dev->ops = _dsaf_ops; ae_dev->dev = dsaf_dev->dev; diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c index 636b205..f3de749 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c @@ -35,7 +35,7 @@ int hns_dsaf_get_cfg(struct dsaf_device *dsaf_dev) int ret, i; u32 desc_num; u32 buf_size; - const char *name, *mode_str; + const char *mode_str; struct device_node *np = dsaf_dev->dev->of_node; if (of_device_is_compatible(np, "hisilicon,hns-dsaf-v1")) @@ -43,14 +43,6 @@ int hns_dsaf_get_cfg(struct dsaf_device *dsaf_dev) else