dpaa2-mac: add the MC API for reconfiguring the protocol
The MC firmware gained recently a new command which can reconfigure the running protocol on the underlying MAC. Add this new command which will be used in the next patches in order to do a major reconfig on the interface. Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
38d28b02a0
commit
332b9ea59e
|
@ -26,6 +26,8 @@
|
|||
|
||||
#define DPMAC_CMDID_GET_COUNTER DPMAC_CMD(0x0c4)
|
||||
|
||||
#define DPMAC_CMDID_SET_PROTOCOL DPMAC_CMD(0x0c7)
|
||||
|
||||
/* Macros for accessing command fields smaller than 1byte */
|
||||
#define DPMAC_MASK(field) \
|
||||
GENMASK(DPMAC_##field##_SHIFT + DPMAC_##field##_SIZE - 1, \
|
||||
|
@ -77,4 +79,7 @@ struct dpmac_rsp_get_api_version {
|
|||
__le16 minor;
|
||||
};
|
||||
|
||||
struct dpmac_cmd_set_protocol {
|
||||
u8 eth_if;
|
||||
};
|
||||
#endif /* _FSL_DPMAC_CMD_H */
|
||||
|
|
|
@ -212,3 +212,26 @@ int dpmac_get_api_version(struct fsl_mc_io *mc_io, u32 cmd_flags,
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* dpmac_set_protocol() - Reconfigure the DPMAC protocol
|
||||
* @mc_io: Pointer to opaque I/O object
|
||||
* @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
|
||||
* @token: Token of DPMAC object
|
||||
* @protocol: New protocol for the DPMAC to be reconfigured in.
|
||||
*
|
||||
* Return: '0' on Success; Error code otherwise.
|
||||
*/
|
||||
int dpmac_set_protocol(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
|
||||
enum dpmac_eth_if protocol)
|
||||
{
|
||||
struct dpmac_cmd_set_protocol *cmd_params;
|
||||
struct fsl_mc_command cmd = { 0 };
|
||||
|
||||
cmd.header = mc_encode_cmd_header(DPMAC_CMDID_SET_PROTOCOL,
|
||||
cmd_flags, token);
|
||||
cmd_params = (struct dpmac_cmd_set_protocol *)cmd.params;
|
||||
cmd_params->eth_if = protocol;
|
||||
|
||||
return mc_send_command(mc_io, &cmd);
|
||||
}
|
||||
|
|
|
@ -207,4 +207,7 @@ int dpmac_get_counter(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
|
|||
|
||||
int dpmac_get_api_version(struct fsl_mc_io *mc_io, u32 cmd_flags,
|
||||
u16 *major_ver, u16 *minor_ver);
|
||||
|
||||
int dpmac_set_protocol(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
|
||||
enum dpmac_eth_if protocol);
|
||||
#endif /* __FSL_DPMAC_H */
|
||||
|
|
Loading…
Reference in New Issue