summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/marvell/prestera/prestera_router.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/marvell/prestera/prestera_router.c')
-rw-r--r--drivers/net/ethernet/marvell/prestera/prestera_router.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/ethernet/marvell/prestera/prestera_router.c b/drivers/net/ethernet/marvell/prestera/prestera_router.c
index 5f64b05b7259..124172c833f2 100644
--- a/drivers/net/ethernet/marvell/prestera/prestera_router.c
+++ b/drivers/net/ethernet/marvell/prestera/prestera_router.c
@@ -5,10 +5,12 @@
#include <linux/types.h>
#include "prestera.h"
+#include "prestera_router_hw.h"
int prestera_router_init(struct prestera_switch *sw)
{
struct prestera_router *router;
+ int err;
router = kzalloc(sizeof(*sw->router), GFP_KERNEL);
if (!router)
@@ -17,7 +19,15 @@ int prestera_router_init(struct prestera_switch *sw)
sw->router = router;
router->sw = sw;
+ err = prestera_router_hw_init(sw);
+ if (err)
+ goto err_router_lib_init;
+
return 0;
+
+err_router_lib_init:
+ kfree(sw->router);
+ return err;
}
void prestera_router_fini(struct prestera_switch *sw)