xen-netback: add support for multicast control
[firefly-linux-kernel-4.4.55.git] / drivers / net / xen-netback / common.h
index c6cb85a85c896fd6dcab466fa80f6dc2b81e8e04..6dc76c1e807b4d0ad45ae0bbbd1ba1310ed33239 100644 (file)
@@ -210,12 +210,22 @@ enum state_bit_shift {
        VIF_STATUS_CONNECTED,
 };
 
+struct xenvif_mcast_addr {
+       struct list_head entry;
+       struct rcu_head rcu;
+       u8 addr[6];
+};
+
+#define XEN_NETBK_MCAST_MAX 64
+
 struct xenvif {
        /* Unique identifier for this interface. */
        domid_t          domid;
        unsigned int     handle;
 
        u8               fe_dev_addr[6];
+       struct list_head fe_mcast_addr;
+       unsigned int     fe_mcast_count;
 
        /* Frontend feature information. */
        int gso_mask;
@@ -224,6 +234,7 @@ struct xenvif {
        u8 can_sg:1;
        u8 ip_csum:1;
        u8 ipv6_csum:1;
+       u8 multicast_control:1;
 
        /* Is this interface disabled? True when backend discovers
         * frontend is rogue.
@@ -341,4 +352,8 @@ void xenvif_skb_zerocopy_prepare(struct xenvif_queue *queue,
                                 struct sk_buff *skb);
 void xenvif_skb_zerocopy_complete(struct xenvif_queue *queue);
 
+/* Multicast control */
+bool xenvif_mcast_match(struct xenvif *vif, const u8 *addr);
+void xenvif_mcast_addr_list_free(struct xenvif *vif);
+
 #endif /* __XEN_NETBACK__COMMON_H__ */