Message ID | 1480919912-1079-9-git-send-email-selvin.xavier@broadcom.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On 12/5/2016 1:38 AM, Selvin Xavier wrote: > diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig > index fb3fb89..a4fab22 100644 > --- a/drivers/infiniband/Kconfig > +++ b/drivers/infiniband/Kconfig > @@ -91,4 +91,6 @@ source "drivers/infiniband/hw/hfi1/Kconfig" > > source "drivers/infiniband/hw/qedr/Kconfig" > > +source "drivers/infiniband/hw/bnxtre/Kconfig" > + > endif # INFINIBAND > diff --git a/drivers/infiniband/hw/Makefile b/drivers/infiniband/hw/Makefile > index e7a5ed9..7227b36 100644 > --- a/drivers/infiniband/hw/Makefile > +++ b/drivers/infiniband/hw/Makefile > @@ -11,3 +11,4 @@ obj-$(CONFIG_INFINIBAND_USNIC) += usnic/ > obj-$(CONFIG_INFINIBAND_HFI1) += hfi1/ > obj-$(CONFIG_INFINIBAND_HNS) += hns/ > obj-$(CONFIG_INFINIBAND_QEDR) += qedr/ > +obj-$(CONFIG_INFINIBAND_BNXTRE) += bnxtre/ > diff --git a/drivers/infiniband/hw/bnxtre/Kconfig b/drivers/infiniband/hw/bnxtre/Kconfig > new file mode 100644 > index 0000000..2637544 > --- /dev/null > +++ b/drivers/infiniband/hw/bnxtre/Kconfig > @@ -0,0 +1,9 @@ > +config INFINIBAND_BNXTRE > + tristate "Broadcom Netxtreme HCA support" > + depends on ETHERNET && NETDEVICES && PCI && INET > + select NET_VENDOR_BROADCOM > + select BNXT > + ---help--- > + This driver supports Broadcom NetXtreme-C/E 10/25/40/50 gigabit > + RoCE HCAs. To compile this driver as a module, choose M here: > + the module will be called bnxt_re. > diff --git a/drivers/infiniband/hw/bnxtre/Makefile b/drivers/infiniband/hw/bnxtre/Makefile > new file mode 100644 > index 0000000..0521489 > --- /dev/null > +++ b/drivers/infiniband/hw/bnxtre/Makefile > @@ -0,0 +1,5 @@ > + > +obj-$(CONFIG_INFINIBAND_BNXTRE) += bnxt_re.o > +bnxt_re-y := bnxt_re_main.o bnxt_re_ib_verbs.o \ > + bnxt_qplib_res.o bnxt_qplib_rcfw.o \ > + bnxt_qplib_sp.o bnxt_qplib_fp.o A lot of times I prefer these files to be the final patch in the series. It's completely not possible to break bisectability if these are last. Then again, if I squash this down to one commit it doesn't really matter.... > diff --git a/drivers/infiniband/hw/bnxtre/bnxt_qplib_fp.c b/drivers/infiniband/hw/bnxtre/bnxt_qplib_fp.c > new file mode 100644 > index 0000000..34873f4 > --- /dev/null > +++ b/drivers/infiniband/hw/bnxtre/bnxt_qplib_fp.c > @@ -0,0 +1,12 @@ > +/* Broadcom NetXtreme-C/E RoCE driver. > + * > + * Copyright (c) 2016 Broadcom Corporation > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation. > + */ This copyright, repeated many times in the various skeleton files... > diff --git a/drivers/infiniband/hw/bnxtre/bnxt_re_main.c b/drivers/infiniband/hw/bnxtre/bnxt_re_main.c > new file mode 100644 > index 0000000..4c377dc > --- /dev/null > +++ b/drivers/infiniband/hw/bnxtre/bnxt_re_main.c > @@ -0,0 +1,96 @@ > +/* Broadcom NetXtreme-C/E RoCE driver. > + * > + * Copyright (c) 2016 Broadcom Corporation > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation. > + */ > + > +/* > + * Description: Main component of the bnxt_re driver > + */ > + > +#include <linux/module.h> > +#include <linux/netdevice.h> > +#include <linux/mutex.h> > +#include <linux/list.h> > +#include <linux/rculist.h> > +#include "bnxt_re.h" > +static char version[] = > + BNXT_RE_DESC " v" ROCE_DRV_MODULE_VERSION "\n"; > + > + > +MODULE_AUTHOR("Eddie Wai <eddie.wai@broadcom.com>"); > +MODULE_DESCRIPTION(BNXT_RE_DESC " Driver"); > +MODULE_LICENSE("Dual BSD/GPL"); and this module license description do not agree. Please make everything consistent. I don't care if it's GPLv2 or Dual licensed, it simply needs to be consistent.
Hi Doug, Please find my response inline. On Mon, Dec 5, 2016 at 8:46 PM, Doug Ledford <dledford@redhat.com> wrote: > On 12/5/2016 1:38 AM, Selvin Xavier wrote: > ... >> +++ b/drivers/infiniband/hw/bnxtre/Makefile >> @@ -0,0 +1,5 @@ >> + >> +obj-$(CONFIG_INFINIBAND_BNXTRE) += bnxt_re.o >> +bnxt_re-y := bnxt_re_main.o bnxt_re_ib_verbs.o \ >> + bnxt_qplib_res.o bnxt_qplib_rcfw.o \ >> + bnxt_qplib_sp.o bnxt_qplib_fp.o > > A lot of times I prefer these files to be the final patch in the series. > It's completely not possible to break bisectability if these are last. > Then again, if I squash this down to one commit it doesn't really matter.... > [Selvin Xavier] While splitting the patch series, we made sure that the compilation works after applying each patch. But i am ok to push these changes to last patch. This can be included in v2 patch set. .... > > This copyright, repeated many times in the various skeleton files... > >> diff --git a/drivers/infiniband/hw/bnxtre/bnxt_re_main.c b/drivers/infiniband/hw/bnxtre/bnxt_re_main.c >> new file mode 100644 >> index 0000000..4c377dc >> --- /dev/null >> +++ b/drivers/infiniband/hw/bnxtre/bnxt_re_main.c >> @@ -0,0 +1,96 @@ >> +/* Broadcom NetXtreme-C/E RoCE driver. >> + * >> + * Copyright (c) 2016 Broadcom Corporation >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License as published by >> + * the Free Software Foundation. >> + */ >> + >> +/* >> + * Description: Main component of the bnxt_re driver >> + */ >> + >> +#include <linux/module.h> >> +#include <linux/netdevice.h> >> +#include <linux/mutex.h> >> +#include <linux/list.h> >> +#include <linux/rculist.h> >> +#include "bnxt_re.h" >> +static char version[] = >> + BNXT_RE_DESC " v" ROCE_DRV_MODULE_VERSION "\n"; >> + >> + >> +MODULE_AUTHOR("Eddie Wai <eddie.wai@broadcom.com>"); >> +MODULE_DESCRIPTION(BNXT_RE_DESC " Driver"); >> +MODULE_LICENSE("Dual BSD/GPL"); > > and this module license description do not agree. Please make > everything consistent. I don't care if it's GPLv2 or Dual licensed, it > simply needs to be consistent. > [Selvin Xavier] i will post v2 with this change. We need Dual license. Will edit the license text accordingly. > > > > -- > Doug Ledford <dledford@redhat.com> > GPG Key ID: 0E572FDD > Thanks, Selvin -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig index fb3fb89..a4fab22 100644 --- a/drivers/infiniband/Kconfig +++ b/drivers/infiniband/Kconfig @@ -91,4 +91,6 @@ source "drivers/infiniband/hw/hfi1/Kconfig" source "drivers/infiniband/hw/qedr/Kconfig" +source "drivers/infiniband/hw/bnxtre/Kconfig" + endif # INFINIBAND diff --git a/drivers/infiniband/hw/Makefile b/drivers/infiniband/hw/Makefile index e7a5ed9..7227b36 100644 --- a/drivers/infiniband/hw/Makefile +++ b/drivers/infiniband/hw/Makefile @@ -11,3 +11,4 @@ obj-$(CONFIG_INFINIBAND_USNIC) += usnic/ obj-$(CONFIG_INFINIBAND_HFI1) += hfi1/ obj-$(CONFIG_INFINIBAND_HNS) += hns/ obj-$(CONFIG_INFINIBAND_QEDR) += qedr/ +obj-$(CONFIG_INFINIBAND_BNXTRE) += bnxtre/ diff --git a/drivers/infiniband/hw/bnxtre/Kconfig b/drivers/infiniband/hw/bnxtre/Kconfig new file mode 100644 index 0000000..2637544 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/Kconfig @@ -0,0 +1,9 @@ +config INFINIBAND_BNXTRE + tristate "Broadcom Netxtreme HCA support" + depends on ETHERNET && NETDEVICES && PCI && INET + select NET_VENDOR_BROADCOM + select BNXT + ---help--- + This driver supports Broadcom NetXtreme-C/E 10/25/40/50 gigabit + RoCE HCAs. To compile this driver as a module, choose M here: + the module will be called bnxt_re. diff --git a/drivers/infiniband/hw/bnxtre/Makefile b/drivers/infiniband/hw/bnxtre/Makefile new file mode 100644 index 0000000..0521489 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/Makefile @@ -0,0 +1,5 @@ + +obj-$(CONFIG_INFINIBAND_BNXTRE) += bnxt_re.o +bnxt_re-y := bnxt_re_main.o bnxt_re_ib_verbs.o \ + bnxt_qplib_res.o bnxt_qplib_rcfw.o \ + bnxt_qplib_sp.o bnxt_qplib_fp.o diff --git a/drivers/infiniband/hw/bnxtre/bnxt_qplib_fp.c b/drivers/infiniband/hw/bnxtre/bnxt_qplib_fp.c new file mode 100644 index 0000000..34873f4 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_qplib_fp.c @@ -0,0 +1,12 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: Fast Path Operators + */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_qplib_fp.h b/drivers/infiniband/hw/bnxtre/bnxt_qplib_fp.h new file mode 100644 index 0000000..7278999 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_qplib_fp.h @@ -0,0 +1,17 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: Fast Path Operators (header) + */ + +#ifndef __BNXT_QPLIB_FP_H__ +#define __BNXT_QPLIB_FP_H__ + +#endif /* __BNXT_QPLIB_FP_H__ */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_qplib_rcfw.c b/drivers/infiniband/hw/bnxtre/bnxt_qplib_rcfw.c new file mode 100644 index 0000000..3bfb526 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_qplib_rcfw.c @@ -0,0 +1,12 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: RDMA Controller HW interface + */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_qplib_rcfw.h b/drivers/infiniband/hw/bnxtre/bnxt_qplib_rcfw.h new file mode 100644 index 0000000..bdf78e1 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_qplib_rcfw.h @@ -0,0 +1,17 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: RDMA Controller HW interface (header) + */ + +#ifndef __BNXT_QPLIB_RCFW_H__ +#define __BNXT_QPLIB_RCFW_H__ + +#endif /* __BNXT_QPLIB_RCFW_H__ */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_qplib_res.c b/drivers/infiniband/hw/bnxtre/bnxt_qplib_res.c new file mode 100644 index 0000000..c8fb9b3 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_qplib_res.c @@ -0,0 +1,12 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: QPLib resource manager + */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_qplib_res.h b/drivers/infiniband/hw/bnxtre/bnxt_qplib_res.h new file mode 100644 index 0000000..39b186b --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_qplib_res.h @@ -0,0 +1,17 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: QPLib resource manager (header) + */ + +#ifndef __BNXT_QPLIB_RES_H__ +#define __BNXT_QPLIB_RES_H_ + +#endif /* __BNXT_QPLIB_RES_H__ */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_qplib_sp.c b/drivers/infiniband/hw/bnxtre/bnxt_qplib_sp.c new file mode 100644 index 0000000..4ef5e26 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_qplib_sp.c @@ -0,0 +1,12 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: Slow Path Operators + */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_qplib_sp.h b/drivers/infiniband/hw/bnxtre/bnxt_qplib_sp.h new file mode 100644 index 0000000..501ef6c --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_qplib_sp.h @@ -0,0 +1,17 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: Slow Path Operators (header) + */ + +#ifndef __BNXT_QPLIB_SP_H__ +#define __BNXT_QPLIB_SP_H__ + +#endif /* __BNXT_QPLIB_SP_H__*/ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_re.h b/drivers/infiniband/hw/bnxtre/bnxt_re.h new file mode 100644 index 0000000..649c58e --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_re.h @@ -0,0 +1,17 @@ +/* Broadcom NetXtreme-C/E network driver. + * + * Copyright (c) 2014-2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + */ + +#ifndef __BNXT_RE_H__ +#define __BNXT_RE_H__ +#define ROCE_DRV_MODULE_NAME "bnxt_re" +#define ROCE_DRV_MODULE_VERSION "1.0.0" + +#define BNXT_RE_DESC "Broadcom NetXtreme-C/E RoCE Driver" +#endif diff --git a/drivers/infiniband/hw/bnxtre/bnxt_re_hsi.h b/drivers/infiniband/hw/bnxtre/bnxt_re_hsi.h new file mode 100644 index 0000000..2aa5b38 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_re_hsi.h @@ -0,0 +1,18 @@ +/* Broadcom NetXtreme-C/E network driver. + * + * Copyright (c) 2014-2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + * + */ + +/* + * Description: RoCE HSI File - Autogenerated + */ + +#ifndef __BNXT_RE_HSI_H__ +#define __BNXT_RE_HSI_H__ + +#endif /* __BNXT_RE_HSI_H__ */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_re_ib_verbs.c b/drivers/infiniband/hw/bnxtre/bnxt_re_ib_verbs.c new file mode 100644 index 0000000..e69fb3f --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_re_ib_verbs.c @@ -0,0 +1,12 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: IB Verbs interpreter + */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_re_ib_verbs.h b/drivers/infiniband/hw/bnxtre/bnxt_re_ib_verbs.h new file mode 100644 index 0000000..0651c30 --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_re_ib_verbs.h @@ -0,0 +1,17 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: IB Verbs interpreter (header) + */ + +#ifndef __BNXT_RE_IB_VERBS_H__ +#define __BNXT_RE_IB_VERBS_H__ + +#endif /* __BNXT_RE_IB_VERBS_H__ */ diff --git a/drivers/infiniband/hw/bnxtre/bnxt_re_main.c b/drivers/infiniband/hw/bnxtre/bnxt_re_main.c new file mode 100644 index 0000000..4c377dc --- /dev/null +++ b/drivers/infiniband/hw/bnxtre/bnxt_re_main.c @@ -0,0 +1,96 @@ +/* Broadcom NetXtreme-C/E RoCE driver. + * + * Copyright (c) 2016 Broadcom Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation. + */ + +/* + * Description: Main component of the bnxt_re driver + */ + +#include <linux/module.h> +#include <linux/netdevice.h> +#include <linux/mutex.h> +#include <linux/list.h> +#include <linux/rculist.h> +#include "bnxt_re.h" +static char version[] = + BNXT_RE_DESC " v" ROCE_DRV_MODULE_VERSION "\n"; + + +MODULE_AUTHOR("Eddie Wai <eddie.wai@broadcom.com>"); +MODULE_DESCRIPTION(BNXT_RE_DESC " Driver"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_VERSION(ROCE_DRV_MODULE_VERSION); + +/* globals */ +struct list_head bnxt_re_dev_list = LIST_HEAD_INIT(bnxt_re_dev_list); +DEFINE_MUTEX(bnxt_re_dev_lock); +static struct workqueue_struct *bnxt_re_wq; +/* + * "Notifier chain callback can be invoked for the same chain from + * different CPUs at the same time". + * + * For cases when the netdev is already present, our call to the + * register_netdevice_notifier() will actually get the rtnl_lock() + * before sending NETDEV_REGISTER and (if up) NETDEV_UP + * events. + * + * But for cases when the netdev is not already present, the notifier + * chain is subjected to be invoked from different CPUs simultaneously. + * + * This is protected by the netdev_mutex. + */ +static int bnxt_re_netdev_event(struct notifier_block *notifier, + unsigned long event, void *ptr) +{ + return NOTIFY_DONE; +} +static struct notifier_block bnxt_re_netdev_notifier = { + .notifier_call = bnxt_re_netdev_event +}; +static int __init bnxt_re_mod_init(void) +{ + int rc = 0; + + pr_info("%s: %s", ROCE_DRV_MODULE_NAME, version); + + bnxt_re_wq = create_singlethread_workqueue("bnxt_re"); + if (!bnxt_re_wq) + return -ENOMEM; + + INIT_LIST_HEAD(&bnxt_re_dev_list); + + rc = register_netdevice_notifier(&bnxt_re_netdev_notifier); + if (rc) { + pr_err("%s: Cannot register to netdevice_notifier", + ROCE_DRV_MODULE_NAME); + goto err_netdev; + } + return 0; + +err_netdev: + destroy_workqueue(bnxt_re_wq); + + return rc; +} +static void __exit bnxt_re_mod_exit(void) +{ + LIST_HEAD(to_be_deleted); + + /* Free all adapter allocated resources */ + mutex_lock(&bnxt_re_dev_lock); + if (!list_empty(&bnxt_re_dev_list)) + list_splice_init_rcu(&bnxt_re_dev_list, &to_be_deleted, + synchronize_rcu); + mutex_unlock(&bnxt_re_dev_lock); + unregister_netdevice_notifier(&bnxt_re_netdev_notifier); + if (bnxt_re_wq) + destroy_workqueue(bnxt_re_wq); +} + +module_init(bnxt_re_mod_init); +module_exit(bnxt_re_mod_exit);