/* Local Definitions and Declarations */
 
+static const struct nla_policy rmnet_policy[IFLA_RMNET_MAX + 1] = {
+       [IFLA_RMNET_MUX_ID]     = { .type = NLA_U16 },
+       [IFLA_RMNET_FLAGS]      = { .len = sizeof(struct ifla_rmnet_flags) },
+};
+
 static int rmnet_is_real_dev_registered(const struct net_device *real_dev)
 {
        return rcu_access_pointer(real_dev->rx_handler) == rmnet_rx_handler;
                         struct nlattr *tb[], struct nlattr *data[],
                         struct netlink_ext_ack *extack)
 {
-       u32 data_format = RMNET_INGRESS_FORMAT_DEAGGREGATION;
+       u32 data_format = RMNET_FLAGS_INGRESS_DEAGGREGATION;
        struct net_device *real_dev;
        int mode = RMNET_EPMODE_VND;
        struct rmnet_endpoint *ep;
        if (!real_dev || !dev)
                return -ENODEV;
 
-       if (!data[IFLA_VLAN_ID])
+       if (!data[IFLA_RMNET_MUX_ID])
                return -EINVAL;
 
        ep = kzalloc(sizeof(*ep), GFP_ATOMIC);
        if (!ep)
                return -ENOMEM;
 
-       mux_id = nla_get_u16(data[IFLA_VLAN_ID]);
+       mux_id = nla_get_u16(data[IFLA_RMNET_MUX_ID]);
 
        err = rmnet_register_real_device(real_dev);
        if (err)
 
        hlist_add_head_rcu(&ep->hlnode, &port->muxed_ep[mux_id]);
 
-       if (data[IFLA_VLAN_FLAGS]) {
-               struct ifla_vlan_flags *flags;
+       if (data[IFLA_RMNET_FLAGS]) {
+               struct ifla_rmnet_flags *flags;
 
-               flags = nla_data(data[IFLA_VLAN_FLAGS]);
+               flags = nla_data(data[IFLA_RMNET_FLAGS]);
                data_format = flags->flags & flags->mask;
        }
 
 {
        u16 mux_id;
 
-       if (!data || !data[IFLA_VLAN_ID])
+       if (!data || !data[IFLA_RMNET_MUX_ID])
                return -EINVAL;
 
-       mux_id = nla_get_u16(data[IFLA_VLAN_ID]);
+       mux_id = nla_get_u16(data[IFLA_RMNET_MUX_ID]);
        if (mux_id > (RMNET_MAX_LOGICAL_EP - 1))
                return -ERANGE;
 
 
        port = rmnet_get_port_rtnl(real_dev);
 
-       if (data[IFLA_VLAN_ID]) {
-               mux_id = nla_get_u16(data[IFLA_VLAN_ID]);
+       if (data[IFLA_RMNET_MUX_ID]) {
+               mux_id = nla_get_u16(data[IFLA_RMNET_MUX_ID]);
                ep = rmnet_get_endpoint(port, priv->mux_id);
 
                hlist_del_init_rcu(&ep->hlnode);
                priv->mux_id = mux_id;
        }
 
-       if (data[IFLA_VLAN_FLAGS]) {
-               struct ifla_vlan_flags *flags;
+       if (data[IFLA_RMNET_FLAGS]) {
+               struct ifla_rmnet_flags *flags;
 
-               flags = nla_data(data[IFLA_VLAN_FLAGS]);
+               flags = nla_data(data[IFLA_RMNET_FLAGS]);
                port->data_format = flags->flags & flags->mask;
        }
 
 
 static size_t rmnet_get_size(const struct net_device *dev)
 {
-       return nla_total_size(2) /* IFLA_VLAN_ID */ +
-              nla_total_size(sizeof(struct ifla_vlan_flags)); /* IFLA_VLAN_FLAGS */
+       return
+               /* IFLA_RMNET_MUX_ID */
+               nla_total_size(2) +
+               /* IFLA_RMNET_FLAGS */
+               nla_total_size(sizeof(struct ifla_rmnet_flags));
 }
 
 struct rtnl_link_ops rmnet_link_ops __read_mostly = {
        .kind           = "rmnet",
-       .maxtype        = __IFLA_VLAN_MAX,
+       .maxtype        = __IFLA_RMNET_MAX,
        .priv_size      = sizeof(struct rmnet_priv),
        .setup          = rmnet_vnd_setup,
        .validate       = rmnet_rtnl_validate,
        .dellink        = rmnet_dellink,
        .get_size       = rmnet_get_size,
        .changelink     = rmnet_changelink,
+       .policy         = rmnet_policy,
 };
 
 /* Needs either rcu_read_lock() or rtnl lock */
 
        u8 mux_id;
 
        if (RMNET_MAP_GET_CD_BIT(skb)) {
-               if (port->data_format & RMNET_INGRESS_FORMAT_MAP_COMMANDS)
+               if (port->data_format & RMNET_FLAGS_INGRESS_MAP_COMMANDS)
                        return rmnet_map_command(skb, port);
 
                goto free_skb;
        skb_pull(skb, sizeof(struct rmnet_map_header));
        rmnet_set_skb_proto(skb);
 
-       if (port->data_format & RMNET_INGRESS_FORMAT_MAP_CKSUMV4) {
+       if (port->data_format & RMNET_FLAGS_INGRESS_MAP_CKSUMV4) {
                if (!rmnet_map_checksum_downlink_packet(skb, len + pad))
                        skb->ip_summed = CHECKSUM_UNNECESSARY;
        }
                skb_push(skb, ETH_HLEN);
        }
 
-       if (port->data_format & RMNET_INGRESS_FORMAT_DEAGGREGATION) {
+       if (port->data_format & RMNET_FLAGS_INGRESS_DEAGGREGATION) {
                while ((skbn = rmnet_map_deaggregate(skb, port)) != NULL)
                        __rmnet_map_ingress_handler(skbn, port);
 
        additional_header_len = 0;
        required_headroom = sizeof(struct rmnet_map_header);
 
-       if (port->data_format & RMNET_EGRESS_FORMAT_MAP_CKSUMV4) {
+       if (port->data_format & RMNET_FLAGS_EGRESS_MAP_CKSUMV4) {
                additional_header_len = sizeof(struct rmnet_map_ul_csum_header);
                required_headroom += additional_header_len;
        }
                        goto fail;
        }
 
-       if (port->data_format & RMNET_EGRESS_FORMAT_MAP_CKSUMV4)
+       if (port->data_format & RMNET_FLAGS_EGRESS_MAP_CKSUMV4)
                rmnet_map_checksum_uplink_packet(skb, orig_dev);
 
        map_header = rmnet_map_add_map_header(skb, additional_header_len, 0);