Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93e2c32b authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller
Browse files

net: add rx_handler data pointer



Add possibility to register rx_handler data pointer along with a rx_handler.

Signed-off-by: default avatarJiri Pirko <jpirko@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 91d2c34a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -532,7 +532,7 @@ static int macvlan_port_create(struct net_device *dev)
		INIT_HLIST_HEAD(&port->vlan_hash[i]);
	rcu_assign_pointer(dev->macvlan_port, port);

	err = netdev_rx_handler_register(dev, macvlan_handle_frame);
	err = netdev_rx_handler_register(dev, macvlan_handle_frame, NULL);
	if (err) {
		rcu_assign_pointer(dev->macvlan_port, NULL);
		kfree(port);
+3 −1
Original line number Diff line number Diff line
@@ -979,6 +979,7 @@ struct net_device {

	struct netdev_queue	rx_queue;
	rx_handler_func_t	*rx_handler;
	void			*rx_handler_data;

	struct netdev_queue	*_tx ____cacheline_aligned_in_smp;

@@ -1712,7 +1713,8 @@ static inline void napi_free_frags(struct napi_struct *napi)
}

extern int netdev_rx_handler_register(struct net_device *dev,
				      rx_handler_func_t *rx_handler);
				      rx_handler_func_t *rx_handler,
				      void *rx_handler_data);
extern void netdev_rx_handler_unregister(struct net_device *dev);

extern void		netif_nit_deliver(struct sk_buff *skb);
+1 −1
Original line number Diff line number Diff line
@@ -433,7 +433,7 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)

	rcu_assign_pointer(dev->br_port, p);

	err = netdev_rx_handler_register(dev, br_handle_frame);
	err = netdev_rx_handler_register(dev, br_handle_frame, NULL);
	if (err)
		goto err4;

+5 −1
Original line number Diff line number Diff line
@@ -2703,6 +2703,7 @@ void netif_nit_deliver(struct sk_buff *skb)
 *	netdev_rx_handler_register - register receive handler
 *	@dev: device to register a handler for
 *	@rx_handler: receive handler to register
 *	@rx_handler_data: data pointer that is used by rx handler
 *
 *	Register a receive hander for a device. This handler will then be
 *	called from __netif_receive_skb. A negative errno code is returned
@@ -2711,13 +2712,15 @@ void netif_nit_deliver(struct sk_buff *skb)
 *	The caller must hold the rtnl_mutex.
 */
int netdev_rx_handler_register(struct net_device *dev,
			       rx_handler_func_t *rx_handler)
			       rx_handler_func_t *rx_handler,
			       void *rx_handler_data)
{
	ASSERT_RTNL();

	if (dev->rx_handler)
		return -EBUSY;

	rcu_assign_pointer(dev->rx_handler_data, rx_handler_data);
	rcu_assign_pointer(dev->rx_handler, rx_handler);

	return 0;
@@ -2737,6 +2740,7 @@ void netdev_rx_handler_unregister(struct net_device *dev)

	ASSERT_RTNL();
	rcu_assign_pointer(dev->rx_handler, NULL);
	rcu_assign_pointer(dev->rx_handler_data, NULL);
}
EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);