Subject: RE: [net-next 1/6] libcxgb: add library module for Chelsio drivers

From: "Steve Wise" <[email-masked]>
Date: Fri, 15 Jul 2016 09:02:46 -0500

> Add common library module(libcxgb.ko) for
> Chelsio drivers to remove duplicate code.
> 
> Code for iSCSI DDP Page Pod Manager is moved
> from cxgb4.ko to libcxgb.ko. Earlier only cxgbit.ko
> was using this code, now cxgb3i and cxgb4i will
> also use common Page Pod manager code.
> 
> In future this module will have common connection
> management and hardware specific code that can be
> shared by multiple Chelsio drivers.
> 
> Signed-off-by: Varun Prakash <[email-masked]>
> ---
>  drivers/net/ethernet/chelsio/Kconfig               | 18 ++++++----------
>  drivers/net/ethernet/chelsio/Makefile              |  1 +
>  drivers/net/ethernet/chelsio/cxgb4/Makefile        |  1 -
>  drivers/net/ethernet/chelsio/libcxgb/Makefile      |  3 +++
>  .../{cxgb4/cxgb4_ppm.c => libcxgb/libcxgb_ppm.c}   | 25
++++++++++++++++++++--
>  .../{cxgb4/cxgb4_ppm.h => libcxgb/libcxgb_ppm.h}   |  8 +++----
>  drivers/target/iscsi/cxgbit/Kconfig                |  2 +-
>  drivers/target/iscsi/cxgbit/Makefile               |  1 +
>  drivers/target/iscsi/cxgbit/cxgbit.h               |  2 +-
>  9 files changed, 41 insertions(+), 20 deletions(-)
>  create mode 100644 drivers/net/ethernet/chelsio/libcxgb/Makefile
>  rename drivers/net/ethernet/chelsio/{cxgb4/cxgb4_ppm.c =>
> libcxgb/libcxgb_ppm.c} (95%)
>  rename drivers/net/ethernet/chelsio/{cxgb4/cxgb4_ppm.h =>
> libcxgb/libcxgb_ppm.h} (98%)
> 
> diff --git a/drivers/net/ethernet/chelsio/Kconfig
> b/drivers/net/ethernet/chelsio/Kconfig
> index 4686a85..1a5ce1e 100644
> --- a/drivers/net/ethernet/chelsio/Kconfig
> +++ b/drivers/net/ethernet/chelsio/Kconfig
> @@ -96,17 +96,6 @@ config CHELSIO_T4_DCB
> 
>  	  If unsure, say N.
> 
> -config CHELSIO_T4_UWIRE
> -	bool "Unified Wire Support for Chelsio T5 cards"
> -	default n
> -	depends on CHELSIO_T4
> -	---help---
> -	  Enable unified-wire offload features.
> -	  Say Y here if you want to enable unified-wire over Ethernet
> -	  in the driver.
> -
> -	  If unsure, say N.
> -
>  config CHELSIO_T4_FCOE
>  	bool "Fibre Channel over Ethernet (FCoE) Support for Chelsio T5 cards"
>  	default n
> @@ -137,4 +126,11 @@ config CHELSIO_T4VF
>  	  To compile this driver as a module choose M here; the module
>  	  will be called cxgb4vf.
> 
> +config CHELSIO_LIB
> +	tristate "Chelsio common library"
> +	default n
> +	---help---
> +	  This is common library module for Chelsio T3/T4/T5/T6
> +	  drivers.
> +
>  endif # NET_VENDOR_CHELSIO
> diff --git a/drivers/net/ethernet/chelsio/Makefile
> b/drivers/net/ethernet/chelsio/Makefile
> index 390510b..b6a5eec 100644
> --- a/drivers/net/ethernet/chelsio/Makefile
> +++ b/drivers/net/ethernet/chelsio/Makefile
> @@ -6,3 +6,4 @@ obj-$(CONFIG_CHELSIO_T1) += cxgb/
>  obj-$(CONFIG_CHELSIO_T3) += cxgb3/
>  obj-$(CONFIG_CHELSIO_T4) += cxgb4/
>  obj-$(CONFIG_CHELSIO_T4VF) += cxgb4vf/
> +obj-$(CONFIG_CHELSIO_LIB) += libcxgb/
> diff --git a/drivers/net/ethernet/chelsio/cxgb4/Makefile
> b/drivers/net/ethernet/chelsio/cxgb4/Makefile
> index 85c9282..ace0ab9 100644
> --- a/drivers/net/ethernet/chelsio/cxgb4/Makefile
> +++ b/drivers/net/ethernet/chelsio/cxgb4/Makefile
> @@ -7,5 +7,4 @@ obj-$(CONFIG_CHELSIO_T4) += cxgb4.o
>  cxgb4-objs := cxgb4_main.o l2t.o t4_hw.o sge.o clip_tbl.o cxgb4_ethtool.o
>  cxgb4-$(CONFIG_CHELSIO_T4_DCB) +=  cxgb4_dcb.o
>  cxgb4-$(CONFIG_CHELSIO_T4_FCOE) +=  cxgb4_fcoe.o
> -cxgb4-$(CONFIG_CHELSIO_T4_UWIRE) +=  cxgb4_ppm.o
>  cxgb4-$(CONFIG_DEBUG_FS) += cxgb4_debugfs.o
> diff --git a/drivers/net/ethernet/chelsio/libcxgb/Makefile
> b/drivers/net/ethernet/chelsio/libcxgb/Makefile
> new file mode 100644
> index 0000000..2362230
> --- /dev/null
> +++ b/drivers/net/ethernet/chelsio/libcxgb/Makefile
> @@ -0,0 +1,3 @@
> +obj-$(CONFIG_CHELSIO_LIB) += libcxgb.o
> +
> +libcxgb-y := libcxgb_ppm.o
> diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ppm.c
> b/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c
> similarity index 95%
> rename from drivers/net/ethernet/chelsio/cxgb4/cxgb4_ppm.c
> rename to drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c
> index d88a7a7..aa9a9bb 100644
> --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ppm.c
> +++ b/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c
> @@ -1,5 +1,5 @@
>  /*
> - * cxgb4_ppm.c: Chelsio common library for T4/T5 iSCSI PagePod Manager
> + * libcxgb_ppm.c: Chelsio common library for T3/T4/T5 iSCSI PagePod Manager
>   *
>   * Copyright (c) 2016 Chelsio Communications, Inc. All rights reserved.
>   *
> @@ -10,6 +10,10 @@
>   * Written by: Karen Xie ([email-masked])
>   */
> 
> +#define DRV_NAME "libcxgb"
> +#define DRV_VERSION "1.0.0-ko"
> +#define pr_fmt(fmt) DRV_NAME ": " fmt
> +
>  #include <linux/kernel.h>
>  #include <linux/version.h>
>  #include <linux/module.h>
> @@ -22,7 +26,7 @@
>  #include <linux/pci.h>
>  #include <linux/scatterlist.h>
> 
> -#include "cxgb4_ppm.h"
> +#include "libcxgb_ppm.h"
> 
>  /* Direct Data Placement -
>   * Directly place the iSCSI Data-In or Data-Out PDU's payload into
> @@ -462,3 +466,20 @@ unsigned int cxgbi_tagmask_set(unsigned int ppmax)
> 
>  	return 1 << (bits + PPOD_IDX_SHIFT);
>  }
> +
> +static int __init libcxgb_init(void)
> +{
> +	return 0;
> +}
> +
> +static void __exit libcxgb_exit(void)
> +{
> +}
> +
> +module_init(libcxgb_init);
> +module_exit(libcxgb_exit);
> +
> +MODULE_AUTHOR("Chelsio Communications");
> +MODULE_DESCRIPTION("Chelsio common library");
> +MODULE_VERSION(DRV_VERSION);
> +MODULE_LICENSE("GPL");

This should be "Dual BSD/GPL" I think.

Other than this and the kconfig issue Dave raised, this patch looks good.

Reviewed-by: Steve Wise <[email-masked]>