Skip to content

Commit 38eabdf

Browse files
Sudarsana Reddy Kallurudavem330
authored andcommitted
qed: Add API for configuring NVM attributes.
The patch adds API for configuring the NVM config attributes using Management FW (MFW) interfaces. Signed-off-by: Sudarsana Reddy Kalluru <[email protected]> Signed-off-by: Ariel Elior <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 8714652 commit 38eabdf

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

drivers/net/ethernet/qlogic/qed/qed_hsi.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12580,6 +12580,8 @@ struct public_drv_mb {
1258012580
#define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000
1258112581
#define DRV_MSG_CODE_NIG_DRAIN 0x30000000
1258212582
#define DRV_MSG_CODE_S_TAG_UPDATE_ACK 0x3b000000
12583+
#define DRV_MSG_CODE_GET_NVM_CFG_OPTION 0x003e0000
12584+
#define DRV_MSG_CODE_SET_NVM_CFG_OPTION 0x003f0000
1258312585
#define DRV_MSG_CODE_INITIATE_PF_FLR 0x02010000
1258412586
#define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000
1258512587
#define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000
@@ -12748,6 +12750,21 @@ struct public_drv_mb {
1274812750
#define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EEE 0x00000002
1274912751
#define DRV_MB_PARAM_FEATURE_SUPPORT_FUNC_VLINK 0x00010000
1275012752

12753+
#define DRV_MB_PARAM_NVM_CFG_OPTION_ID_SHIFT 0
12754+
#define DRV_MB_PARAM_NVM_CFG_OPTION_ID_MASK 0x0000FFFF
12755+
#define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_SHIFT 16
12756+
#define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_MASK 0x00010000
12757+
#define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_SHIFT 17
12758+
#define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_MASK 0x00020000
12759+
#define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_SHIFT 18
12760+
#define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_MASK 0x00040000
12761+
#define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_SHIFT 19
12762+
#define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_MASK 0x00080000
12763+
#define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_SHIFT 20
12764+
#define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_MASK 0x00100000
12765+
#define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_SHIFT 24
12766+
#define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_MASK 0x0f000000
12767+
1275112768
u32 fw_mb_header;
1275212769
#define FW_MSG_CODE_MASK 0xffff0000
1275312770
#define FW_MSG_CODE_UNSUPPORTED 0x00000000

drivers/net/ethernet/qlogic/qed/qed_mcp.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3750,3 +3750,35 @@ int qed_mcp_get_ppfid_bitmap(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
37503750

37513751
return 0;
37523752
}
3753+
3754+
int qed_mcp_nvm_set_cfg(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
3755+
u16 option_id, u8 entity_id, u16 flags, u8 *p_buf,
3756+
u32 len)
3757+
{
3758+
u32 mb_param = 0, resp, param;
3759+
3760+
QED_MFW_SET_FIELD(mb_param, DRV_MB_PARAM_NVM_CFG_OPTION_ID, option_id);
3761+
if (flags & QED_NVM_CFG_OPTION_ALL)
3762+
QED_MFW_SET_FIELD(mb_param,
3763+
DRV_MB_PARAM_NVM_CFG_OPTION_ALL, 1);
3764+
if (flags & QED_NVM_CFG_OPTION_INIT)
3765+
QED_MFW_SET_FIELD(mb_param,
3766+
DRV_MB_PARAM_NVM_CFG_OPTION_INIT, 1);
3767+
if (flags & QED_NVM_CFG_OPTION_COMMIT)
3768+
QED_MFW_SET_FIELD(mb_param,
3769+
DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT, 1);
3770+
if (flags & QED_NVM_CFG_OPTION_FREE)
3771+
QED_MFW_SET_FIELD(mb_param,
3772+
DRV_MB_PARAM_NVM_CFG_OPTION_FREE, 1);
3773+
if (flags & QED_NVM_CFG_OPTION_ENTITY_SEL) {
3774+
QED_MFW_SET_FIELD(mb_param,
3775+
DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL, 1);
3776+
QED_MFW_SET_FIELD(mb_param,
3777+
DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID,
3778+
entity_id);
3779+
}
3780+
3781+
return qed_mcp_nvm_wr_cmd(p_hwfn, p_ptt,
3782+
DRV_MSG_CODE_SET_NVM_CFG_OPTION,
3783+
mb_param, &resp, &param, len, (u32 *)p_buf);
3784+
}

drivers/net/ethernet/qlogic/qed/qed_mcp.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,12 @@ union qed_mfw_tlv_data {
251251
struct qed_mfw_tlv_iscsi iscsi;
252252
};
253253

254+
#define QED_NVM_CFG_OPTION_ALL BIT(0)
255+
#define QED_NVM_CFG_OPTION_INIT BIT(1)
256+
#define QED_NVM_CFG_OPTION_COMMIT BIT(2)
257+
#define QED_NVM_CFG_OPTION_FREE BIT(3)
258+
#define QED_NVM_CFG_OPTION_ENTITY_SEL BIT(4)
259+
254260
/**
255261
* @brief - returns the link params of the hw function
256262
*
@@ -1202,4 +1208,18 @@ int qed_mcp_get_engine_config(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
12021208
*/
12031209
int qed_mcp_get_ppfid_bitmap(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt);
12041210

1211+
/**
1212+
* @brief Set NVM config attribute value.
1213+
*
1214+
* @param p_hwfn
1215+
* @param p_ptt
1216+
* @param option_id
1217+
* @param entity_id
1218+
* @param flags
1219+
* @param p_buf
1220+
* @param len
1221+
*/
1222+
int qed_mcp_nvm_set_cfg(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
1223+
u16 option_id, u8 entity_id, u16 flags, u8 *p_buf,
1224+
u32 len);
12051225
#endif

0 commit comments

Comments
 (0)