You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: MAINTAINERS drivers/net/wireless/iwlwifi/pcie/trans.c The iwlwifi conflict was resolved by keeping the code added in 'net' that turns off the buggy chip feature. The MAINTAINERS conflict was merely overlapping changes, one change updated all the wireless web site URLs and the other changed some GIT trees to be Johannes's instead of John's. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
+10
-2
@@ -1800,6 +1800,9 @@ F: include/linux/cfag12864b.h
|
||||
CFG80211 and NL80211
|
||||
M: Johannes Berg <johannes@sipsolutions.net>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
W: http://wireless.kernel.org/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
|
||||
S: Maintained
|
||||
F: include/linux/nl80211.h
|
||||
F: include/net/cfg80211.h
|
||||
@@ -4340,7 +4343,8 @@ MAC80211
|
||||
M: Johannes Berg <johannes@sipsolutions.net>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
W: http://wireless.kernel.org/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
|
||||
S: Maintained
|
||||
F: Documentation/networking/mac80211-injection.txt
|
||||
F: include/net/mac80211.h
|
||||
@@ -4351,7 +4355,8 @@ M: Stefano Brivio <stefano.brivio@polimi.it>
|
||||
M: Mattias Nissler <mattias.nissler@gmx.de>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
W: http://wireless.kernel.org/en/developers/Documentation/mac80211/RateControl/PID
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
|
||||
S: Maintained
|
||||
F: net/mac80211/rc80211_pid*
|
||||
|
||||
@@ -5695,6 +5700,9 @@ F: include/linux/remoteproc.h
|
||||
RFKILL
|
||||
M: Johannes Berg <johannes@sipsolutions.net>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
W: http://wireless.kernel.org/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git
|
||||
S: Maintained
|
||||
F: Documentation/rfkill.txt
|
||||
F: net/rfkill/
|
||||
|
||||
@@ -232,17 +232,19 @@ void __devinit bcma_core_pci_init(struct bcma_drv_pci *pc)
|
||||
int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core,
|
||||
bool enable)
|
||||
{
|
||||
struct pci_dev *pdev = pc->core->bus->host_pci;
|
||||
struct pci_dev *pdev;
|
||||
u32 coremask, tmp;
|
||||
int err = 0;
|
||||
|
||||
if (core->bus->hosttype != BCMA_HOSTTYPE_PCI) {
|
||||
if (!pc || core->bus->hosttype != BCMA_HOSTTYPE_PCI) {
|
||||
/* This bcma device is not on a PCI host-bus. So the IRQs are
|
||||
* not routed through the PCI core.
|
||||
* So we must not enable routing through the PCI core. */
|
||||
goto out;
|
||||
}
|
||||
|
||||
pdev = pc->core->bus->host_pci;
|
||||
|
||||
err = pci_read_config_dword(pdev, BCMA_PCI_IRQMASK, &tmp);
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
#include <net/route.h>
|
||||
#include <net/net_namespace.h>
|
||||
#include <net/netns/generic.h>
|
||||
#include <net/pkt_sched.h>
|
||||
#include "bonding.h"
|
||||
#include "bond_3ad.h"
|
||||
#include "bond_alb.h"
|
||||
@@ -381,8 +382,6 @@ struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr)
|
||||
return next;
|
||||
}
|
||||
|
||||
#define bond_queue_mapping(skb) (*(u16 *)((skb)->cb))
|
||||
|
||||
/**
|
||||
* bond_dev_queue_xmit - Prepare skb for xmit.
|
||||
*
|
||||
@@ -395,7 +394,9 @@ int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb,
|
||||
{
|
||||
skb->dev = slave_dev;
|
||||
|
||||
skb->queue_mapping = bond_queue_mapping(skb);
|
||||
BUILD_BUG_ON(sizeof(skb->queue_mapping) !=
|
||||
sizeof(qdisc_skb_cb(skb)->bond_queue_mapping));
|
||||
skb->queue_mapping = qdisc_skb_cb(skb)->bond_queue_mapping;
|
||||
|
||||
if (unlikely(netpoll_tx_running(slave_dev)))
|
||||
bond_netpoll_send_skb(bond_get_slave_by_dev(bond, slave_dev), skb);
|
||||
@@ -4174,7 +4175,7 @@ static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb)
|
||||
/*
|
||||
* Save the original txq to restore before passing to the driver
|
||||
*/
|
||||
bond_queue_mapping(skb) = skb->queue_mapping;
|
||||
qdisc_skb_cb(skb)->bond_queue_mapping = skb->queue_mapping;
|
||||
|
||||
if (unlikely(txq >= dev->real_num_tx_queues)) {
|
||||
do {
|
||||
|
||||
@@ -1082,8 +1082,12 @@ static ssize_t bonding_store_primary(struct device *d,
|
||||
}
|
||||
}
|
||||
|
||||
pr_info("%s: Unable to set %.*s as primary slave.\n",
|
||||
bond->dev->name, (int)strlen(buf) - 1, buf);
|
||||
strncpy(bond->params.primary, ifname, IFNAMSIZ);
|
||||
bond->params.primary[IFNAMSIZ - 1] = 0;
|
||||
|
||||
pr_info("%s: Recording %s as primary, "
|
||||
"but it has not been enslaved to %s yet.\n",
|
||||
bond->dev->name, ifname, bond->dev->name);
|
||||
out:
|
||||
write_unlock_bh(&bond->curr_slave_lock);
|
||||
read_unlock(&bond->lock);
|
||||
|
||||
+3
-1
@@ -187,8 +187,10 @@ static int __init dummy_init_module(void)
|
||||
rtnl_lock();
|
||||
err = __rtnl_link_register(&dummy_link_ops);
|
||||
|
||||
for (i = 0; i < numdummies && !err; i++)
|
||||
for (i = 0; i < numdummies && !err; i++) {
|
||||
err = dummy_init_one();
|
||||
cond_resched();
|
||||
}
|
||||
if (err < 0)
|
||||
__rtnl_link_unregister(&dummy_link_ops);
|
||||
rtnl_unlock();
|
||||
|
||||
@@ -14275,7 +14275,8 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
|
||||
}
|
||||
}
|
||||
|
||||
if (tg3_flag(tp, 5755_PLUS))
|
||||
if (tg3_flag(tp, 5755_PLUS) ||
|
||||
GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906)
|
||||
tg3_flag_set(tp, SHORT_DMA_BUG);
|
||||
|
||||
if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719)
|
||||
|
||||
@@ -736,6 +736,8 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
|
||||
|
||||
copied = make_tx_wrbs(adapter, txq, skb, wrb_cnt, dummy_wrb);
|
||||
if (copied) {
|
||||
int gso_segs = skb_shinfo(skb)->gso_segs;
|
||||
|
||||
/* record the sent skb in the sent_skb table */
|
||||
BUG_ON(txo->sent_skb_list[start]);
|
||||
txo->sent_skb_list[start] = skb;
|
||||
@@ -753,8 +755,7 @@ static netdev_tx_t be_xmit(struct sk_buff *skb,
|
||||
|
||||
be_txq_notify(adapter, txq->id, wrb_cnt);
|
||||
|
||||
be_tx_stats_update(txo, wrb_cnt, copied,
|
||||
skb_shinfo(skb)->gso_segs, stopped);
|
||||
be_tx_stats_update(txo, wrb_cnt, copied, gso_segs, stopped);
|
||||
} else {
|
||||
txq->head = start;
|
||||
dev_kfree_skb_any(skb);
|
||||
|
||||
@@ -4381,10 +4381,12 @@ static int sky2_set_features(struct net_device *dev, netdev_features_t features)
|
||||
struct sky2_port *sky2 = netdev_priv(dev);
|
||||
netdev_features_t changed = dev->features ^ features;
|
||||
|
||||
if (changed & NETIF_F_RXCSUM) {
|
||||
bool on = features & NETIF_F_RXCSUM;
|
||||
sky2_write32(sky2->hw, Q_ADDR(rxqaddr[sky2->port], Q_CSR),
|
||||
on ? BMU_ENA_RX_CHKSUM : BMU_DIS_RX_CHKSUM);
|
||||
if ((changed & NETIF_F_RXCSUM) &&
|
||||
!(sky2->hw->flags & SKY2_HW_NEW_LE)) {
|
||||
sky2_write32(sky2->hw,
|
||||
Q_ADDR(rxqaddr[sky2->port], Q_CSR),
|
||||
(features & NETIF_F_RXCSUM)
|
||||
? BMU_ENA_RX_CHKSUM : BMU_DIS_RX_CHKSUM);
|
||||
}
|
||||
|
||||
if (changed & NETIF_F_RXHASH)
|
||||
|
||||
@@ -946,16 +946,16 @@ static void __lpc_handle_xmit(struct net_device *ndev)
|
||||
/* Update stats */
|
||||
ndev->stats.tx_packets++;
|
||||
ndev->stats.tx_bytes += skb->len;
|
||||
|
||||
/* Free buffer */
|
||||
dev_kfree_skb_irq(skb);
|
||||
}
|
||||
dev_kfree_skb_irq(skb);
|
||||
|
||||
txcidx = readl(LPC_ENET_TXCONSUMEINDEX(pldat->net_base));
|
||||
}
|
||||
|
||||
if (netif_queue_stopped(ndev))
|
||||
netif_wake_queue(ndev);
|
||||
if (pldat->num_used_tx_buffs <= ENET_TX_DESC/2) {
|
||||
if (netif_queue_stopped(ndev))
|
||||
netif_wake_queue(ndev);
|
||||
}
|
||||
}
|
||||
|
||||
static int __lpc_handle_recv(struct net_device *ndev, int budget)
|
||||
@@ -1320,6 +1320,7 @@ static const struct net_device_ops lpc_netdev_ops = {
|
||||
.ndo_set_rx_mode = lpc_eth_set_multicast_list,
|
||||
.ndo_do_ioctl = lpc_eth_ioctl,
|
||||
.ndo_set_mac_address = lpc_set_mac_address,
|
||||
.ndo_change_mtu = eth_change_mtu,
|
||||
};
|
||||
|
||||
static int lpc_eth_drv_probe(struct platform_device *pdev)
|
||||
|
||||
@@ -5889,11 +5889,7 @@ static void rtl_slow_event_work(struct rtl8169_private *tp)
|
||||
if (status & LinkChg)
|
||||
__rtl8169_check_link_status(dev, tp, tp->mmio_addr, true);
|
||||
|
||||
napi_disable(&tp->napi);
|
||||
rtl_irq_disable(tp);
|
||||
|
||||
napi_enable(&tp->napi);
|
||||
napi_schedule(&tp->napi);
|
||||
rtl_irq_enable_all(tp);
|
||||
}
|
||||
|
||||
static void rtl_task(struct work_struct *work)
|
||||
|
||||
@@ -15,6 +15,7 @@ if STMMAC_ETH
|
||||
config STMMAC_PLATFORM
|
||||
bool "STMMAC Platform bus support"
|
||||
depends on STMMAC_ETH
|
||||
default y
|
||||
---help---
|
||||
This selects the platform specific bus support for
|
||||
the stmmac device driver. This is the driver used
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <linux/clk.h>
|
||||
#include <linux/stmmac.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/pci.h>
|
||||
#include "common.h"
|
||||
#ifdef CONFIG_STMMAC_TIMER
|
||||
#include "stmmac_timer.h"
|
||||
@@ -95,8 +96,6 @@ extern int stmmac_mdio_register(struct net_device *ndev);
|
||||
extern void stmmac_set_ethtool_ops(struct net_device *netdev);
|
||||
extern const struct stmmac_desc_ops enh_desc_ops;
|
||||
extern const struct stmmac_desc_ops ndesc_ops;
|
||||
extern struct pci_driver stmmac_pci_driver;
|
||||
extern struct platform_driver stmmac_pltfr_driver;
|
||||
int stmmac_freeze(struct net_device *ndev);
|
||||
int stmmac_restore(struct net_device *ndev);
|
||||
int stmmac_resume(struct net_device *ndev);
|
||||
@@ -110,7 +109,7 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device,
|
||||
static inline int stmmac_clk_enable(struct stmmac_priv *priv)
|
||||
{
|
||||
if (!IS_ERR(priv->stmmac_clk))
|
||||
return clk_enable(priv->stmmac_clk);
|
||||
return clk_prepare_enable(priv->stmmac_clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -120,7 +119,7 @@ static inline void stmmac_clk_disable(struct stmmac_priv *priv)
|
||||
if (IS_ERR(priv->stmmac_clk))
|
||||
return;
|
||||
|
||||
clk_disable(priv->stmmac_clk);
|
||||
clk_disable_unprepare(priv->stmmac_clk);
|
||||
}
|
||||
static inline int stmmac_clk_get(struct stmmac_priv *priv)
|
||||
{
|
||||
@@ -144,3 +143,60 @@ static inline int stmmac_clk_get(struct stmmac_priv *priv)
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_HAVE_CLK */
|
||||
|
||||
|
||||
#ifdef CONFIG_STMMAC_PLATFORM
|
||||
extern struct platform_driver stmmac_pltfr_driver;
|
||||
static inline int stmmac_register_platform(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = platform_driver_register(&stmmac_pltfr_driver);
|
||||
if (err)
|
||||
pr_err("stmmac: failed to register the platform driver\n");
|
||||
|
||||
return err;
|
||||
}
|
||||
static inline void stmmac_unregister_platform(void)
|
||||
{
|
||||
platform_driver_register(&stmmac_pltfr_driver);
|
||||
}
|
||||
#else
|
||||
static inline int stmmac_register_platform(void)
|
||||
{
|
||||
pr_debug("stmmac: do not register the platf driver\n");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline void stmmac_unregister_platform(void)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_STMMAC_PLATFORM */
|
||||
|
||||
#ifdef CONFIG_STMMAC_PCI
|
||||
extern struct pci_driver stmmac_pci_driver;
|
||||
static inline int stmmac_register_pci(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = pci_register_driver(&stmmac_pci_driver);
|
||||
if (err)
|
||||
pr_err("stmmac: failed to register the PCI driver\n");
|
||||
|
||||
return err;
|
||||
}
|
||||
static inline void stmmac_unregister_pci(void)
|
||||
{
|
||||
pci_unregister_driver(&stmmac_pci_driver);
|
||||
}
|
||||
#else
|
||||
static inline int stmmac_register_pci(void)
|
||||
{
|
||||
pr_debug("stmmac: do not register the PCI driver\n");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline void stmmac_unregister_pci(void)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_STMMAC_PCI */
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/prefetch.h>
|
||||
#include <linux/pci.h>
|
||||
#ifdef CONFIG_STMMAC_DEBUG_FS
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/seq_file.h>
|
||||
@@ -2093,25 +2092,29 @@ int stmmac_restore(struct net_device *ndev)
|
||||
}
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
/* Driver can be configured w/ and w/ both PCI and Platf drivers
|
||||
* depending on the configuration selected.
|
||||
*/
|
||||
static int __init stmmac_init(void)
|
||||
{
|
||||
int err = 0;
|
||||
int err_plt = 0;
|
||||
int err_pci = 0;
|
||||
|
||||
err = platform_driver_register(&stmmac_pltfr_driver);
|
||||
err_plt = stmmac_register_platform();
|
||||
err_pci = stmmac_register_pci();
|
||||
|
||||
if (!err) {
|
||||
err = pci_register_driver(&stmmac_pci_driver);
|
||||
if (err)
|
||||
platform_driver_unregister(&stmmac_pltfr_driver);
|
||||
if ((err_pci) && (err_plt)) {
|
||||
pr_err("stmmac: driver registration failed\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit stmmac_exit(void)
|
||||
{
|
||||
pci_unregister_driver(&stmmac_pci_driver);
|
||||
platform_driver_unregister(&stmmac_pltfr_driver);
|
||||
stmmac_unregister_platform();
|
||||
stmmac_unregister_pci();
|
||||
}
|
||||
|
||||
module_init(stmmac_init);
|
||||
|
||||
@@ -3598,7 +3598,6 @@ static int release_tx_packet(struct niu *np, struct tx_ring_info *rp, int idx)
|
||||
static void niu_tx_work(struct niu *np, struct tx_ring_info *rp)
|
||||
{
|
||||
struct netdev_queue *txq;
|
||||
unsigned int tx_bytes;
|
||||
u16 pkt_cnt, tmp;
|
||||
int cons, index;
|
||||
u64 cs;
|
||||
@@ -3621,18 +3620,12 @@ static void niu_tx_work(struct niu *np, struct tx_ring_info *rp)
|
||||
netif_printk(np, tx_done, KERN_DEBUG, np->dev,
|
||||
"%s() pkt_cnt[%u] cons[%d]\n", __func__, pkt_cnt, cons);
|
||||
|
||||
tx_bytes = 0;
|
||||
tmp = pkt_cnt;
|
||||
while (tmp--) {
|
||||
tx_bytes += rp->tx_buffs[cons].skb->len;
|
||||
while (pkt_cnt--)
|
||||
cons = release_tx_packet(np, rp, cons);
|
||||
}
|
||||
|
||||
rp->cons = cons;
|
||||
smp_mb();
|
||||
|
||||
netdev_tx_completed_queue(txq, pkt_cnt, tx_bytes);
|
||||
|
||||
out:
|
||||
if (unlikely(netif_tx_queue_stopped(txq) &&
|
||||
(niu_tx_avail(rp) > NIU_TX_WAKEUP_THRESH(rp)))) {
|
||||
@@ -4333,7 +4326,6 @@ static void niu_free_channels(struct niu *np)
|
||||
struct tx_ring_info *rp = &np->tx_rings[i];
|
||||
|
||||
niu_free_tx_ring_info(np, rp);
|
||||
netdev_tx_reset_queue(netdev_get_tx_queue(np->dev, i));
|
||||
}
|
||||
kfree(np->tx_rings);
|
||||
np->tx_rings = NULL;
|
||||
@@ -6739,8 +6731,6 @@ static netdev_tx_t niu_start_xmit(struct sk_buff *skb,
|
||||
prod = NEXT_TX(rp, prod);
|
||||
}
|
||||
|
||||
netdev_tx_sent_queue(txq, skb->len);
|
||||
|
||||
if (prod < rp->prod)
|
||||
rp->wrap_bit ^= TX_RING_KICK_WRAP;
|
||||
rp->prod = prod;
|
||||
|
||||
@@ -7,6 +7,8 @@ config TILE_NET
|
||||
depends on TILE
|
||||
default y
|
||||
select CRC32
|
||||
select TILE_GXIO_MPIPE if TILEGX
|
||||
select HIGH_RES_TIMERS if TILEGX
|
||||
---help---
|
||||
This is a standard Linux network device driver for the
|
||||
on-chip Tilera Gigabit Ethernet and XAUI interfaces.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
obj-$(CONFIG_TILE_NET) += tile_net.o
|
||||
ifdef CONFIG_TILEGX
|
||||
tile_net-objs := tilegx.o mpipe.o iorpc_mpipe.o dma_queue.o
|
||||
tile_net-y := tilegx.o
|
||||
else
|
||||
tile_net-objs := tilepro.o
|
||||
tile_net-y := tilepro.o
|
||||
endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -99,7 +99,7 @@ static int of_mdio_bus_match(struct device *dev, void *mdio_bus_np)
|
||||
}
|
||||
/**
|
||||
* of_mdio_find_bus - Given an mii_bus node, find the mii_bus.
|
||||
* @mdio_np: Pointer to the mii_bus.
|
||||
* @mdio_bus_np: Pointer to the mii_bus.
|
||||
*
|
||||
* Returns a pointer to the mii_bus, or NULL if none found.
|
||||
*
|
||||
|
||||
@@ -42,7 +42,8 @@ module_param(gso, bool, 0444);
|
||||
#define VIRTNET_DRIVER_VERSION "1.0.0"
|
||||
|
||||
struct virtnet_stats {
|
||||
struct u64_stats_sync syncp;
|
||||
struct u64_stats_sync tx_syncp;
|
||||
struct u64_stats_sync rx_syncp;
|
||||
u64 tx_bytes;
|
||||
u64 tx_packets;
|
||||
|
||||
@@ -300,10 +301,10 @@ static void receive_buf(struct net_device *dev, void *buf, unsigned int len)
|
||||
|
||||
hdr = skb_vnet_hdr(skb);
|
||||
|
||||
u64_stats_update_begin(&stats->syncp);
|
||||
u64_stats_update_begin(&stats->rx_syncp);
|
||||
stats->rx_bytes += skb->len;
|
||||
stats->rx_packets++;
|
||||
u64_stats_update_end(&stats->syncp);
|
||||
u64_stats_update_end(&stats->rx_syncp);
|
||||
|
||||
if (hdr->hdr.flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) {
|
||||
pr_debug("Needs csum!\n");
|
||||
@@ -565,10 +566,10 @@ static unsigned int free_old_xmit_skbs(struct virtnet_info *vi)
|
||||
while ((skb = virtqueue_get_buf(vi->svq, &len)) != NULL) {
|
||||
pr_debug("Sent skb %p\n", skb);
|
||||
|
||||
u64_stats_update_begin(&stats->syncp);
|
||||
u64_stats_update_begin(&stats->tx_syncp);
|
||||
stats->tx_bytes += skb->len;
|
||||
stats->tx_packets++;
|
||||
u64_stats_update_end(&stats->syncp);
|
||||
u64_stats_update_end(&stats->tx_syncp);
|
||||
|
||||
tot_sgs += skb_vnet_hdr(skb)->num_sg;
|
||||
dev_kfree_skb_any(skb);
|
||||
@@ -703,12 +704,16 @@ static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev,
|
||||
u64 tpackets, tbytes, rpackets, rbytes;
|
||||
|
||||
do {
|
||||
start = u64_stats_fetch_begin(&stats->syncp);
|
||||
start = u64_stats_fetch_begin(&stats->tx_syncp);
|
||||
tpackets = stats->tx_packets;
|
||||
tbytes = stats->tx_bytes;
|
||||
} while (u64_stats_fetch_retry(&stats->tx_syncp, start));
|
||||
|
||||
do {
|
||||
start = u64_stats_fetch_begin(&stats->rx_syncp);
|
||||
rpackets = stats->rx_packets;
|
||||
rbytes = stats->rx_bytes;
|
||||
} while (u64_stats_fetch_retry(&stats->syncp, start));
|
||||
} while (u64_stats_fetch_retry(&stats->rx_syncp, start));
|
||||
|
||||
tot->rx_packets += rpackets;
|
||||
tot->tx_packets += tpackets;
|
||||
|
||||
@@ -877,6 +877,10 @@ struct b43_wl {
|
||||
* from the mac80211 subsystem. */
|
||||
u16 mac80211_initially_registered_queues;
|
||||
|
||||
/* Set this if we call ieee80211_register_hw() and check if we call
|
||||
* ieee80211_unregister_hw(). */
|
||||
bool hw_registred;
|
||||
|
||||
/* We can only have one operating interface (802.11 core)
|
||||
* at a time. General information about this interface follows.
|
||||
*/
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user