return ofdpa_port_fib_ipv4(ofdpa_port, trans,
                                   htonl(fib4->dst), fib4->dst_len,
-                                  &fib4->fi, fib4->tb_id, 0);
+                                  fib4->fi, fib4->tb_id, 0);
 }
 
 static int ofdpa_port_obj_fib4_del(struct rocker_port *rocker_port,
 
        return ofdpa_port_fib_ipv4(ofdpa_port, NULL,
                                   htonl(fib4->dst), fib4->dst_len,
-                                  &fib4->fi, fib4->tb_id,
+                                  fib4->fi, fib4->tb_id,
                                   OFDPA_OP_FLAG_REMOVE);
 }
 
 
                .obj.id = SWITCHDEV_OBJ_ID_IPV4_FIB,
                .dst = dst,
                .dst_len = dst_len,
+               .fi = fi,
                .tos = tos,
                .type = type,
                .nlflags = nlflags,
        struct net_device *dev;
        int err = 0;
 
-       memcpy(&ipv4_fib.fi, fi, sizeof(ipv4_fib.fi));
-
        /* Don't offload route if using custom ip rules or if
         * IPv4 FIB offloading has been disabled completely.
         */
                .obj.id = SWITCHDEV_OBJ_ID_IPV4_FIB,
                .dst = dst,
                .dst_len = dst_len,
+               .fi = fi,
                .tos = tos,
                .type = type,
                .nlflags = 0,
        struct net_device *dev;
        int err = 0;
 
-       memcpy(&ipv4_fib.fi, fi, sizeof(ipv4_fib.fi));
-
        if (!(fi->fib_flags & RTNH_F_OFFLOAD))
                return 0;