> +/** > + * dpmac_set_link_state() - Set the Ethernet link status > + * @mc_io: Pointer to opaque I/O object > + * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' > + * @token: Token of DPMAC object > + * @link_state: Link state configuration > + * > + * Return: '0' on Success; Error code otherwise. > + */ > +int dpmac_set_link_state(struct fsl_mc_io *mc_io, > + u32 cmd_flags, > + u16 token, > + struct dpmac_link_state *link_state) > +{ > + struct dpmac_cmd_set_link_state *cmd_params; > + struct fsl_mc_command cmd = { 0 }; > + > + /* prepare command */ > + cmd.header = mc_encode_cmd_header(DPMAC_CMDID_SET_LINK_STATE, > + cmd_flags, > + token); > + cmd_params = (struct dpmac_cmd_set_link_state *)cmd.params; > + cmd_params->options = cpu_to_le64(link_state->options); > + cmd_params->rate = cpu_to_le32(link_state->rate); > + dpmac_set_field(cmd_params->state, STATE, link_state->up); > + dpmac_set_field(cmd_params->state, STATE_VALID, > + link_state->state_valid); > + cmd_params->supported = cpu_to_le64(link_state->supported); > + cmd_params->advertising = cpu_to_le64(link_state->advertising);
I don't understand what supported and advertising mean in the context of a MAC. PHY yes, but MAC? > + * DPMAC link configuration/state options > + */ > + > +/** > + * Enable auto-negotiation > + */ > +#define DPMAC_LINK_OPT_AUTONEG BIT_ULL(0) > +/** > + * Enable half-duplex mode > + */ > +#define DPMAC_LINK_OPT_HALF_DUPLEX BIT_ULL(1) > +/** > + * Enable pause frames > + */ > +#define DPMAC_LINK_OPT_PAUSE BIT_ULL(2) > +/** > + * Enable a-symmetric pause frames > + */ > +#define DPMAC_LINK_OPT_ASYM_PAUSE BIT_ULL(3) So is this to configure the MAC? The MAC can do half duplex, pause, asym pause? But from the previous patch, the PHY cannot do half duplex? Andrew