|
@@ -3003,6 +3003,15 @@ int __hw_addr_sync(struct netdev_hw_addr_list *to_list,
|
|
|
struct netdev_hw_addr_list *from_list, int addr_len);
|
|
|
void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,
|
|
|
struct netdev_hw_addr_list *from_list, int addr_len);
|
|
|
+int __hw_addr_sync_dev(struct netdev_hw_addr_list *list,
|
|
|
+ struct net_device *dev,
|
|
|
+ int (*sync)(struct net_device *, const unsigned char *),
|
|
|
+ int (*unsync)(struct net_device *,
|
|
|
+ const unsigned char *));
|
|
|
+void __hw_addr_unsync_dev(struct netdev_hw_addr_list *list,
|
|
|
+ struct net_device *dev,
|
|
|
+ int (*unsync)(struct net_device *,
|
|
|
+ const unsigned char *));
|
|
|
void __hw_addr_init(struct netdev_hw_addr_list *list);
|
|
|
|
|
|
/* Functions used for device addresses handling */
|
|
@@ -3023,6 +3032,38 @@ void dev_uc_unsync(struct net_device *to, struct net_device *from);
|
|
|
void dev_uc_flush(struct net_device *dev);
|
|
|
void dev_uc_init(struct net_device *dev);
|
|
|
|
|
|
+/**
|
|
|
+ * __dev_uc_sync - Synchonize device's unicast list
|
|
|
+ * @dev: device to sync
|
|
|
+ * @sync: function to call if address should be added
|
|
|
+ * @unsync: function to call if address should be removed
|
|
|
+ *
|
|
|
+ * Add newly added addresses to the interface, and release
|
|
|
+ * addresses that have been deleted.
|
|
|
+ **/
|
|
|
+static inline int __dev_uc_sync(struct net_device *dev,
|
|
|
+ int (*sync)(struct net_device *,
|
|
|
+ const unsigned char *),
|
|
|
+ int (*unsync)(struct net_device *,
|
|
|
+ const unsigned char *))
|
|
|
+{
|
|
|
+ return __hw_addr_sync_dev(&dev->uc, dev, sync, unsync);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * __dev_uc_unsync - Remove synchonized addresses from device
|
|
|
+ * @dev: device to sync
|
|
|
+ * @unsync: function to call if address should be removed
|
|
|
+ *
|
|
|
+ * Remove all addresses that were added to the device by dev_uc_sync().
|
|
|
+ **/
|
|
|
+static inline void __dev_uc_unsync(struct net_device *dev,
|
|
|
+ int (*unsync)(struct net_device *,
|
|
|
+ const unsigned char *))
|
|
|
+{
|
|
|
+ __hw_addr_unsync_dev(&dev->uc, dev, unsync);
|
|
|
+}
|
|
|
+
|
|
|
/* Functions used for multicast addresses handling */
|
|
|
int dev_mc_add(struct net_device *dev, const unsigned char *addr);
|
|
|
int dev_mc_add_global(struct net_device *dev, const unsigned char *addr);
|
|
@@ -3035,6 +3076,38 @@ void dev_mc_unsync(struct net_device *to, struct net_device *from);
|
|
|
void dev_mc_flush(struct net_device *dev);
|
|
|
void dev_mc_init(struct net_device *dev);
|
|
|
|
|
|
+/**
|
|
|
+ * __dev_mc_sync - Synchonize device's multicast list
|
|
|
+ * @dev: device to sync
|
|
|
+ * @sync: function to call if address should be added
|
|
|
+ * @unsync: function to call if address should be removed
|
|
|
+ *
|
|
|
+ * Add newly added addresses to the interface, and release
|
|
|
+ * addresses that have been deleted.
|
|
|
+ **/
|
|
|
+static inline int __dev_mc_sync(struct net_device *dev,
|
|
|
+ int (*sync)(struct net_device *,
|
|
|
+ const unsigned char *),
|
|
|
+ int (*unsync)(struct net_device *,
|
|
|
+ const unsigned char *))
|
|
|
+{
|
|
|
+ return __hw_addr_sync_dev(&dev->mc, dev, sync, unsync);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * __dev_mc_unsync - Remove synchonized addresses from device
|
|
|
+ * @dev: device to sync
|
|
|
+ * @unsync: function to call if address should be removed
|
|
|
+ *
|
|
|
+ * Remove all addresses that were added to the device by dev_mc_sync().
|
|
|
+ **/
|
|
|
+static inline void __dev_mc_unsync(struct net_device *dev,
|
|
|
+ int (*unsync)(struct net_device *,
|
|
|
+ const unsigned char *))
|
|
|
+{
|
|
|
+ __hw_addr_unsync_dev(&dev->mc, dev, unsync);
|
|
|
+}
|
|
|
+
|
|
|
/* Functions used for secondary unicast and multicast support */
|
|
|
void dev_set_rx_mode(struct net_device *dev);
|
|
|
void __dev_set_rx_mode(struct net_device *dev);
|