mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-18 06:40:49 +07:00
qed*: Fix size of config attribute dump.
Driver currently returns max-buf-size as size of the config attribute.
This patch incorporates changes to read this value from MFW (if available)
and provide it to the user. Also did a trivial clean up in this path.
Fixes: d44a3ced70
("qede: Add support for reading the config id attributes.")
Signed-off-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
Signed-off-by: Ariel Elior <aelior@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2f2fa16e23
commit
9e54ba7c37
@ -2300,6 +2300,31 @@ static int qed_nvm_flash_cfg_write(struct qed_dev *cdev, const u8 **data)
|
||||
return rc;
|
||||
}
|
||||
|
||||
#define QED_MAX_NVM_BUF_LEN 32
|
||||
static int qed_nvm_flash_cfg_len(struct qed_dev *cdev, u32 cmd)
|
||||
{
|
||||
struct qed_hwfn *hwfn = QED_LEADING_HWFN(cdev);
|
||||
u8 buf[QED_MAX_NVM_BUF_LEN];
|
||||
struct qed_ptt *ptt;
|
||||
u32 len;
|
||||
int rc;
|
||||
|
||||
ptt = qed_ptt_acquire(hwfn);
|
||||
if (!ptt)
|
||||
return QED_MAX_NVM_BUF_LEN;
|
||||
|
||||
rc = qed_mcp_nvm_get_cfg(hwfn, ptt, cmd, 0, QED_NVM_CFG_GET_FLAGS, buf,
|
||||
&len);
|
||||
if (rc || !len) {
|
||||
DP_ERR(cdev, "Error %d reading %d\n", rc, cmd);
|
||||
len = QED_MAX_NVM_BUF_LEN;
|
||||
}
|
||||
|
||||
qed_ptt_release(hwfn, ptt);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
static int qed_nvm_flash_cfg_read(struct qed_dev *cdev, u8 **data,
|
||||
u32 cmd, u32 entity_id)
|
||||
{
|
||||
@ -2657,6 +2682,7 @@ const struct qed_common_ops qed_common_ops_pass = {
|
||||
.read_module_eeprom = &qed_read_module_eeprom,
|
||||
.get_affin_hwfn_idx = &qed_get_affin_hwfn_idx,
|
||||
.read_nvm_cfg = &qed_nvm_flash_cfg_read,
|
||||
.read_nvm_cfg_len = &qed_nvm_flash_cfg_len,
|
||||
.set_grc_config = &qed_set_grc_config,
|
||||
};
|
||||
|
||||
|
@ -49,7 +49,6 @@
|
||||
|
||||
#define QEDE_SELFTEST_POLL_COUNT 100
|
||||
#define QEDE_DUMP_VERSION 0x1
|
||||
#define QEDE_DUMP_NVM_BUF_LEN 32
|
||||
#define QEDE_DUMP_NVM_ARG_COUNT 2
|
||||
|
||||
static const struct {
|
||||
@ -2026,7 +2025,8 @@ static int qede_get_dump_flag(struct net_device *dev,
|
||||
switch (edev->dump_info.cmd) {
|
||||
case QEDE_DUMP_CMD_NVM_CFG:
|
||||
dump->flag = QEDE_DUMP_CMD_NVM_CFG;
|
||||
dump->len = QEDE_DUMP_NVM_BUF_LEN;
|
||||
dump->len = edev->ops->common->read_nvm_cfg_len(edev->cdev,
|
||||
edev->dump_info.args[0]);
|
||||
break;
|
||||
case QEDE_DUMP_CMD_GRCDUMP:
|
||||
dump->flag = QEDE_DUMP_CMD_GRCDUMP;
|
||||
@ -2051,9 +2051,8 @@ static int qede_get_dump_data(struct net_device *dev,
|
||||
|
||||
if (!edev->ops || !edev->ops->common) {
|
||||
DP_ERR(edev, "Edev ops not populated\n");
|
||||
edev->dump_info.cmd = QEDE_DUMP_CMD_NONE;
|
||||
edev->dump_info.num_args = 0;
|
||||
return -EINVAL;
|
||||
rc = -EINVAL;
|
||||
goto err;
|
||||
}
|
||||
|
||||
switch (edev->dump_info.cmd) {
|
||||
@ -2062,7 +2061,8 @@ static int qede_get_dump_data(struct net_device *dev,
|
||||
DP_ERR(edev, "Arg count = %d required = %d\n",
|
||||
edev->dump_info.num_args,
|
||||
QEDE_DUMP_NVM_ARG_COUNT);
|
||||
return -EINVAL;
|
||||
rc = -EINVAL;
|
||||
goto err;
|
||||
}
|
||||
rc = edev->ops->common->read_nvm_cfg(edev->cdev, (u8 **)&buf,
|
||||
edev->dump_info.args[0],
|
||||
@ -2078,8 +2078,10 @@ static int qede_get_dump_data(struct net_device *dev,
|
||||
break;
|
||||
}
|
||||
|
||||
err:
|
||||
edev->dump_info.cmd = QEDE_DUMP_CMD_NONE;
|
||||
edev->dump_info.num_args = 0;
|
||||
memset(edev->dump_info.args, 0, sizeof(edev->dump_info.args));
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
@ -1143,6 +1143,14 @@ struct qed_common_ops {
|
||||
*/
|
||||
int (*read_nvm_cfg)(struct qed_dev *cdev, u8 **buf, u32 cmd,
|
||||
u32 entity_id);
|
||||
/**
|
||||
* @brief read_nvm_cfg - Read NVM config attribute value.
|
||||
* @param cdev
|
||||
* @param cmd - NVM CFG command id
|
||||
*
|
||||
* @return config id length, 0 on error.
|
||||
*/
|
||||
int (*read_nvm_cfg_len)(struct qed_dev *cdev, u32 cmd);
|
||||
|
||||
/**
|
||||
* @brief set_grc_config - Configure value for grc config id.
|
||||
|
Loading…
Reference in New Issue
Block a user