forked from Minki/linux
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Fix netpoll OOPS in r8169, from Ville Syrjälä. 2) Fix bpf instruction alignment on powerpc et al., from Eric Dumazet. 3) Don't ignore IFLA_MTU attribute when creating new ipvlan links. From Xin Long. 4) Fix use after free in AF_PACKET, from Eric Dumazet. 5) Mis-matched RTNL unlock in xen-netfront, from Ross Lagerwall. 6) Fix VSOCK loopback on big-endian, from Claudio Imbrenda. 7) Missing RX buffer offset correction when computing DMA addresses in mvneta driver, from Antoine Tenart. 8) Fix crashes in DCCP's ccid3_hc_rx_send_feedback, from Eric Dumazet. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (34 commits) sfc: make function efx_rps_hash_bucket static strparser: Corrected typo in documentation. qmi_wwan: add support for the Dell Wireless 5821e module cxgb4: when disabling dcb set txq dcb priority to 0 net_sched: remove a bogus warning in hfsc net: dccp: switch rx_tstamp_last_feedback to monotonic clock net: dccp: avoid crash in ccid3_hc_rx_send_feedback() net: Remove depends on HAS_DMA in case of platform dependency MAINTAINERS: Add file patterns for dsa device tree bindings net: mscc: make sparse happy net: mvneta: fix the Rx desc DMA address in the Rx path Documentation: e1000: Fix docs build error Documentation: e100: Fix docs build error Documentation: e1000: Use correct heading adornment Documentation: e100: Use correct heading adornment ipv6: mcast: fix unsolicited report interval after receiving querys vhost_net: validate sock before trying to put its fd VSOCK: fix loopback on big-endian systems net: ethernet: ti: davinci_cpdma: make function cpdma_desc_pool_create static xen-netfront: Update features after registering netdev ...
This commit is contained in:
commit
6f0d349d92
@ -1,3 +1,4 @@
|
||||
==============================================================
|
||||
Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters
|
||||
==============================================================
|
||||
|
||||
@ -89,27 +90,30 @@ Additional Configurations
|
||||
Configuring the Driver on Different Distributions
|
||||
-------------------------------------------------
|
||||
|
||||
Configuring a network driver to load properly when the system is started is
|
||||
distribution dependent. Typically, the configuration process involves adding
|
||||
an alias line to /etc/modprobe.d/*.conf as well as editing other system
|
||||
startup scripts and/or configuration files. Many popular Linux
|
||||
distributions ship with tools to make these changes for you. To learn the
|
||||
proper way to configure a network device for your system, refer to your
|
||||
distribution documentation. If during this process you are asked for the
|
||||
driver or module name, the name for the Linux Base Driver for the Intel
|
||||
PRO/100 Family of Adapters is e100.
|
||||
Configuring a network driver to load properly when the system is started
|
||||
is distribution dependent. Typically, the configuration process involves
|
||||
adding an alias line to /etc/modprobe.d/*.conf as well as editing other
|
||||
system startup scripts and/or configuration files. Many popular Linux
|
||||
distributions ship with tools to make these changes for you. To learn
|
||||
the proper way to configure a network device for your system, refer to
|
||||
your distribution documentation. If during this process you are asked
|
||||
for the driver or module name, the name for the Linux Base Driver for
|
||||
the Intel PRO/100 Family of Adapters is e100.
|
||||
|
||||
As an example, if you install the e100 driver for two PRO/100 adapters
|
||||
(eth0 and eth1), add the following to a configuration file in /etc/modprobe.d/
|
||||
(eth0 and eth1), add the following to a configuration file in
|
||||
/etc/modprobe.d/::
|
||||
|
||||
alias eth0 e100
|
||||
alias eth1 e100
|
||||
|
||||
Viewing Link Messages
|
||||
---------------------
|
||||
|
||||
In order to see link messages and other Intel driver information on your
|
||||
console, you must set the dmesg level up to six. This can be done by
|
||||
entering the following on the command line before loading the e100 driver::
|
||||
entering the following on the command line before loading the e100
|
||||
driver::
|
||||
|
||||
dmesg -n 6
|
||||
|
||||
@ -118,7 +122,6 @@ Additional Configurations
|
||||
|
||||
NOTE: This setting is not saved across reboots.
|
||||
|
||||
|
||||
ethtool
|
||||
-------
|
||||
|
||||
@ -131,26 +134,25 @@ Additional Configurations
|
||||
|
||||
Enabling Wake on LAN* (WoL)
|
||||
---------------------------
|
||||
WoL is provided through the ethtool* utility. For instructions on enabling
|
||||
WoL with ethtool, refer to the ethtool man page.
|
||||
|
||||
WoL will be enabled on the system during the next shut down or reboot. For
|
||||
this driver version, in order to enable WoL, the e100 driver must be
|
||||
loaded when shutting down or rebooting the system.
|
||||
WoL is provided through the ethtool* utility. For instructions on
|
||||
enabling WoL with ethtool, refer to the ethtool man page. WoL will be
|
||||
enabled on the system during the next shut down or reboot. For this
|
||||
driver version, in order to enable WoL, the e100 driver must be loaded
|
||||
when shutting down or rebooting the system.
|
||||
|
||||
NAPI
|
||||
----
|
||||
|
||||
NAPI (Rx polling mode) is supported in the e100 driver.
|
||||
|
||||
See https://wiki.linuxfoundation.org/networking/napi for more information
|
||||
on NAPI.
|
||||
See https://wiki.linuxfoundation.org/networking/napi for more
|
||||
information on NAPI.
|
||||
|
||||
Multiple Interfaces on Same Ethernet Broadcast Network
|
||||
------------------------------------------------------
|
||||
|
||||
Due to the default ARP behavior on Linux, it is not possible to have
|
||||
one system on two IP networks in the same Ethernet broadcast domain
|
||||
Due to the default ARP behavior on Linux, it is not possible to have one
|
||||
system on two IP networks in the same Ethernet broadcast domain
|
||||
(non-partitioned switch) behave as expected. All Ethernet interfaces
|
||||
will respond to IP traffic for any IP address assigned to the system.
|
||||
This results in unbalanced receive traffic.
|
||||
|
@ -1,3 +1,4 @@
|
||||
===========================================================
|
||||
Linux* Base Driver for Intel(R) Ethernet Network Connection
|
||||
===========================================================
|
||||
|
||||
@ -356,9 +357,9 @@ Additional Configurations
|
||||
|
||||
Jumbo Frames
|
||||
------------
|
||||
Jumbo Frames support is enabled by changing the MTU to a value larger than
|
||||
the default of 1500. Use the ifconfig command to increase the MTU size.
|
||||
For example::
|
||||
Jumbo Frames support is enabled by changing the MTU to a value larger
|
||||
than the default of 1500. Use the ifconfig command to increase the MTU
|
||||
size. For example::
|
||||
|
||||
ifconfig eth<x> mtu 9000 up
|
||||
|
||||
@ -371,23 +372,23 @@ Additional Configurations
|
||||
applies to the Red Hat distributions; other distributions may store this
|
||||
setting in a different location.
|
||||
|
||||
Notes:
|
||||
Degradation in throughput performance may be observed in some Jumbo frames
|
||||
environments. If this is observed, increasing the application's socket buffer
|
||||
size and/or increasing the /proc/sys/net/ipv4/tcp_*mem entry values may help.
|
||||
See the specific application manual and /usr/src/linux*/Documentation/
|
||||
Notes: Degradation in throughput performance may be observed in some
|
||||
Jumbo frames environments. If this is observed, increasing the
|
||||
application's socket buffer size and/or increasing the
|
||||
/proc/sys/net/ipv4/tcp_*mem entry values may help. See the specific
|
||||
application manual and /usr/src/linux*/Documentation/
|
||||
networking/ip-sysctl.txt for more details.
|
||||
|
||||
- The maximum MTU setting for Jumbo Frames is 16110. This value coincides
|
||||
with the maximum Jumbo Frames size of 16128.
|
||||
- The maximum MTU setting for Jumbo Frames is 16110. This value
|
||||
coincides with the maximum Jumbo Frames size of 16128.
|
||||
|
||||
- Using Jumbo frames at 10 or 100 Mbps is not supported and may result in
|
||||
poor performance or loss of link.
|
||||
- Using Jumbo frames at 10 or 100 Mbps is not supported and may result
|
||||
in poor performance or loss of link.
|
||||
|
||||
- Adapters based on the Intel(R) 82542 and 82573V/E controller do not
|
||||
support Jumbo Frames. These correspond to the following product names:
|
||||
Intel(R) PRO/1000 Gigabit Server Adapter
|
||||
Intel(R) PRO/1000 PM Network Connection
|
||||
Intel(R) PRO/1000 Gigabit Server Adapter Intel(R) PRO/1000 PM Network
|
||||
Connection
|
||||
|
||||
ethtool
|
||||
-------
|
||||
@ -406,6 +407,7 @@ Additional Configurations
|
||||
For this driver version, in order to enable WoL, the e1000 driver must be
|
||||
loaded when shutting down or rebooting the system.
|
||||
|
||||
|
||||
Support
|
||||
=======
|
||||
|
||||
|
@ -48,7 +48,7 @@ void strp_pause(struct strparser *strp)
|
||||
Temporarily pause a stream parser. Message parsing is suspended
|
||||
and no new messages are delivered to the upper layer.
|
||||
|
||||
void strp_pause(struct strparser *strp)
|
||||
void strp_unpause(struct strparser *strp)
|
||||
|
||||
Unpause a paused stream parser.
|
||||
|
||||
|
@ -9882,6 +9882,7 @@ M: Andrew Lunn <andrew@lunn.ch>
|
||||
M: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
|
||||
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/net/dsa/
|
||||
F: net/dsa/
|
||||
F: include/net/dsa.h
|
||||
F: include/linux/dsa/
|
||||
|
@ -173,7 +173,7 @@ config SUNLANCE
|
||||
|
||||
config AMD_XGBE
|
||||
tristate "AMD 10GbE Ethernet driver"
|
||||
depends on ((OF_NET && OF_ADDRESS) || ACPI || PCI) && HAS_IOMEM && HAS_DMA
|
||||
depends on ((OF_NET && OF_ADDRESS) || ACPI || PCI) && HAS_IOMEM
|
||||
depends on X86 || ARM64 || COMPILE_TEST
|
||||
select BITREVERSE
|
||||
select CRC32
|
||||
|
@ -1,6 +1,5 @@
|
||||
config NET_XGENE_V2
|
||||
tristate "APM X-Gene SoC Ethernet-v2 Driver"
|
||||
depends on HAS_DMA
|
||||
depends on ARCH_XGENE || COMPILE_TEST
|
||||
help
|
||||
This is the Ethernet driver for the on-chip ethernet interface
|
||||
|
@ -1,6 +1,5 @@
|
||||
config NET_XGENE
|
||||
tristate "APM X-Gene SoC Ethernet Driver"
|
||||
depends on HAS_DMA
|
||||
depends on ARCH_XGENE || COMPILE_TEST
|
||||
select PHYLIB
|
||||
select MDIO_XGENE
|
||||
|
@ -24,7 +24,8 @@ config ARC_EMAC_CORE
|
||||
config ARC_EMAC
|
||||
tristate "ARC EMAC support"
|
||||
select ARC_EMAC_CORE
|
||||
depends on OF_IRQ && OF_NET && HAS_DMA && (ARC || COMPILE_TEST)
|
||||
depends on OF_IRQ && OF_NET
|
||||
depends on ARC || COMPILE_TEST
|
||||
---help---
|
||||
On some legacy ARC (Synopsys) FPGA boards such as ARCAngel4/ML50x
|
||||
non-standard on-chip ethernet device ARC EMAC 10/100 is used.
|
||||
@ -33,7 +34,8 @@ config ARC_EMAC
|
||||
config EMAC_ROCKCHIP
|
||||
tristate "Rockchip EMAC support"
|
||||
select ARC_EMAC_CORE
|
||||
depends on OF_IRQ && OF_NET && REGULATOR && HAS_DMA && (ARCH_ROCKCHIP || COMPILE_TEST)
|
||||
depends on OF_IRQ && OF_NET && REGULATOR
|
||||
depends on ARCH_ROCKCHIP || COMPILE_TEST
|
||||
---help---
|
||||
Support for Rockchip RK3036/RK3066/RK3188 EMAC ethernet controllers.
|
||||
This selects Rockchip SoC glue layer support for the
|
||||
|
@ -157,7 +157,6 @@ config BGMAC
|
||||
config BGMAC_BCMA
|
||||
tristate "Broadcom iProc GBit BCMA support"
|
||||
depends on BCMA && BCMA_HOST_SOC
|
||||
depends on HAS_DMA
|
||||
depends on BCM47XX || ARCH_BCM_5301X || COMPILE_TEST
|
||||
select BGMAC
|
||||
select PHYLIB
|
||||
@ -170,7 +169,6 @@ config BGMAC_BCMA
|
||||
|
||||
config BGMAC_PLATFORM
|
||||
tristate "Broadcom iProc GBit platform support"
|
||||
depends on HAS_DMA
|
||||
depends on ARCH_BCM_IPROC || COMPILE_TEST
|
||||
depends on OF
|
||||
select BGMAC
|
||||
|
@ -170,9 +170,6 @@ static int gem_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
|
||||
|
||||
if (delta > TSU_NSEC_MAX_VAL) {
|
||||
gem_tsu_get_time(&bp->ptp_clock_info, &now);
|
||||
if (sign)
|
||||
now = timespec64_sub(now, then);
|
||||
else
|
||||
now = timespec64_add(now, then);
|
||||
|
||||
gem_tsu_set_time(&bp->ptp_clock_info,
|
||||
|
@ -1,6 +1,6 @@
|
||||
config NET_CALXEDA_XGMAC
|
||||
tristate "Calxeda 1G/10G XGMAC Ethernet driver"
|
||||
depends on HAS_IOMEM && HAS_DMA
|
||||
depends on HAS_IOMEM
|
||||
depends on ARCH_HIGHBANK || COMPILE_TEST
|
||||
select CRC32
|
||||
help
|
||||
|
@ -263,7 +263,7 @@ static void dcb_tx_queue_prio_enable(struct net_device *dev, int enable)
|
||||
"Can't %s DCB Priority on port %d, TX Queue %d: err=%d\n",
|
||||
enable ? "set" : "unset", pi->port_id, i, -err);
|
||||
else
|
||||
txq->dcb_prio = value;
|
||||
txq->dcb_prio = enable ? value : 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
config NET_VENDOR_HISILICON
|
||||
bool "Hisilicon devices"
|
||||
default y
|
||||
depends on (OF || ACPI) && HAS_DMA
|
||||
depends on OF || ACPI
|
||||
depends on ARM || ARM64 || COMPILE_TEST
|
||||
---help---
|
||||
If you have a network (Ethernet) card belonging to this class, say Y.
|
||||
|
@ -18,8 +18,8 @@ if NET_VENDOR_MARVELL
|
||||
|
||||
config MV643XX_ETH
|
||||
tristate "Marvell Discovery (643XX) and Orion ethernet support"
|
||||
depends on (MV64X60 || PPC32 || PLAT_ORION || COMPILE_TEST) && INET
|
||||
depends on HAS_DMA
|
||||
depends on MV64X60 || PPC32 || PLAT_ORION || COMPILE_TEST
|
||||
depends on INET
|
||||
select PHYLIB
|
||||
select MVMDIO
|
||||
---help---
|
||||
@ -58,7 +58,6 @@ config MVNETA_BM_ENABLE
|
||||
config MVNETA
|
||||
tristate "Marvell Armada 370/38x/XP/37xx network interface support"
|
||||
depends on ARCH_MVEBU || COMPILE_TEST
|
||||
depends on HAS_DMA
|
||||
select MVMDIO
|
||||
select PHYLINK
|
||||
---help---
|
||||
@ -84,7 +83,6 @@ config MVNETA_BM
|
||||
config MVPP2
|
||||
tristate "Marvell Armada 375/7K/8K network interface support"
|
||||
depends on ARCH_MVEBU || COMPILE_TEST
|
||||
depends on HAS_DMA
|
||||
select MVMDIO
|
||||
select PHYLINK
|
||||
---help---
|
||||
@ -93,7 +91,7 @@ config MVPP2
|
||||
|
||||
config PXA168_ETH
|
||||
tristate "Marvell pxa168 ethernet support"
|
||||
depends on HAS_IOMEM && HAS_DMA
|
||||
depends on HAS_IOMEM
|
||||
depends on CPU_PXA168 || ARCH_BERLIN || COMPILE_TEST
|
||||
select PHYLIB
|
||||
---help---
|
||||
|
@ -1932,7 +1932,7 @@ static int mvneta_rx_swbm(struct mvneta_port *pp, int rx_todo,
|
||||
rx_bytes = rx_desc->data_size - (ETH_FCS_LEN + MVNETA_MH_SIZE);
|
||||
index = rx_desc - rxq->descs;
|
||||
data = rxq->buf_virt_addr[index];
|
||||
phys_addr = rx_desc->buf_phys_addr;
|
||||
phys_addr = rx_desc->buf_phys_addr - pp->rx_offset_correction;
|
||||
|
||||
if (!mvneta_rxq_desc_is_first_last(rx_status) ||
|
||||
(rx_status & MVNETA_RXD_ERR_SUMMARY)) {
|
||||
|
@ -30,7 +30,7 @@ config MLXSW_CORE_THERMAL
|
||||
|
||||
config MLXSW_PCI
|
||||
tristate "PCI bus implementation for Mellanox Technologies Switch ASICs"
|
||||
depends on PCI && HAS_DMA && HAS_IOMEM && MLXSW_CORE
|
||||
depends on PCI && HAS_IOMEM && MLXSW_CORE
|
||||
default m
|
||||
---help---
|
||||
This is PCI bus implementation for Mellanox Technologies Switch ASICs.
|
||||
|
@ -344,10 +344,9 @@ static int ocelot_port_stop(struct net_device *dev)
|
||||
static int ocelot_gen_ifh(u32 *ifh, struct frame_info *info)
|
||||
{
|
||||
ifh[0] = IFH_INJ_BYPASS;
|
||||
ifh[1] = (0xff00 & info->port) >> 8;
|
||||
ifh[1] = (0xf00 & info->port) >> 8;
|
||||
ifh[2] = (0xff & info->port) << 24;
|
||||
ifh[3] = IFH_INJ_POP_CNT_DISABLE | (info->cpuq << 20) |
|
||||
(info->tag_type << 16) | info->vid;
|
||||
ifh[3] = (info->tag_type << 16) | info->vid;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -370,11 +369,13 @@ static int ocelot_port_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
QS_INJ_CTRL_SOF, QS_INJ_CTRL, grp);
|
||||
|
||||
info.port = BIT(port->chip_port);
|
||||
info.cpuq = 0xff;
|
||||
info.tag_type = IFH_TAG_TYPE_C;
|
||||
info.vid = skb_vlan_tag_get(skb);
|
||||
ocelot_gen_ifh(ifh, &info);
|
||||
|
||||
for (i = 0; i < IFH_LEN; i++)
|
||||
ocelot_write_rix(ocelot, ifh[i], QS_INJ_WR, grp);
|
||||
ocelot_write_rix(ocelot, (__force u32)cpu_to_be32(ifh[i]),
|
||||
QS_INJ_WR, grp);
|
||||
|
||||
count = (skb->len + 3) / 4;
|
||||
last = skb->len % 4;
|
||||
|
@ -7148,7 +7148,7 @@ static void rtl8169_netpoll(struct net_device *dev)
|
||||
{
|
||||
struct rtl8169_private *tp = netdev_priv(dev);
|
||||
|
||||
rtl8169_interrupt(pci_irq_vector(tp->pci_dev, 0), dev);
|
||||
rtl8169_interrupt(pci_irq_vector(tp->pci_dev, 0), tp);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -17,7 +17,6 @@ if NET_VENDOR_RENESAS
|
||||
|
||||
config SH_ETH
|
||||
tristate "Renesas SuperH Ethernet support"
|
||||
depends on HAS_DMA
|
||||
depends on ARCH_RENESAS || SUPERH || COMPILE_TEST
|
||||
select CRC32
|
||||
select MII
|
||||
@ -31,7 +30,6 @@ config SH_ETH
|
||||
|
||||
config RAVB
|
||||
tristate "Renesas Ethernet AVB support"
|
||||
depends on HAS_DMA
|
||||
depends on ARCH_RENESAS || COMPILE_TEST
|
||||
select CRC32
|
||||
select MII
|
||||
|
@ -3180,6 +3180,7 @@ bool efx_rps_check_rule(struct efx_arfs_rule *rule, unsigned int filter_idx,
|
||||
return true;
|
||||
}
|
||||
|
||||
static
|
||||
struct hlist_head *efx_rps_hash_bucket(struct efx_nic *efx,
|
||||
const struct efx_filter_spec *spec)
|
||||
{
|
||||
|
@ -205,7 +205,7 @@ static void cpdma_desc_pool_destroy(struct cpdma_ctlr *ctlr)
|
||||
* devices (e.g. cpsw switches) use plain old memory. Descriptor pools
|
||||
* abstract out these details
|
||||
*/
|
||||
int cpdma_desc_pool_create(struct cpdma_ctlr *ctlr)
|
||||
static int cpdma_desc_pool_create(struct cpdma_ctlr *ctlr)
|
||||
{
|
||||
struct cpdma_params *cpdma_params = &ctlr->params;
|
||||
struct cpdma_desc_pool *pool;
|
||||
|
@ -1387,6 +1387,10 @@ static int emac_devioctl(struct net_device *ndev, struct ifreq *ifrq, int cmd)
|
||||
|
||||
static int match_first_device(struct device *dev, void *data)
|
||||
{
|
||||
if (dev->parent && dev->parent->of_node)
|
||||
return of_device_is_compatible(dev->parent->of_node,
|
||||
"ti,davinci_mdio");
|
||||
|
||||
return !strncmp(dev_name(dev), "davinci_mdio", 12);
|
||||
}
|
||||
|
||||
|
@ -594,6 +594,7 @@ int ipvlan_link_new(struct net *src_net, struct net_device *dev,
|
||||
ipvlan->phy_dev = phy_dev;
|
||||
ipvlan->dev = dev;
|
||||
ipvlan->sfeatures = IPVLAN_FEATURES;
|
||||
if (!tb[IFLA_MTU])
|
||||
ipvlan_adjust_mtu(ipvlan, phy_dev);
|
||||
INIT_LIST_HEAD(&ipvlan->addrs);
|
||||
spin_lock_init(&ipvlan->addrs_lock);
|
||||
|
@ -1246,6 +1246,7 @@ static const struct usb_device_id products[] = {
|
||||
{QMI_FIXED_INTF(0x413c, 0x81b3, 8)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */
|
||||
{QMI_FIXED_INTF(0x413c, 0x81b6, 8)}, /* Dell Wireless 5811e */
|
||||
{QMI_FIXED_INTF(0x413c, 0x81b6, 10)}, /* Dell Wireless 5811e */
|
||||
{QMI_FIXED_INTF(0x413c, 0x81d7, 1)}, /* Dell Wireless 5821e */
|
||||
{QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */
|
||||
{QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
|
||||
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
|
||||
|
@ -60,7 +60,6 @@ config BRCMFMAC_PCIE
|
||||
bool "PCIE bus interface support for FullMAC driver"
|
||||
depends on BRCMFMAC
|
||||
depends on PCI
|
||||
depends on HAS_DMA
|
||||
select BRCMFMAC_PROTO_MSGBUF
|
||||
select FW_LOADER
|
||||
---help---
|
||||
|
@ -7,7 +7,7 @@ config QTNFMAC
|
||||
config QTNFMAC_PEARL_PCIE
|
||||
tristate "Quantenna QSR10g PCIe support"
|
||||
default n
|
||||
depends on HAS_DMA && PCI && CFG80211
|
||||
depends on PCI && CFG80211
|
||||
select QTNFMAC
|
||||
select FW_LOADER
|
||||
select CRC32
|
||||
|
@ -1810,7 +1810,7 @@ static int talk_to_netback(struct xenbus_device *dev,
|
||||
err = xen_net_read_mac(dev, info->netdev->dev_addr);
|
||||
if (err) {
|
||||
xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename);
|
||||
goto out;
|
||||
goto out_unlocked;
|
||||
}
|
||||
|
||||
rtnl_lock();
|
||||
@ -1925,6 +1925,7 @@ abort_transaction_no_dev_fatal:
|
||||
xennet_destroy_queues(info);
|
||||
out:
|
||||
rtnl_unlock();
|
||||
out_unlocked:
|
||||
device_unregister(&dev->dev);
|
||||
return err;
|
||||
}
|
||||
@ -1950,10 +1951,6 @@ static int xennet_connect(struct net_device *dev)
|
||||
/* talk_to_netback() sets the correct number of queues */
|
||||
num_queues = dev->real_num_tx_queues;
|
||||
|
||||
rtnl_lock();
|
||||
netdev_update_features(dev);
|
||||
rtnl_unlock();
|
||||
|
||||
if (dev->reg_state == NETREG_UNINITIALIZED) {
|
||||
err = register_netdev(dev);
|
||||
if (err) {
|
||||
@ -1963,6 +1960,10 @@ static int xennet_connect(struct net_device *dev)
|
||||
}
|
||||
}
|
||||
|
||||
rtnl_lock();
|
||||
netdev_update_features(dev);
|
||||
rtnl_unlock();
|
||||
|
||||
/*
|
||||
* All public and private state should now be sane. Get
|
||||
* ready to start sending and receiving packets and give the driver
|
||||
|
@ -1226,6 +1226,7 @@ err_used:
|
||||
if (ubufs)
|
||||
vhost_net_ubuf_put_wait_and_free(ubufs);
|
||||
err_ubufs:
|
||||
if (sock)
|
||||
sockfd_put(sock);
|
||||
err_vq:
|
||||
mutex_unlock(&vq->mutex);
|
||||
|
@ -472,7 +472,9 @@ struct sock_fprog_kern {
|
||||
struct bpf_binary_header {
|
||||
u16 pages;
|
||||
u16 locked:1;
|
||||
u8 image[];
|
||||
|
||||
/* Some arches need word alignment for their instructions */
|
||||
u8 image[] __aligned(4);
|
||||
};
|
||||
|
||||
struct bpf_prog {
|
||||
|
@ -22,7 +22,7 @@ endif
|
||||
quiet_cmd_copy_umh = GEN $@
|
||||
cmd_copy_umh = echo ':' > $(obj)/.bpfilter_umh.o.cmd; \
|
||||
$(OBJCOPY) -I binary \
|
||||
`LC_ALL=C objdump -f net/bpfilter/bpfilter_umh \
|
||||
`LC_ALL=C $(OBJDUMP) -f net/bpfilter/bpfilter_umh \
|
||||
|awk -F' |,' '/file format/{print "-O",$$NF} \
|
||||
/^architecture:/{print "-B",$$2}'` \
|
||||
--rename-section .data=.init.rodata $< $@
|
||||
|
@ -600,7 +600,7 @@ static void ccid3_hc_rx_send_feedback(struct sock *sk,
|
||||
{
|
||||
struct ccid3_hc_rx_sock *hc = ccid3_hc_rx_sk(sk);
|
||||
struct dccp_sock *dp = dccp_sk(sk);
|
||||
ktime_t now = ktime_get_real();
|
||||
ktime_t now = ktime_get();
|
||||
s64 delta = 0;
|
||||
|
||||
switch (fbtype) {
|
||||
@ -625,15 +625,14 @@ static void ccid3_hc_rx_send_feedback(struct sock *sk,
|
||||
case CCID3_FBACK_PERIODIC:
|
||||
delta = ktime_us_delta(now, hc->rx_tstamp_last_feedback);
|
||||
if (delta <= 0)
|
||||
DCCP_BUG("delta (%ld) <= 0", (long)delta);
|
||||
else
|
||||
delta = 1;
|
||||
hc->rx_x_recv = scaled_div32(hc->rx_bytes_recv, delta);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
ccid3_pr_debug("Interval %ldusec, X_recv=%u, 1/p=%u\n", (long)delta,
|
||||
ccid3_pr_debug("Interval %lldusec, X_recv=%u, 1/p=%u\n", delta,
|
||||
hc->rx_x_recv, hc->rx_pinv);
|
||||
|
||||
hc->rx_tstamp_last_feedback = now;
|
||||
@ -680,7 +679,8 @@ static int ccid3_hc_rx_insert_options(struct sock *sk, struct sk_buff *skb)
|
||||
static u32 ccid3_first_li(struct sock *sk)
|
||||
{
|
||||
struct ccid3_hc_rx_sock *hc = ccid3_hc_rx_sk(sk);
|
||||
u32 x_recv, p, delta;
|
||||
u32 x_recv, p;
|
||||
s64 delta;
|
||||
u64 fval;
|
||||
|
||||
if (hc->rx_rtt == 0) {
|
||||
@ -688,7 +688,9 @@ static u32 ccid3_first_li(struct sock *sk)
|
||||
hc->rx_rtt = DCCP_FALLBACK_RTT;
|
||||
}
|
||||
|
||||
delta = ktime_to_us(net_timedelta(hc->rx_tstamp_last_feedback));
|
||||
delta = ktime_us_delta(ktime_get(), hc->rx_tstamp_last_feedback);
|
||||
if (delta <= 0)
|
||||
delta = 1;
|
||||
x_recv = scaled_div32(hc->rx_bytes_recv, delta);
|
||||
if (x_recv == 0) { /* would also trigger divide-by-zero */
|
||||
DCCP_WARN("X_recv==0\n");
|
||||
|
@ -2082,7 +2082,8 @@ void ipv6_mc_dad_complete(struct inet6_dev *idev)
|
||||
mld_send_initial_cr(idev);
|
||||
idev->mc_dad_count--;
|
||||
if (idev->mc_dad_count)
|
||||
mld_dad_start_timer(idev, idev->mc_maxdelay);
|
||||
mld_dad_start_timer(idev,
|
||||
unsolicited_report_interval(idev));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2094,7 +2095,8 @@ static void mld_dad_timer_expire(struct timer_list *t)
|
||||
if (idev->mc_dad_count) {
|
||||
idev->mc_dad_count--;
|
||||
if (idev->mc_dad_count)
|
||||
mld_dad_start_timer(idev, idev->mc_maxdelay);
|
||||
mld_dad_start_timer(idev,
|
||||
unsolicited_report_interval(idev));
|
||||
}
|
||||
in6_dev_put(idev);
|
||||
}
|
||||
@ -2452,7 +2454,8 @@ static void mld_ifc_timer_expire(struct timer_list *t)
|
||||
if (idev->mc_ifc_count) {
|
||||
idev->mc_ifc_count--;
|
||||
if (idev->mc_ifc_count)
|
||||
mld_ifc_start_timer(idev, idev->mc_maxdelay);
|
||||
mld_ifc_start_timer(idev,
|
||||
unsolicited_report_interval(idev));
|
||||
}
|
||||
in6_dev_put(idev);
|
||||
}
|
||||
|
@ -2262,6 +2262,13 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||
if (po->stats.stats1.tp_drops)
|
||||
status |= TP_STATUS_LOSING;
|
||||
}
|
||||
|
||||
if (do_vnet &&
|
||||
virtio_net_hdr_from_skb(skb, h.raw + macoff -
|
||||
sizeof(struct virtio_net_hdr),
|
||||
vio_le(), true, 0))
|
||||
goto drop_n_account;
|
||||
|
||||
po->stats.stats1.tp_packets++;
|
||||
if (copy_skb) {
|
||||
status |= TP_STATUS_COPY;
|
||||
@ -2269,15 +2276,6 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev,
|
||||
}
|
||||
spin_unlock(&sk->sk_receive_queue.lock);
|
||||
|
||||
if (do_vnet) {
|
||||
if (virtio_net_hdr_from_skb(skb, h.raw + macoff -
|
||||
sizeof(struct virtio_net_hdr),
|
||||
vio_le(), true, 0)) {
|
||||
spin_lock(&sk->sk_receive_queue.lock);
|
||||
goto drop_n_account;
|
||||
}
|
||||
}
|
||||
|
||||
skb_copy_bits(skb, 0, h.raw + macoff, snaplen);
|
||||
|
||||
if (!(ts_status = tpacket_get_timestamp(skb, &ts, po->tp_tstamp)))
|
||||
|
@ -66,7 +66,7 @@ struct fl_flow_mask {
|
||||
struct rhashtable_params filter_ht_params;
|
||||
struct flow_dissector dissector;
|
||||
struct list_head filters;
|
||||
struct rcu_head rcu;
|
||||
struct rcu_work rwork;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
@ -203,6 +203,20 @@ static int fl_init(struct tcf_proto *tp)
|
||||
return rhashtable_init(&head->ht, &mask_ht_params);
|
||||
}
|
||||
|
||||
static void fl_mask_free(struct fl_flow_mask *mask)
|
||||
{
|
||||
rhashtable_destroy(&mask->ht);
|
||||
kfree(mask);
|
||||
}
|
||||
|
||||
static void fl_mask_free_work(struct work_struct *work)
|
||||
{
|
||||
struct fl_flow_mask *mask = container_of(to_rcu_work(work),
|
||||
struct fl_flow_mask, rwork);
|
||||
|
||||
fl_mask_free(mask);
|
||||
}
|
||||
|
||||
static bool fl_mask_put(struct cls_fl_head *head, struct fl_flow_mask *mask,
|
||||
bool async)
|
||||
{
|
||||
@ -210,12 +224,11 @@ static bool fl_mask_put(struct cls_fl_head *head, struct fl_flow_mask *mask,
|
||||
return false;
|
||||
|
||||
rhashtable_remove_fast(&head->ht, &mask->ht_node, mask_ht_params);
|
||||
rhashtable_destroy(&mask->ht);
|
||||
list_del_rcu(&mask->list);
|
||||
if (async)
|
||||
kfree_rcu(mask, rcu);
|
||||
tcf_queue_work(&mask->rwork, fl_mask_free_work);
|
||||
else
|
||||
kfree(mask);
|
||||
fl_mask_free(mask);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1385,7 +1385,7 @@ hfsc_schedule_watchdog(struct Qdisc *sch)
|
||||
if (next_time == 0 || next_time > q->root.cl_cfmin)
|
||||
next_time = q->root.cl_cfmin;
|
||||
}
|
||||
WARN_ON(next_time == 0);
|
||||
if (next_time)
|
||||
qdisc_watchdog_schedule(&q->watchdog, next_time);
|
||||
}
|
||||
|
||||
|
@ -237,7 +237,9 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc,
|
||||
/* Account for a different sized first fragment */
|
||||
if (msg_len >= first_len) {
|
||||
msg->can_delay = 0;
|
||||
SCTP_INC_STATS(sock_net(asoc->base.sk), SCTP_MIB_FRAGUSRMSGS);
|
||||
if (msg_len > first_len)
|
||||
SCTP_INC_STATS(sock_net(asoc->base.sk),
|
||||
SCTP_MIB_FRAGUSRMSGS);
|
||||
} else {
|
||||
/* Which may be the only one... */
|
||||
first_len = msg_len;
|
||||
|
@ -392,7 +392,7 @@ static int strp_read_sock(struct strparser *strp)
|
||||
/* Lower sock lock held */
|
||||
void strp_data_ready(struct strparser *strp)
|
||||
{
|
||||
if (unlikely(strp->stopped))
|
||||
if (unlikely(strp->stopped) || strp->paused)
|
||||
return;
|
||||
|
||||
/* This check is needed to synchronize with do_strp_work.
|
||||
@ -407,9 +407,6 @@ void strp_data_ready(struct strparser *strp)
|
||||
return;
|
||||
}
|
||||
|
||||
if (strp->paused)
|
||||
return;
|
||||
|
||||
if (strp->need_bytes) {
|
||||
if (strp_peek_len(strp) < strp->need_bytes)
|
||||
return;
|
||||
|
@ -201,7 +201,7 @@ virtio_transport_send_pkt(struct virtio_vsock_pkt *pkt)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (le32_to_cpu(pkt->hdr.dst_cid) == vsock->guest_cid)
|
||||
if (le64_to_cpu(pkt->hdr.dst_cid) == vsock->guest_cid)
|
||||
return virtio_transport_send_pkt_loopback(vsock, pkt);
|
||||
|
||||
if (pkt->reply)
|
||||
|
1
tools/testing/selftests/net/.gitignore
vendored
1
tools/testing/selftests/net/.gitignore
vendored
@ -12,3 +12,4 @@ tcp_mmap
|
||||
udpgso
|
||||
udpgso_bench_rx
|
||||
udpgso_bench_tx
|
||||
tcp_inq
|
||||
|
@ -12,3 +12,5 @@ CONFIG_NET_IPVTI=y
|
||||
CONFIG_INET6_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_IPV6_VTI=y
|
||||
CONFIG_DUMMY=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_VLAN_8021Q=y
|
||||
|
Loading…
Reference in New Issue
Block a user