Lines Matching refs:vid_info
160 const struct vlan_vid_info *vid_info) in vlan_hw_filter_capable() argument
162 if (vid_info->proto == htons(ETH_P_8021Q) && in vlan_hw_filter_capable()
165 if (vid_info->proto == htons(ETH_P_8021AD) && in vlan_hw_filter_capable()
174 struct vlan_vid_info *vid_info; in vlan_vid_info_get() local
176 list_for_each_entry(vid_info, &vlan_info->vid_list, list) { in vlan_vid_info_get()
177 if (vid_info->proto == proto && vid_info->vid == vid) in vlan_vid_info_get()
178 return vid_info; in vlan_vid_info_get()
185 struct vlan_vid_info *vid_info; in vlan_vid_info_alloc() local
187 vid_info = kzalloc(sizeof(struct vlan_vid_info), GFP_KERNEL); in vlan_vid_info_alloc()
188 if (!vid_info) in vlan_vid_info_alloc()
190 vid_info->proto = proto; in vlan_vid_info_alloc()
191 vid_info->vid = vid; in vlan_vid_info_alloc()
193 return vid_info; in vlan_vid_info_alloc()
201 struct vlan_vid_info *vid_info; in __vlan_vid_add() local
204 vid_info = vlan_vid_info_alloc(proto, vid); in __vlan_vid_add()
205 if (!vid_info) in __vlan_vid_add()
208 if (vlan_hw_filter_capable(dev, vid_info)) { in __vlan_vid_add()
211 kfree(vid_info); in __vlan_vid_add()
215 list_add(&vid_info->list, &vlan_info->vid_list); in __vlan_vid_add()
217 *pvid_info = vid_info; in __vlan_vid_add()
224 struct vlan_vid_info *vid_info; in vlan_vid_add() local
237 vid_info = vlan_vid_info_get(vlan_info, proto, vid); in vlan_vid_add()
238 if (!vid_info) { in vlan_vid_add()
239 err = __vlan_vid_add(vlan_info, proto, vid, &vid_info); in vlan_vid_add()
243 vid_info->refcount++; in vlan_vid_add()
258 struct vlan_vid_info *vid_info) in __vlan_vid_del() argument
262 __be16 proto = vid_info->proto; in __vlan_vid_del()
263 u16 vid = vid_info->vid; in __vlan_vid_del()
266 if (vlan_hw_filter_capable(dev, vid_info)) { in __vlan_vid_del()
273 list_del(&vid_info->list); in __vlan_vid_del()
274 kfree(vid_info); in __vlan_vid_del()
281 struct vlan_vid_info *vid_info; in vlan_vid_del() local
289 vid_info = vlan_vid_info_get(vlan_info, proto, vid); in vlan_vid_del()
290 if (!vid_info) in vlan_vid_del()
292 vid_info->refcount--; in vlan_vid_del()
293 if (vid_info->refcount == 0) { in vlan_vid_del()
294 __vlan_vid_del(vlan_info, vid_info); in vlan_vid_del()
306 struct vlan_vid_info *vid_info; in vlan_vids_add_by_dev() local
316 list_for_each_entry(vid_info, &vlan_info->vid_list, list) { in vlan_vids_add_by_dev()
317 err = vlan_vid_add(dev, vid_info->proto, vid_info->vid); in vlan_vids_add_by_dev()
324 list_for_each_entry_continue_reverse(vid_info, in vlan_vids_add_by_dev()
327 vlan_vid_del(dev, vid_info->proto, vid_info->vid); in vlan_vids_add_by_dev()
337 struct vlan_vid_info *vid_info; in vlan_vids_del_by_dev() local
346 list_for_each_entry(vid_info, &vlan_info->vid_list, list) in vlan_vids_del_by_dev()
347 vlan_vid_del(dev, vid_info->proto, vid_info->vid); in vlan_vids_del_by_dev()