static int dpni_exit(void) { int err; err = dpni_open(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_id, &dflt_dpni->dpni_handle); if (err < 0) { printf("dpni_open() failed: %d\n", err); goto err; } err = dpni_destroy(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); if (err < 0) { printf("dpni_destroy() failed: %d\n", err); goto err; } #ifdef DEBUG printf("Exit: DPNI id=0x%d\n", dflt_dpni->dpni_id); #endif if (dflt_dpni) free(dflt_dpni); return 0; err: return err; }
static int dpni_init(void) { int err; struct dpni_attr dpni_attr; struct dpni_cfg dpni_cfg; dflt_dpni = (struct fsl_dpni_obj *)malloc(sizeof(struct fsl_dpni_obj)); if (!dflt_dpni) { printf("No memory: malloc() failed\n"); err = -ENOMEM; goto err_malloc; } memset(&dpni_cfg, 0, sizeof(dpni_cfg)); dpni_cfg.adv.options = DPNI_OPT_UNICAST_FILTER | DPNI_OPT_MULTICAST_FILTER; err = dpni_create(dflt_mc_io, MC_CMD_NO_FLAGS, &dpni_cfg, &dflt_dpni->dpni_handle); if (err < 0) { err = -ENODEV; printf("dpni_create() failed: %d\n", err); goto err_create; } memset(&dpni_attr, 0, sizeof(struct dpni_attr)); err = dpni_get_attributes(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle, &dpni_attr); if (err < 0) { printf("dpni_get_attributes() failed: %d\n", err); goto err_get_attr; } dflt_dpni->dpni_id = dpni_attr.id; #ifdef DEBUG printf("Init: DPNI id=0x%d\n", dflt_dpni->dpni_id); #endif err = dpni_close(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); if (err < 0) { printf("dpni_close() failed: %d\n", err); goto err_close; } return 0; err_close: free(dflt_dpni); err_get_attr: dpni_close(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); dpni_destroy(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); err_create: err_malloc: return err; }
static int dpni_init(void) { int err; uint8_t cfg_buf[256] = {0}; struct dpni_cfg dpni_cfg; uint16_t major_ver, minor_ver; dflt_dpni = (struct fsl_dpni_obj *)calloc( sizeof(struct fsl_dpni_obj), 1); if (!dflt_dpni) { printf("No memory: calloc() failed\n"); err = -ENOMEM; goto err_calloc; } memset(&dpni_cfg, 0, sizeof(dpni_cfg)); err = dpni_prepare_cfg(&dpni_cfg, &cfg_buf[0]); if (err < 0) { err = -ENODEV; printf("dpni_prepare_cfg() failed: %d\n", err); goto err_prepare_cfg; } err = dpni_create(dflt_mc_io, dflt_dprc_handle, MC_CMD_NO_FLAGS, &dpni_cfg, &dflt_dpni->dpni_id); if (err < 0) { err = -ENODEV; printf("dpni create() failed: %d\n", err); goto err_create; } err = dpni_get_api_version(dflt_mc_io, 0, &major_ver, &minor_ver); if (err < 0) { printf("dpni_get_api_version() failed: %d\n", err); goto err_get_version; } if (major_ver < DPNI_VER_MAJOR || (major_ver == DPNI_VER_MAJOR && minor_ver < DPNI_VER_MINOR)) { printf("DPNI version mismatch found %u.%u,", major_ver, minor_ver); printf("supported version is %u.%u\n", DPNI_VER_MAJOR, DPNI_VER_MINOR); } err = dpni_open(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_id, &dflt_dpni->dpni_handle); if (err) { printf("dpni_open() failed\n"); goto err_open; } #ifdef DEBUG printf("Init: DPNI id=0x%d\n", dflt_dpni->dpni_id); #endif err = dpni_close(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); if (err < 0) { printf("dpni_close() failed: %d\n", err); goto err_close; } return 0; err_close: dpni_close(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); err_open: err_get_version: dpni_destroy(dflt_mc_io, dflt_dprc_handle, MC_CMD_NO_FLAGS, dflt_dpni->dpni_id); err_create: err_prepare_cfg: free(dflt_dpni); err_calloc: return err; }
static int dpni_init(void) { int err; struct dpni_attr dpni_attr; uint8_t ext_cfg_buf[256] = {0}; struct dpni_extended_cfg dpni_extended_cfg; struct dpni_cfg dpni_cfg; dflt_dpni = (struct fsl_dpni_obj *)malloc(sizeof(struct fsl_dpni_obj)); if (!dflt_dpni) { printf("No memory: malloc() failed\n"); err = -ENOMEM; goto err_malloc; } memset(&dpni_extended_cfg, 0, sizeof(dpni_extended_cfg)); err = dpni_prepare_extended_cfg(&dpni_extended_cfg, &ext_cfg_buf[0]); if (err < 0) { err = -ENODEV; printf("dpni_prepare_extended_cfg() failed: %d\n", err); goto err_prepare_extended_cfg; } memset(&dpni_cfg, 0, sizeof(dpni_cfg)); dpni_cfg.adv.options = DPNI_OPT_UNICAST_FILTER | DPNI_OPT_MULTICAST_FILTER; dpni_cfg.adv.ext_cfg_iova = (uint64_t)&ext_cfg_buf[0]; err = dpni_create(dflt_mc_io, MC_CMD_NO_FLAGS, &dpni_cfg, &dflt_dpni->dpni_handle); if (err < 0) { err = -ENODEV; printf("dpni_create() failed: %d\n", err); goto err_create; } memset(&dpni_attr, 0, sizeof(struct dpni_attr)); err = dpni_get_attributes(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle, &dpni_attr); if (err < 0) { printf("dpni_get_attributes() failed: %d\n", err); goto err_get_attr; } if ((dpni_attr.version.major != DPNI_VER_MAJOR) || (dpni_attr.version.minor != DPNI_VER_MINOR)) { printf("DPNI version mismatch found %u.%u,", dpni_attr.version.major, dpni_attr.version.minor); printf("supported version is %u.%u\n", DPNI_VER_MAJOR, DPNI_VER_MINOR); } dflt_dpni->dpni_id = dpni_attr.id; #ifdef DEBUG printf("Init: DPNI id=0x%d\n", dflt_dpni->dpni_id); #endif err = dpni_close(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); if (err < 0) { printf("dpni_close() failed: %d\n", err); goto err_close; } return 0; err_close: err_get_attr: dpni_close(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); dpni_destroy(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpni->dpni_handle); err_create: err_prepare_extended_cfg: free(dflt_dpni); err_malloc: return err; }