|
|
@@ -1455,6 +1455,7 @@ struct net_device_ops {
|
|
|
* @IFF_NO_RX_HANDLER: device doesn't support the rx_handler hook
|
|
|
* @IFF_FAILOVER: device is a failover master device
|
|
|
* @IFF_FAILOVER_SLAVE: device is lower dev of a failover master device
|
|
|
+ * @IFF_L3MDEV_RX_HANDLER: only invoke the rx handler of L3 master device
|
|
|
*/
|
|
|
enum netdev_priv_flags {
|
|
|
IFF_802_1Q_VLAN = 1<<0,
|
|
|
@@ -1486,6 +1487,7 @@ enum netdev_priv_flags {
|
|
|
IFF_NO_RX_HANDLER = 1<<26,
|
|
|
IFF_FAILOVER = 1<<27,
|
|
|
IFF_FAILOVER_SLAVE = 1<<28,
|
|
|
+ IFF_L3MDEV_RX_HANDLER = 1<<29,
|
|
|
};
|
|
|
|
|
|
#define IFF_802_1Q_VLAN IFF_802_1Q_VLAN
|
|
|
@@ -1516,6 +1518,7 @@ enum netdev_priv_flags {
|
|
|
#define IFF_NO_RX_HANDLER IFF_NO_RX_HANDLER
|
|
|
#define IFF_FAILOVER IFF_FAILOVER
|
|
|
#define IFF_FAILOVER_SLAVE IFF_FAILOVER_SLAVE
|
|
|
+#define IFF_L3MDEV_RX_HANDLER IFF_L3MDEV_RX_HANDLER
|
|
|
|
|
|
/**
|
|
|
* struct net_device - The DEVICE structure.
|
|
|
@@ -4464,6 +4467,11 @@ static inline bool netif_supports_nofcs(struct net_device *dev)
|
|
|
return dev->priv_flags & IFF_SUPP_NOFCS;
|
|
|
}
|
|
|
|
|
|
+static inline bool netif_has_l3_rx_handler(const struct net_device *dev)
|
|
|
+{
|
|
|
+ return dev->priv_flags & IFF_L3MDEV_RX_HANDLER;
|
|
|
+}
|
|
|
+
|
|
|
static inline bool netif_is_l3_master(const struct net_device *dev)
|
|
|
{
|
|
|
return dev->priv_flags & IFF_L3MDEV_MASTER;
|