diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 4b6d12c7b803b7955848fa9309d725ba09da4d79..159c7e7945f84e919a4c08d7469c72b39f34a1b4 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1311,9 +1311,10 @@ struct net_device {
 	int			iflink;
 
 	struct net_device_stats	stats;
-	atomic_long_t		rx_dropped; /* dropped packets by core network
-					     * Do not use this in drivers.
-					     */
+
+	/* dropped packets by core network, Do not use this in drivers */
+	atomic_long_t		rx_dropped;
+	atomic_long_t		tx_dropped;
 
 #ifdef CONFIG_WIRELESS_EXT
 	/* List of functions to handle Wireless Extensions (instead of ioctl).
diff --git a/net/core/dev.c b/net/core/dev.c
index 48dd323d59183a9904e35fdcd31b39981b626495..98ba581b89f066d3e5b885a8f1012f8d193e123c 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2880,6 +2880,7 @@ static int __dev_queue_xmit(struct sk_buff *skb, void *accel_priv)
 	rc = -ENETDOWN;
 	rcu_read_unlock_bh();
 
+	atomic_long_inc(&dev->tx_dropped);
 	kfree_skb(skb);
 	return rc;
 out:
@@ -6238,6 +6239,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
 		netdev_stats_to_stats64(storage, &dev->stats);
 	}
 	storage->rx_dropped += atomic_long_read(&dev->rx_dropped);
+	storage->tx_dropped += atomic_long_read(&dev->tx_dropped);
 	return storage;
 }
 EXPORT_SYMBOL(dev_get_stats);