vlan_info
wc->vlan_id = (be16_to_cpu(cqe->vlan_info)) & 0xfff;
wc->sl = (be16_to_cpu(cqe->vlan_info) >> 13) & 0x7;
cfg->vlan_info.vlan_tag,
cfg->vlan_info.qos);
struct hclge_vlan_info *vlan_info;
vlan_info = vport->port_base_vlan_cfg.tbl_sta ?
&vport->port_base_vlan_cfg.vlan_info :
vlan_id = vlan_info->vlan_tag;
vlan_proto = vlan_info->vlan_proto;
struct hclge_vlan_info *vlan_info)
old_vlan_info = &vport->port_base_vlan_cfg.vlan_info;
ret = hclge_vlan_offload_cfg(vport, state, vlan_info->vlan_tag,
vlan_info->qos);
if (!hclge_need_update_vlan_filter(vlan_info, old_vlan_info))
ret = hclge_modify_port_base_vlan_tag(vport, vlan_info,
ret = hclge_update_vlan_filter_entries(vport, state, vlan_info,
vport->port_base_vlan_cfg.vlan_info = *vlan_info;
if (vport->port_base_vlan_cfg.vlan_info.vlan_tag == vlan &&
vport->port_base_vlan_cfg.vlan_info.qos == qos)
struct hclge_vlan_info vlan_info;
vlan_info.vlan_tag = vlan;
vlan_info.qos = qos;
vlan_info.vlan_proto = ntohs(proto);
ret = hclge_update_port_base_vlan_cfg(vport, state, &vlan_info);
&vlan_info);
struct hclge_vlan_info *vlan_info;
vlan_info = &vport->port_base_vlan_cfg.vlan_info;
vlan_info->vlan_tag, true);
struct hclge_vlan_info vlan_info;
vlan_info.vlan_tag = 0;
vlan_info.qos = 0;
vlan_info.vlan_proto = ETH_P_8021Q;
&vlan_info);
ivf->vlan = vport->port_base_vlan_cfg.vlan_info.vlan_tag;
ivf->vlan_proto = htons(vport->port_base_vlan_cfg.vlan_info.vlan_proto);
ivf->qos = vport->port_base_vlan_cfg.vlan_info.qos;
struct hclge_vlan_info vlan_info;
struct hclge_vlan_info *vlan_info);
struct hclge_vlan_info *vlan_info);
struct hclge_vlan_info *vlan_info)
base_vlan.vlan_proto = cpu_to_le16(vlan_info->vlan_proto);
base_vlan.qos = cpu_to_le16(vlan_info->qos);
base_vlan.vlan_tag = cpu_to_le16(vlan_info->vlan_tag);
&vlan_cfg->vlan_info);
struct hclge_mbx_port_base_vlan *vlan_info;
vlan_info =
state = le16_to_cpu(vlan_info->state);
vlan_info);
struct l2nic_cmd_vlan_config vlan_info = {};
vlan_info.opcode = opcode;
vlan_info.func_id = func_id;
vlan_info.vlan_id = vlan_id;
mgmt_msg_params_init_default(&msg_params, &vlan_info,
sizeof(vlan_info));
if (err || vlan_info.msg_head.status) {
err, vlan_info.msg_head.status);
struct ice_vsi_vlan_info vlan_info; /* vlan config to be restored */
ice_save_vlan_info(&vsi->info, &vsi->vlan_info);
ice_restore_vlan_info(&vsi->info, &vsi->vlan_info);
__ice_vsi_set_outer_port_vlan(struct ice_vsi *vsi, u16 vlan_info, u16 tpid)
ice_save_vlan_info(&vsi->info, &vsi->vlan_info);
ctxt->info.port_based_outer_vlan = cpu_to_le16(vlan_info);
ice_restore_vlan_info(&vsi->info, &vsi->vlan_info);
*vlan_tci = be16_to_cpu(cqe->vlan_info);
be16_to_cpu(cqe->vlan_info));
u32 meta_info, vlan_info;
vlan_info = get_unaligned_be32(data);
if (FIELD_GET(NFP_NET_META_VLAN_STRIP, vlan_info)) {
vlan_info);
vlan_info);
u32 meta_info, vlan_info;
vlan_info = get_unaligned_be32(data);
if (FIELD_GET(NFP_NET_META_VLAN_STRIP, vlan_info)) {
vlan_info);
vlan_info);
__be16 vlan_info;
struct vlan_info __rcu *vlan_info;
grp = &vlan_info->grp;
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(real_dev->vlan_info);
BUG_ON(!vlan_info);
grp = &vlan_info->grp;
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(dev->vlan_info);
vlan_info->auto_vid0 = true;
struct vlan_info *vlan_info = rtnl_dereference(dev->vlan_info);
if (!vlan_info || !vlan_info->auto_vid0)
vlan_info->auto_vid0 = false;
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(dev->vlan_info);
if (!vlan_info)
grp = &vlan_info->grp;
if (vlan_info->nr_vids == 1)
err = vlan_filter_push_vids(vlan_info, htons(ETH_P_8021Q));
vlan_filter_drop_vids(vlan_info, htons(ETH_P_8021Q));
err = vlan_filter_push_vids(vlan_info, htons(ETH_P_8021AD));
vlan_filter_drop_vids(vlan_info, htons(ETH_P_8021AD));
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(real_dev->vlan_info);
BUG_ON(!vlan_info);
if (vlan_info)
return vlan_group_get_device(&vlan_info->grp,
int vlan_filter_push_vids(struct vlan_info *vlan_info, __be16 proto);
void vlan_filter_drop_vids(struct vlan_info *vlan_info, __be16 proto);
struct vlan_info *vlan_info = rcu_dereference_rtnl(real_dev->vlan_info);
static void vlan_info_free(struct vlan_info *vlan_info)
vlan_group_free(&vlan_info->grp);
kfree(vlan_info);
vlan_info_free(container_of(rcu, struct vlan_info, rcu));
static struct vlan_info *vlan_info_alloc(struct net_device *dev)
struct vlan_info *vlan_info;
vlan_info = kzalloc_obj(struct vlan_info);
if (!vlan_info)
vlan_info->real_dev = dev;
INIT_LIST_HEAD(&vlan_info->vid_list);
return vlan_info;
static struct vlan_vid_info *vlan_vid_info_get(struct vlan_info *vlan_info,
list_for_each_entry(vid_info, &vlan_info->vid_list, list) {
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(dev->vlan_info);
if (!vlan_info)
list_for_each_entry(vid_info, &vlan_info->vid_list, list) {
vdev = vlan_group_get_device(&vlan_info->grp, vid_info->proto,
int vlan_filter_push_vids(struct vlan_info *vlan_info, __be16 proto)
struct net_device *real_dev = vlan_info->real_dev;
list_for_each_entry(vlan_vid_info, &vlan_info->vid_list, list) {
&vlan_info->vid_list, list) {
void vlan_filter_drop_vids(struct vlan_info *vlan_info, __be16 proto)
list_for_each_entry(vlan_vid_info, &vlan_info->vid_list, list)
vlan_kill_rx_filter_info(vlan_info->real_dev,
static int __vlan_vid_add(struct vlan_info *vlan_info, __be16 proto, u16 vid,
struct net_device *dev = vlan_info->real_dev;
list_add(&vid_info->list, &vlan_info->vid_list);
vlan_info->nr_vids++;
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(dev->vlan_info);
if (!vlan_info) {
vlan_info = vlan_info_alloc(dev);
if (!vlan_info)
vid_info = vlan_vid_info_get(vlan_info, proto, vid);
err = __vlan_vid_add(vlan_info, proto, vid, &vid_info);
rcu_assign_pointer(dev->vlan_info, vlan_info);
kfree(vlan_info);
static void __vlan_vid_del(struct vlan_info *vlan_info,
struct net_device *dev = vlan_info->real_dev;
vlan_info->nr_vids--;
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(dev->vlan_info);
if (!vlan_info)
vid_info = vlan_vid_info_get(vlan_info, proto, vid);
__vlan_vid_del(vlan_info, vid_info);
if (vlan_info->nr_vids == 0) {
RCU_INIT_POINTER(dev->vlan_info, NULL);
call_rcu(&vlan_info->rcu, vlan_info_rcu_free);
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(by_dev->vlan_info);
if (!vlan_info)
list_for_each_entry(vid_info, &vlan_info->vid_list, list) {
&vlan_info->vid_list,
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(by_dev->vlan_info);
if (!vlan_info)
list_for_each_entry(vid_info, &vlan_info->vid_list, list) {
struct vlan_info *vlan_info;
vlan_info = rtnl_dereference(dev->vlan_info);
if (!vlan_info)
return vlan_info->grp.nr_vlan_devs ? true : false;
struct vlan_info *vlan_info = rcu_dereference(dev->vlan_info);
if (vlan_info) {
return vlan_group_get_device(&vlan_info->grp,