diff mbox series

[net-next,1/2] Revert "devlink: Add a generic wake_on_lan port parameter"

Message ID 1549617190-387130-2-git-send-email-vasundhara-v.volam@broadcom.com
State Changes Requested
Delegated to: David Miller
Headers show
Series Revert wake_on_lan devlink parameter | expand

Commit Message

Vasundhara Volam Feb. 8, 2019, 9:13 a.m. UTC
This reverts commit b639583f9e36d044ac1b13090ae812266992cbac.

As per discussion with Jakub Kicinski and Michal Kubecek,
this will be better addressed by soon-too-come ethtool netlink
API with additional indication that given configuration request
is supposed to be persisted.

Cc: Jiri Pirko <jiri@mellanox.com>
Cc: Michal Kubecek <mkubecek@suse.cz>
Suggested-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
---
 include/net/devlink.h | 8 --------
 net/core/devlink.c    | 5 -----
 2 files changed, 13 deletions(-)

Comments

kernel test robot Feb. 8, 2019, 11 a.m. UTC | #1
Hi Vasundhara,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Vasundhara-Volam/Revert-wake_on_lan-devlink-parameter/20190208-181949
config: i386-randconfig-x000-201905 (attached as .config)
compiler: gcc-8 (Debian 8.2.0-14) 8.2.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

Note: the linux-review/Vasundhara-Volam/Revert-wake_on_lan-devlink-parameter/20190208-181949 HEAD caa636fa491621c75cb625cb981adfe514368a45 builds fine.
      It only hurts bisectibility.

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

>> drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:41:3: error: 'DEVLINK_PARAM_GENERIC_ID_WOL' undeclared here (not in a function); did you mean 'DEVLINK_PARAM_GENERIC_ID_MAX'?
     {DEVLINK_PARAM_GENERIC_ID_WOL, NVM_OFF_WOL, BNXT_NVM_PORT_CFG, 1},
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      DEVLINK_PARAM_GENERIC_ID_MAX
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c: In function 'bnxt_hwrm_nvm_req':
>> drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:76:20: warning: comparison between pointer and integer
          nvm_param.id != DEVLINK_PARAM_GENERIC_ID_WOL)
                       ^~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c: In function 'bnxt_dl_wol_validate':
>> drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:174:28: error: 'DEVLINK_PARAM_WAKE_MAGIC' undeclared (first use in this function); did you mean 'DEVLINK_PARAM_CMODE_MAX'?
     if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) {
                               ^~~~~~~~~~~~~~~~~~~~~~~~
                               DEVLINK_PARAM_CMODE_MAX
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:174:28: note: each undeclared identifier is reported only once for each function it appears in
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:174:25: warning: comparison between pointer and integer
     if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) {
                            ^~
   In file included from drivers/net//ethernet/broadcom/bnxt/bnxt.h:23,
                    from drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:13:
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c: At top level:
>> include/net/devlink.h:404:8: warning: initialization of 'unsigned int' from 'const struct bnxt_dl_nvm_param *' makes integer from pointer without a cast [-Wint-conversion]
     .id = DEVLINK_PARAM_GENERIC_ID_##_id,    \
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:404:8: note: (near initialization for 'bnxt_dl_port_params[0].id')
     .id = DEVLINK_PARAM_GENERIC_ID_##_id,    \
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:404:8: error: initializer element is not constant
     .id = DEVLINK_PARAM_GENERIC_ID_##_id,    \
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:404:8: note: (near initialization for 'bnxt_dl_port_params[0].id')
     .id = DEVLINK_PARAM_GENERIC_ID_##_id,    \
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:405:10: error: 'DEVLINK_PARAM_GENERIC_WOL_NAME' undeclared here (not in a function); did you mean 'DEVLINK_PARAM_GENERIC_ID_MAX'?
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:405:10: error: initialization of 'const char *' from incompatible pointer type 'const struct bnxt_dl_nvm_param *' [-Werror=incompatible-pointer-types]
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:405:10: note: (near initialization for 'bnxt_dl_port_params[0].name')
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:405:10: error: initializer element is not constant
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:405:10: note: (near initialization for 'bnxt_dl_port_params[0].name')
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:406:10: error: 'DEVLINK_PARAM_GENERIC_WOL_TYPE' undeclared here (not in a function); did you mean 'DEVLINK_PARAM_GENERIC_ID_MAX'?
     .type = DEVLINK_PARAM_GENERIC_##_id##_TYPE,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:406:10: error: incompatible types when initializing type 'enum devlink_param_type' using type 'const struct bnxt_dl_nvm_param *'
     .type = DEVLINK_PARAM_GENERIC_##_id##_TYPE,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
--
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:41:3: error: 'DEVLINK_PARAM_GENERIC_ID_WOL' undeclared here (not in a function); did you mean 'DEVLINK_PARAM_GENERIC_ID_MAX'?
     {DEVLINK_PARAM_GENERIC_ID_WOL, NVM_OFF_WOL, BNXT_NVM_PORT_CFG, 1},
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      DEVLINK_PARAM_GENERIC_ID_MAX
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c: In function 'bnxt_hwrm_nvm_req':
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:76:20: warning: comparison between pointer and integer
          nvm_param.id != DEVLINK_PARAM_GENERIC_ID_WOL)
                       ^~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c: In function 'bnxt_dl_wol_validate':
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:174:28: error: 'DEVLINK_PARAM_WAKE_MAGIC' undeclared (first use in this function); did you mean 'DEVLINK_PARAM_CMODE_MAX'?
     if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) {
                               ^~~~~~~~~~~~~~~~~~~~~~~~
                               DEVLINK_PARAM_CMODE_MAX
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:174:28: note: each undeclared identifier is reported only once for each function it appears in
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:174:25: warning: comparison between pointer and integer
     if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) {
                            ^~
   In file included from drivers/net/ethernet/broadcom/bnxt/bnxt.h:23,
                    from drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:13:
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c: At top level:
>> include/net/devlink.h:404:8: warning: initialization of 'unsigned int' from 'const struct bnxt_dl_nvm_param *' makes integer from pointer without a cast [-Wint-conversion]
     .id = DEVLINK_PARAM_GENERIC_ID_##_id,    \
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:404:8: note: (near initialization for 'bnxt_dl_port_params[0].id')
     .id = DEVLINK_PARAM_GENERIC_ID_##_id,    \
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:404:8: error: initializer element is not constant
     .id = DEVLINK_PARAM_GENERIC_ID_##_id,    \
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:404:8: note: (near initialization for 'bnxt_dl_port_params[0].id')
     .id = DEVLINK_PARAM_GENERIC_ID_##_id,    \
           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:405:10: error: 'DEVLINK_PARAM_GENERIC_WOL_NAME' undeclared here (not in a function); did you mean 'DEVLINK_PARAM_GENERIC_ID_MAX'?
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:405:10: error: initialization of 'const char *' from incompatible pointer type 'const struct bnxt_dl_nvm_param *' [-Werror=incompatible-pointer-types]
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:405:10: note: (near initialization for 'bnxt_dl_port_params[0].name')
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:405:10: error: initializer element is not constant
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   include/net/devlink.h:405:10: note: (near initialization for 'bnxt_dl_port_params[0].name')
     .name = DEVLINK_PARAM_GENERIC_##_id##_NAME,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:406:10: error: 'DEVLINK_PARAM_GENERIC_WOL_TYPE' undeclared here (not in a function); did you mean 'DEVLINK_PARAM_GENERIC_ID_MAX'?
     .type = DEVLINK_PARAM_GENERIC_##_id##_TYPE,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
>> include/net/devlink.h:406:10: error: incompatible types when initializing type 'enum devlink_param_type' using type 'const struct bnxt_dl_nvm_param *'
     .type = DEVLINK_PARAM_GENERIC_##_id##_TYPE,   \
             ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC'
     DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT),
     ^~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +41 drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c

2dc0865e Vasundhara Volam    2018-10-04   28  
6354b95e Vasundhara Volam    2018-07-04   29  static const struct bnxt_dl_nvm_param nvm_params[] = {
6354b95e Vasundhara Volam    2018-07-04   30  	{DEVLINK_PARAM_GENERIC_ID_ENABLE_SRIOV, NVM_OFF_ENABLE_SRIOV,
6354b95e Vasundhara Volam    2018-07-04   31  	 BNXT_NVM_SHARED_CFG, 1},
7d859234 Vasundhara Volam    2018-10-04   32  	{DEVLINK_PARAM_GENERIC_ID_IGNORE_ARI, NVM_OFF_IGNORE_ARI,
7d859234 Vasundhara Volam    2018-10-04   33  	 BNXT_NVM_SHARED_CFG, 1},
f399e849 Vasundhara Volam    2018-10-04   34  	{DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MAX,
f399e849 Vasundhara Volam    2018-10-04   35  	 NVM_OFF_MSIX_VEC_PER_PF_MAX, BNXT_NVM_SHARED_CFG, 10},
f399e849 Vasundhara Volam    2018-10-04   36  	{DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN,
f399e849 Vasundhara Volam    2018-10-04   37  	 NVM_OFF_MSIX_VEC_PER_PF_MIN, BNXT_NVM_SHARED_CFG, 7},
2dc0865e Vasundhara Volam    2018-10-04   38  	{BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, NVM_OFF_DIS_GRE_VER_CHECK,
2dc0865e Vasundhara Volam    2018-10-04   39  	 BNXT_NVM_SHARED_CFG, 1},
782a624d Vasundhara Volam    2019-01-28   40  
782a624d Vasundhara Volam    2019-01-28  @41  	{DEVLINK_PARAM_GENERIC_ID_WOL, NVM_OFF_WOL, BNXT_NVM_PORT_CFG, 1},
6354b95e Vasundhara Volam    2018-07-04   42  };
6354b95e Vasundhara Volam    2018-07-04   43  
6354b95e Vasundhara Volam    2018-07-04   44  static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg,
6354b95e Vasundhara Volam    2018-07-04   45  			     int msg_len, union devlink_param_value *val)
6354b95e Vasundhara Volam    2018-07-04   46  {
6fc92c33 Michael Chan        2018-08-05   47  	struct hwrm_nvm_get_variable_input *req = msg;
6354b95e Vasundhara Volam    2018-07-04   48  	void *data_addr = NULL, *buf = NULL;
6354b95e Vasundhara Volam    2018-07-04   49  	struct bnxt_dl_nvm_param nvm_param;
6354b95e Vasundhara Volam    2018-07-04   50  	int bytesize, idx = 0, rc, i;
6354b95e Vasundhara Volam    2018-07-04   51  	dma_addr_t data_dma_addr;
6354b95e Vasundhara Volam    2018-07-04   52  
6354b95e Vasundhara Volam    2018-07-04   53  	/* Get/Set NVM CFG parameter is supported only on PFs */
6354b95e Vasundhara Volam    2018-07-04   54  	if (BNXT_VF(bp))
6354b95e Vasundhara Volam    2018-07-04   55  		return -EPERM;
6354b95e Vasundhara Volam    2018-07-04   56  
6354b95e Vasundhara Volam    2018-07-04   57  	for (i = 0; i < ARRAY_SIZE(nvm_params); i++) {
6354b95e Vasundhara Volam    2018-07-04   58  		if (nvm_params[i].id == param_id) {
6354b95e Vasundhara Volam    2018-07-04   59  			nvm_param = nvm_params[i];
6354b95e Vasundhara Volam    2018-07-04   60  			break;
6354b95e Vasundhara Volam    2018-07-04   61  		}
6354b95e Vasundhara Volam    2018-07-04   62  	}
6354b95e Vasundhara Volam    2018-07-04   63  
65fac4fe zhong jiang         2018-09-18   64  	if (i == ARRAY_SIZE(nvm_params))
65fac4fe zhong jiang         2018-09-18   65  		return -EOPNOTSUPP;
65fac4fe zhong jiang         2018-09-18   66  
6354b95e Vasundhara Volam    2018-07-04   67  	if (nvm_param.dir_type == BNXT_NVM_PORT_CFG)
6354b95e Vasundhara Volam    2018-07-04   68  		idx = bp->pf.port_id;
6354b95e Vasundhara Volam    2018-07-04   69  	else if (nvm_param.dir_type == BNXT_NVM_FUNC_CFG)
6354b95e Vasundhara Volam    2018-07-04   70  		idx = bp->pf.fw_fid - BNXT_FIRST_PF_FID;
6354b95e Vasundhara Volam    2018-07-04   71  
6354b95e Vasundhara Volam    2018-07-04   72  	bytesize = roundup(nvm_param.num_bits, BITS_PER_BYTE) / BITS_PER_BYTE;
f399e849 Vasundhara Volam    2018-10-04   73  	switch (bytesize) {
f399e849 Vasundhara Volam    2018-10-04   74  	case 1:
782a624d Vasundhara Volam    2019-01-28   75  		if (nvm_param.num_bits == 1 &&
782a624d Vasundhara Volam    2019-01-28  @76  		    nvm_param.id != DEVLINK_PARAM_GENERIC_ID_WOL)
6354b95e Vasundhara Volam    2018-07-04   77  			buf = &val->vbool;
f399e849 Vasundhara Volam    2018-10-04   78  		else
f399e849 Vasundhara Volam    2018-10-04   79  			buf = &val->vu8;
f399e849 Vasundhara Volam    2018-10-04   80  		break;
f399e849 Vasundhara Volam    2018-10-04   81  	case 2:
f399e849 Vasundhara Volam    2018-10-04   82  		buf = &val->vu16;
f399e849 Vasundhara Volam    2018-10-04   83  		break;
f399e849 Vasundhara Volam    2018-10-04   84  	case 4:
f399e849 Vasundhara Volam    2018-10-04   85  		buf = &val->vu32;
f399e849 Vasundhara Volam    2018-10-04   86  		break;
f399e849 Vasundhara Volam    2018-10-04   87  	default:
f399e849 Vasundhara Volam    2018-10-04   88  		return -EFAULT;
f399e849 Vasundhara Volam    2018-10-04   89  	}
6354b95e Vasundhara Volam    2018-07-04   90  
750afb08 Luis Chamberlain    2019-01-04   91  	data_addr = dma_alloc_coherent(&bp->pdev->dev, bytesize,
6354b95e Vasundhara Volam    2018-07-04   92  				       &data_dma_addr, GFP_KERNEL);
6354b95e Vasundhara Volam    2018-07-04   93  	if (!data_addr)
6354b95e Vasundhara Volam    2018-07-04   94  		return -ENOMEM;
6354b95e Vasundhara Volam    2018-07-04   95  
6fc92c33 Michael Chan        2018-08-05   96  	req->dest_data_addr = cpu_to_le64(data_dma_addr);
6354b95e Vasundhara Volam    2018-07-04   97  	req->data_len = cpu_to_le16(nvm_param.num_bits);
6354b95e Vasundhara Volam    2018-07-04   98  	req->option_num = cpu_to_le16(nvm_param.offset);
6354b95e Vasundhara Volam    2018-07-04   99  	req->index_0 = cpu_to_le16(idx);
6354b95e Vasundhara Volam    2018-07-04  100  	if (idx)
6354b95e Vasundhara Volam    2018-07-04  101  		req->dimensions = cpu_to_le16(1);
6354b95e Vasundhara Volam    2018-07-04  102  
6fc92c33 Michael Chan        2018-08-05  103  	if (req->req_type == cpu_to_le16(HWRM_NVM_SET_VARIABLE))
6354b95e Vasundhara Volam    2018-07-04  104  		memcpy(data_addr, buf, bytesize);
6354b95e Vasundhara Volam    2018-07-04  105  
6354b95e Vasundhara Volam    2018-07-04  106  	rc = hwrm_send_message(bp, msg, msg_len, HWRM_CMD_TIMEOUT);
6fc92c33 Michael Chan        2018-08-05  107  	if (!rc && req->req_type == cpu_to_le16(HWRM_NVM_GET_VARIABLE))
6354b95e Vasundhara Volam    2018-07-04  108  		memcpy(buf, data_addr, bytesize);
6354b95e Vasundhara Volam    2018-07-04  109  
6354b95e Vasundhara Volam    2018-07-04  110  	dma_free_coherent(&bp->pdev->dev, bytesize, data_addr, data_dma_addr);
3a1d52a5 Vasundhara Volam    2018-10-04  111  	if (rc == HWRM_ERR_CODE_RESOURCE_ACCESS_DENIED) {
3a1d52a5 Vasundhara Volam    2018-10-04  112  		netdev_err(bp->dev, "PF does not have admin privileges to modify NVM config\n");
3a1d52a5 Vasundhara Volam    2018-10-04  113  		return -EACCES;
3a1d52a5 Vasundhara Volam    2018-10-04  114  	} else if (rc) {
6354b95e Vasundhara Volam    2018-07-04  115  		return -EIO;
3a1d52a5 Vasundhara Volam    2018-10-04  116  	}
6354b95e Vasundhara Volam    2018-07-04  117  	return 0;
6354b95e Vasundhara Volam    2018-07-04  118  }
6354b95e Vasundhara Volam    2018-07-04  119  
6354b95e Vasundhara Volam    2018-07-04  120  static int bnxt_dl_nvm_param_get(struct devlink *dl, u32 id,
6354b95e Vasundhara Volam    2018-07-04  121  				 struct devlink_param_gset_ctx *ctx)
6354b95e Vasundhara Volam    2018-07-04  122  {
6354b95e Vasundhara Volam    2018-07-04  123  	struct hwrm_nvm_get_variable_input req = {0};
6354b95e Vasundhara Volam    2018-07-04  124  	struct bnxt *bp = bnxt_get_bp_from_dl(dl);
2dc0865e Vasundhara Volam    2018-10-04  125  	int rc;
6354b95e Vasundhara Volam    2018-07-04  126  
6354b95e Vasundhara Volam    2018-07-04  127  	bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_NVM_GET_VARIABLE, -1, -1);
2dc0865e Vasundhara Volam    2018-10-04  128  	rc = bnxt_hwrm_nvm_req(bp, id, &req, sizeof(req), &ctx->val);
2dc0865e Vasundhara Volam    2018-10-04  129  	if (!rc)
2dc0865e Vasundhara Volam    2018-10-04  130  		if (id == BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK)
2dc0865e Vasundhara Volam    2018-10-04  131  			ctx->val.vbool = !ctx->val.vbool;
2dc0865e Vasundhara Volam    2018-10-04  132  
2dc0865e Vasundhara Volam    2018-10-04  133  	return rc;
6354b95e Vasundhara Volam    2018-07-04  134  }
6354b95e Vasundhara Volam    2018-07-04  135  
6354b95e Vasundhara Volam    2018-07-04  136  static int bnxt_dl_nvm_param_set(struct devlink *dl, u32 id,
6354b95e Vasundhara Volam    2018-07-04  137  				 struct devlink_param_gset_ctx *ctx)
6354b95e Vasundhara Volam    2018-07-04  138  {
6354b95e Vasundhara Volam    2018-07-04  139  	struct hwrm_nvm_set_variable_input req = {0};
6354b95e Vasundhara Volam    2018-07-04  140  	struct bnxt *bp = bnxt_get_bp_from_dl(dl);
6354b95e Vasundhara Volam    2018-07-04  141  
6354b95e Vasundhara Volam    2018-07-04  142  	bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_NVM_SET_VARIABLE, -1, -1);
2dc0865e Vasundhara Volam    2018-10-04  143  
2dc0865e Vasundhara Volam    2018-10-04  144  	if (id == BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK)
2dc0865e Vasundhara Volam    2018-10-04  145  		ctx->val.vbool = !ctx->val.vbool;
2dc0865e Vasundhara Volam    2018-10-04  146  
6354b95e Vasundhara Volam    2018-07-04  147  	return bnxt_hwrm_nvm_req(bp, id, &req, sizeof(req), &ctx->val);
6354b95e Vasundhara Volam    2018-07-04  148  }
6354b95e Vasundhara Volam    2018-07-04  149  
f399e849 Vasundhara Volam    2018-10-04  150  static int bnxt_dl_msix_validate(struct devlink *dl, u32 id,
f399e849 Vasundhara Volam    2018-10-04  151  				 union devlink_param_value val,
f399e849 Vasundhara Volam    2018-10-04  152  				 struct netlink_ext_ack *extack)
f399e849 Vasundhara Volam    2018-10-04  153  {
5fc7c12f Gustavo A. R. Silva 2018-10-05  154  	int max_val = -1;
f399e849 Vasundhara Volam    2018-10-04  155  
f399e849 Vasundhara Volam    2018-10-04  156  	if (id == DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MAX)
f399e849 Vasundhara Volam    2018-10-04  157  		max_val = BNXT_MSIX_VEC_MAX;
f399e849 Vasundhara Volam    2018-10-04  158  
f399e849 Vasundhara Volam    2018-10-04  159  	if (id == DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN)
f399e849 Vasundhara Volam    2018-10-04  160  		max_val = BNXT_MSIX_VEC_MIN_MAX;
f399e849 Vasundhara Volam    2018-10-04  161  
5fc7c12f Gustavo A. R. Silva 2018-10-05  162  	if (val.vu32 > max_val) {
f399e849 Vasundhara Volam    2018-10-04  163  		NL_SET_ERR_MSG_MOD(extack, "MSIX value is exceeding the range");
f399e849 Vasundhara Volam    2018-10-04  164  		return -EINVAL;
f399e849 Vasundhara Volam    2018-10-04  165  	}
f399e849 Vasundhara Volam    2018-10-04  166  
f399e849 Vasundhara Volam    2018-10-04  167  	return 0;
f399e849 Vasundhara Volam    2018-10-04  168  }
f399e849 Vasundhara Volam    2018-10-04  169  
782a624d Vasundhara Volam    2019-01-28  170  static int bnxt_dl_wol_validate(struct devlink *dl, u32 id,
782a624d Vasundhara Volam    2019-01-28  171  				union devlink_param_value val,
782a624d Vasundhara Volam    2019-01-28  172  				struct netlink_ext_ack *extack)
782a624d Vasundhara Volam    2019-01-28  173  {
782a624d Vasundhara Volam    2019-01-28 @174  	if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) {
782a624d Vasundhara Volam    2019-01-28  175  		NL_SET_ERR_MSG_MOD(extack, "WOL type is not supported");
782a624d Vasundhara Volam    2019-01-28  176  		return -EINVAL;
782a624d Vasundhara Volam    2019-01-28  177  	}
782a624d Vasundhara Volam    2019-01-28  178  	return 0;
782a624d Vasundhara Volam    2019-01-28  179  }
782a624d Vasundhara Volam    2019-01-28  180  

:::::: The code at line 41 was first introduced by commit
:::::: 782a624d00fa22e7499f5abc29747501ec671313 bnxt_en: Add bnxt_en initial port params table and register it

:::::: TO: Vasundhara Volam <vasundhara-v.volam@broadcom.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
diff mbox series

Patch

diff --git a/include/net/devlink.h b/include/net/devlink.h
index c12ad6e..1dfdd81 100644
--- a/include/net/devlink.h
+++ b/include/net/devlink.h
@@ -369,17 +369,12 @@  enum devlink_param_generic_id {
 	DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MAX,
 	DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN,
 	DEVLINK_PARAM_GENERIC_ID_FW_LOAD_POLICY,
-	DEVLINK_PARAM_GENERIC_ID_WOL,
 
 	/* add new param generic ids above here*/
 	__DEVLINK_PARAM_GENERIC_ID_MAX,
 	DEVLINK_PARAM_GENERIC_ID_MAX = __DEVLINK_PARAM_GENERIC_ID_MAX - 1,
 };
 
-enum devlink_param_wol_types {
-	DEVLINK_PARAM_WAKE_MAGIC = (1 << 0),
-};
-
 #define DEVLINK_PARAM_GENERIC_INT_ERR_RESET_NAME "internal_error_reset"
 #define DEVLINK_PARAM_GENERIC_INT_ERR_RESET_TYPE DEVLINK_PARAM_TYPE_BOOL
 
@@ -404,9 +399,6 @@  enum devlink_param_wol_types {
 #define DEVLINK_PARAM_GENERIC_FW_LOAD_POLICY_NAME "fw_load_policy"
 #define DEVLINK_PARAM_GENERIC_FW_LOAD_POLICY_TYPE DEVLINK_PARAM_TYPE_U8
 
-#define DEVLINK_PARAM_GENERIC_WOL_NAME "wake_on_lan"
-#define DEVLINK_PARAM_GENERIC_WOL_TYPE DEVLINK_PARAM_TYPE_U8
-
 #define DEVLINK_PARAM_GENERIC(_id, _cmodes, _get, _set, _validate)	\
 {									\
 	.id = DEVLINK_PARAM_GENERIC_ID_##_id,				\
diff --git a/net/core/devlink.c b/net/core/devlink.c
index 7fbdba5..f064ad3 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -2701,11 +2701,6 @@  static int devlink_nl_cmd_reload(struct sk_buff *skb, struct genl_info *info)
 		.name = DEVLINK_PARAM_GENERIC_FW_LOAD_POLICY_NAME,
 		.type = DEVLINK_PARAM_GENERIC_FW_LOAD_POLICY_TYPE,
 	},
-	{
-		.id = DEVLINK_PARAM_GENERIC_ID_WOL,
-		.name = DEVLINK_PARAM_GENERIC_WOL_NAME,
-		.type = DEVLINK_PARAM_GENERIC_WOL_TYPE,
-	},
 };
 
 static int devlink_param_generic_verify(const struct devlink_param *param)