mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 03:15:00 +00:00
driver: net: ldpaa: Add debug information
Add following debug information in the driver - Get various DPNI counter values - Get link status of DPNI objects - Get information of both ends of connection (DPMAC - DPNI) Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
This commit is contained in:
parent
c919ab9ee5
commit
5038d3e5f2
1 changed files with 123 additions and 0 deletions
|
@ -24,6 +24,84 @@ static int init_phy(struct eth_device *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
static void ldpaa_eth_get_dpni_counter(void)
|
||||||
|
{
|
||||||
|
int err = 0;
|
||||||
|
u64 value;
|
||||||
|
|
||||||
|
err = dpni_get_counter(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dpni->dpni_handle,
|
||||||
|
DPNI_CNT_ING_FRAME,
|
||||||
|
&value);
|
||||||
|
if (err < 0) {
|
||||||
|
printf("dpni_get_counter: DPNI_CNT_ING_FRAME failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("DPNI_CNT_ING_FRAME=%lld\n", value);
|
||||||
|
|
||||||
|
err = dpni_get_counter(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dpni->dpni_handle,
|
||||||
|
DPNI_CNT_ING_BYTE,
|
||||||
|
&value);
|
||||||
|
if (err < 0) {
|
||||||
|
printf("dpni_get_counter: DPNI_CNT_ING_BYTE failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("DPNI_CNT_ING_BYTE=%lld\n", value);
|
||||||
|
|
||||||
|
err = dpni_get_counter(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dpni->dpni_handle,
|
||||||
|
DPNI_CNT_ING_FRAME_DROP ,
|
||||||
|
&value);
|
||||||
|
if (err < 0) {
|
||||||
|
printf("dpni_get_counter: DPNI_CNT_ING_FRAME_DROP failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("DPNI_CNT_ING_FRAME_DROP =%lld\n", value);
|
||||||
|
|
||||||
|
err = dpni_get_counter(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dpni->dpni_handle,
|
||||||
|
DPNI_CNT_ING_FRAME_DISCARD,
|
||||||
|
&value);
|
||||||
|
if (err < 0) {
|
||||||
|
printf("dpni_get_counter: DPNI_CNT_ING_FRAME_DISCARD failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("DPNI_CNT_ING_FRAME_DISCARD=%lld\n", value);
|
||||||
|
|
||||||
|
err = dpni_get_counter(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dpni->dpni_handle,
|
||||||
|
DPNI_CNT_EGR_FRAME,
|
||||||
|
&value);
|
||||||
|
if (err < 0) {
|
||||||
|
printf("dpni_get_counter: DPNI_CNT_EGR_FRAME failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("DPNI_CNT_EGR_FRAME=%lld\n", value);
|
||||||
|
|
||||||
|
err = dpni_get_counter(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dpni->dpni_handle,
|
||||||
|
DPNI_CNT_EGR_BYTE ,
|
||||||
|
&value);
|
||||||
|
if (err < 0) {
|
||||||
|
printf("dpni_get_counter: DPNI_CNT_EGR_BYTE failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("DPNI_CNT_EGR_BYTE =%lld\n", value);
|
||||||
|
|
||||||
|
err = dpni_get_counter(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dpni->dpni_handle,
|
||||||
|
DPNI_CNT_EGR_FRAME_DISCARD ,
|
||||||
|
&value);
|
||||||
|
if (err < 0) {
|
||||||
|
printf("dpni_get_counter: DPNI_CNT_EGR_FRAME_DISCARD failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printf("DPNI_CNT_EGR_FRAME_DISCARD =%lld\n", value);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void ldpaa_eth_rx(struct ldpaa_eth_priv *priv,
|
static void ldpaa_eth_rx(struct ldpaa_eth_priv *priv,
|
||||||
const struct dpaa_fd *fd)
|
const struct dpaa_fd *fd)
|
||||||
{
|
{
|
||||||
|
@ -222,6 +300,9 @@ static int ldpaa_eth_open(struct eth_device *net_dev, bd_t *bd)
|
||||||
struct ldpaa_eth_priv *priv = (struct ldpaa_eth_priv *)net_dev->priv;
|
struct ldpaa_eth_priv *priv = (struct ldpaa_eth_priv *)net_dev->priv;
|
||||||
struct dpni_queue_attr rx_queue_attr;
|
struct dpni_queue_attr rx_queue_attr;
|
||||||
struct dpmac_link_state dpmac_link_state = { 0 };
|
struct dpmac_link_state dpmac_link_state = { 0 };
|
||||||
|
#ifdef DEBUG
|
||||||
|
struct dpni_link_state link_state;
|
||||||
|
#endif
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (net_dev->state == ETH_STATE_ACTIVE)
|
if (net_dev->state == ETH_STATE_ACTIVE)
|
||||||
|
@ -295,6 +376,20 @@ static int ldpaa_eth_open(struct eth_device *net_dev, bd_t *bd)
|
||||||
printf("dpmac_set_link_state() failed\n");
|
printf("dpmac_set_link_state() failed\n");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
err = dpni_get_link_state(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dpni->dpni_handle, &link_state);
|
||||||
|
if (err < 0) {
|
||||||
|
printf("dpni_get_link_state() failed\n");
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("link status: %d - ", link_state.up);
|
||||||
|
link_state.up == 0 ? printf("down\n") :
|
||||||
|
link_state.up == 1 ? printf("up\n") : printf("error state\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
/* TODO: support multiple Rx flows */
|
/* TODO: support multiple Rx flows */
|
||||||
err = dpni_get_rx_flow(dflt_mc_io, MC_CMD_NO_FLAGS,
|
err = dpni_get_rx_flow(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
dflt_dpni->dpni_handle, 0, 0, &rx_queue_attr);
|
dflt_dpni->dpni_handle, 0, 0, &rx_queue_attr);
|
||||||
|
@ -339,6 +434,10 @@ static void ldpaa_eth_stop(struct eth_device *net_dev)
|
||||||
(net_dev->state == ETH_STATE_INIT))
|
(net_dev->state == ETH_STATE_INIT))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
ldpaa_eth_get_dpni_counter();
|
||||||
|
#endif
|
||||||
|
|
||||||
err = dprc_disconnect(dflt_mc_io, MC_CMD_NO_FLAGS,
|
err = dprc_disconnect(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
dflt_dprc_handle, &dpmac_endpoint);
|
dflt_dprc_handle, &dpmac_endpoint);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
|
@ -523,6 +622,11 @@ static int ldpaa_dpmac_bind(struct ldpaa_eth_priv *priv)
|
||||||
.max_rate = 0
|
.max_rate = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
struct dprc_endpoint dbg_endpoint;
|
||||||
|
int state = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
memset(&dpmac_endpoint, 0, sizeof(struct dprc_endpoint));
|
memset(&dpmac_endpoint, 0, sizeof(struct dprc_endpoint));
|
||||||
sprintf(dpmac_endpoint.type, "dpmac");
|
sprintf(dpmac_endpoint.type, "dpmac");
|
||||||
dpmac_endpoint.id = priv->dpmac_id;
|
dpmac_endpoint.id = priv->dpmac_id;
|
||||||
|
@ -536,6 +640,25 @@ static int ldpaa_dpmac_bind(struct ldpaa_eth_priv *priv)
|
||||||
&dpmac_endpoint,
|
&dpmac_endpoint,
|
||||||
&dpni_endpoint,
|
&dpni_endpoint,
|
||||||
&dprc_connection_cfg);
|
&dprc_connection_cfg);
|
||||||
|
if (err)
|
||||||
|
printf("dprc_connect() failed\n");
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
err = dprc_get_connection(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dprc_handle, &dpni_endpoint,
|
||||||
|
&dbg_endpoint, &state);
|
||||||
|
printf("%s, DPMAC Type= %s\n", __func__, dbg_endpoint.type);
|
||||||
|
printf("%s, DPMAC ID= %d\n", __func__, dbg_endpoint.id);
|
||||||
|
printf("%s, DPMAC State= %d\n", __func__, state);
|
||||||
|
|
||||||
|
memset(&dbg_endpoint, 0, sizeof(struct dprc_endpoint));
|
||||||
|
err = dprc_get_connection(dflt_mc_io, MC_CMD_NO_FLAGS,
|
||||||
|
dflt_dprc_handle, &dpmac_endpoint,
|
||||||
|
&dbg_endpoint, &state);
|
||||||
|
printf("%s, DPNI Type= %s\n", __func__, dbg_endpoint.type);
|
||||||
|
printf("%s, DPNI ID= %d\n", __func__, dbg_endpoint.id);
|
||||||
|
printf("%s, DPNI State= %d\n", __func__, state);
|
||||||
|
#endif
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue