Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
All conflicts seemed rather trivial, with some guidance from Saeed Mameed on the tc_ct.c one. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -850,6 +850,8 @@ struct qed_dev {
|
||||
struct qed_dbg_feature dbg_features[DBG_FEATURE_NUM];
|
||||
u8 engine_for_debug;
|
||||
bool disable_ilt_dump;
|
||||
bool dbg_bin_dump;
|
||||
|
||||
DECLARE_HASHTABLE(connections, 10);
|
||||
const struct firmware *firmware;
|
||||
|
||||
|
@@ -7517,6 +7517,12 @@ static enum dbg_status format_feature(struct qed_hwfn *p_hwfn,
|
||||
if (p_hwfn->cdev->print_dbg_data)
|
||||
qed_dbg_print_feature(text_buf, text_size_bytes);
|
||||
|
||||
/* Just return the original binary buffer if requested */
|
||||
if (p_hwfn->cdev->dbg_bin_dump) {
|
||||
vfree(text_buf);
|
||||
return DBG_STATUS_OK;
|
||||
}
|
||||
|
||||
/* Free the old dump_buf and point the dump_buf to the newly allocagted
|
||||
* and formatted text buffer.
|
||||
*/
|
||||
@@ -7742,7 +7748,9 @@ int qed_dbg_mcp_trace_size(struct qed_dev *cdev)
|
||||
#define REGDUMP_HEADER_SIZE_SHIFT 0
|
||||
#define REGDUMP_HEADER_SIZE_MASK 0xffffff
|
||||
#define REGDUMP_HEADER_FEATURE_SHIFT 24
|
||||
#define REGDUMP_HEADER_FEATURE_MASK 0x3f
|
||||
#define REGDUMP_HEADER_FEATURE_MASK 0x1f
|
||||
#define REGDUMP_HEADER_BIN_DUMP_SHIFT 29
|
||||
#define REGDUMP_HEADER_BIN_DUMP_MASK 0x1
|
||||
#define REGDUMP_HEADER_OMIT_ENGINE_SHIFT 30
|
||||
#define REGDUMP_HEADER_OMIT_ENGINE_MASK 0x1
|
||||
#define REGDUMP_HEADER_ENGINE_SHIFT 31
|
||||
@@ -7780,6 +7788,7 @@ static u32 qed_calc_regdump_header(struct qed_dev *cdev,
|
||||
feature, feature_size);
|
||||
|
||||
SET_FIELD(res, REGDUMP_HEADER_FEATURE, feature);
|
||||
SET_FIELD(res, REGDUMP_HEADER_BIN_DUMP, 1);
|
||||
SET_FIELD(res, REGDUMP_HEADER_OMIT_ENGINE, omit_engine);
|
||||
SET_FIELD(res, REGDUMP_HEADER_ENGINE, engine);
|
||||
|
||||
@@ -7803,6 +7812,7 @@ int qed_dbg_all_data(struct qed_dev *cdev, void *buffer)
|
||||
omit_engine = 1;
|
||||
|
||||
mutex_lock(&qed_dbg_lock);
|
||||
cdev->dbg_bin_dump = true;
|
||||
|
||||
org_engine = qed_get_debug_engine(cdev);
|
||||
for (cur_engine = 0; cur_engine < cdev->num_hwfns; cur_engine++) {
|
||||
@@ -7940,6 +7950,10 @@ int qed_dbg_all_data(struct qed_dev *cdev, void *buffer)
|
||||
DP_ERR(cdev, "qed_dbg_mcp_trace failed. rc = %d\n", rc);
|
||||
}
|
||||
|
||||
/* Re-populate nvm attribute info */
|
||||
qed_mcp_nvm_info_free(p_hwfn);
|
||||
qed_mcp_nvm_info_populate(p_hwfn);
|
||||
|
||||
/* nvm cfg1 */
|
||||
rc = qed_dbg_nvm_image(cdev,
|
||||
(u8 *)buffer + offset +
|
||||
@@ -8002,6 +8016,7 @@ int qed_dbg_all_data(struct qed_dev *cdev, void *buffer)
|
||||
QED_NVM_IMAGE_MDUMP, "QED_NVM_IMAGE_MDUMP", rc);
|
||||
}
|
||||
|
||||
cdev->dbg_bin_dump = false;
|
||||
mutex_unlock(&qed_dbg_lock);
|
||||
|
||||
return 0;
|
||||
|
@@ -4446,12 +4446,6 @@ static int qed_get_dev_info(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void qed_nvm_info_free(struct qed_hwfn *p_hwfn)
|
||||
{
|
||||
kfree(p_hwfn->nvm_info.image_att);
|
||||
p_hwfn->nvm_info.image_att = NULL;
|
||||
}
|
||||
|
||||
static int qed_hw_prepare_single(struct qed_hwfn *p_hwfn,
|
||||
void __iomem *p_regview,
|
||||
void __iomem *p_doorbells,
|
||||
@@ -4536,7 +4530,7 @@ static int qed_hw_prepare_single(struct qed_hwfn *p_hwfn,
|
||||
return rc;
|
||||
err3:
|
||||
if (IS_LEAD_HWFN(p_hwfn))
|
||||
qed_nvm_info_free(p_hwfn);
|
||||
qed_mcp_nvm_info_free(p_hwfn);
|
||||
err2:
|
||||
if (IS_LEAD_HWFN(p_hwfn))
|
||||
qed_iov_free_hw_info(p_hwfn->cdev);
|
||||
@@ -4597,7 +4591,7 @@ int qed_hw_prepare(struct qed_dev *cdev,
|
||||
if (rc) {
|
||||
if (IS_PF(cdev)) {
|
||||
qed_init_free(p_hwfn);
|
||||
qed_nvm_info_free(p_hwfn);
|
||||
qed_mcp_nvm_info_free(p_hwfn);
|
||||
qed_mcp_free(p_hwfn);
|
||||
qed_hw_hwfn_free(p_hwfn);
|
||||
}
|
||||
@@ -4631,7 +4625,7 @@ void qed_hw_remove(struct qed_dev *cdev)
|
||||
|
||||
qed_iov_free_hw_info(cdev);
|
||||
|
||||
qed_nvm_info_free(p_hwfn);
|
||||
qed_mcp_nvm_info_free(p_hwfn);
|
||||
}
|
||||
|
||||
static void qed_chain_free_next_ptr(struct qed_dev *cdev,
|
||||
|
@@ -3254,6 +3254,13 @@ err0:
|
||||
return rc;
|
||||
}
|
||||
|
||||
void qed_mcp_nvm_info_free(struct qed_hwfn *p_hwfn)
|
||||
{
|
||||
kfree(p_hwfn->nvm_info.image_att);
|
||||
p_hwfn->nvm_info.image_att = NULL;
|
||||
p_hwfn->nvm_info.valid = false;
|
||||
}
|
||||
|
||||
int
|
||||
qed_mcp_get_nvm_image_att(struct qed_hwfn *p_hwfn,
|
||||
enum qed_nvm_images image_id,
|
||||
|
@@ -1194,6 +1194,13 @@ void qed_mcp_read_ufp_config(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
|
||||
*/
|
||||
int qed_mcp_nvm_info_populate(struct qed_hwfn *p_hwfn);
|
||||
|
||||
/**
|
||||
* @brief Delete nvm info shadow in the given hardware function
|
||||
*
|
||||
* @param p_hwfn
|
||||
*/
|
||||
void qed_mcp_nvm_info_free(struct qed_hwfn *p_hwfn);
|
||||
|
||||
/**
|
||||
* @brief Get the engine affinity configuration.
|
||||
*
|
||||
|
Reference in New Issue
Block a user