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
Pull networking fixes from David Miller:
1) e1000e computes header length incorrectly wrt vlans, fix from Vlad
Yasevich.
2) ns_capable() check in sock_diag netlink code, from Andrew
Lutomirski.
3) Fix invalid queue pairs handling in virtio_net, from Amos Kong.
4) Checksum offloading busted in sxgbe driver due to incorrect
descriptor layout, fix from Byungho An.
5) Fix build failure with SMC_DEBUG set to 2 or larger, from Zi Shen
Lim.
6) Fix uninitialized A and X registers in BPF interpreter, from Alexei
Starovoitov.
7) Fix arch dependencies of candence driver.
8) Fix netlink capabilities checking tree-wide, from Eric W Biederman.
9) Don't dump IFLA_VF_PORTS if netlink request didn't ask for it in
IFLA_EXT_MASK, from David Gibson.
10) IPV6 FIB dump restart doesn't handle table changes that happen
meanwhile, causing the code to loop forever or emit dups, fix from
Kumar Sandararajan.
11) Memory leak on VF removal in bnx2x, from Yuval Mintz.
12) Bug fixes for new Altera TSE driver from Vince Bridgers.
13) Fix route lookup key in SCTP, from Xugeng Zhang.
14) Use BH blocking spinlocks in SLIP, as per a similar fix to CAN/SLCAN
driver. From Oliver Hartkopp.
15) TCP doesn't bump retransmit counters in some code paths, fix from
Eric Dumazet.
16) Clamp delayed_ack in tcp_cubic to prevent theoretical divides by
zero. Fix from Liu Yu.
17) Fix locking imbalance in error paths of HHF packet scheduler, from
John Fastabend.
18) Properly reference the transport module when vsock_core_init() runs,
from Andy King.
19) Fix buffer overflow in cdc_ncm driver, from Bjørn Mork.
20) IP_ECN_decapsulate() doesn't see a correct SKB network header in
ip_tunnel_rcv(), fix from Ying Cai.
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (132 commits)
net: macb: Fix race between HW and driver
net: macb: Remove 'unlikely' optimization
net: macb: Re-enable RX interrupt only when RX is done
net: macb: Clear interrupt flags
net: macb: Pass same size to DMA_UNMAP as used for DMA_MAP
ip_tunnel: Set network header properly for IP_ECN_decapsulate()
e1000e: Restrict MDIO Slow Mode workaround to relevant parts
e1000e: Fix issue with link flap on 82579
e1000e: Expand workaround for 10Mb HD throughput bug
e1000e: Workaround for dropped packets in Gig/100 speeds on 82579
net/mlx4_core: Don't issue PCIe speed/width checks for VFs
net/mlx4_core: Load the Eth driver first
net/mlx4_core: Fix slave id computation for single port VF
net/mlx4_core: Adjust port number in qp_attach wrapper when detaching
net: cdc_ncm: fix buffer overflow
Altera TSE: ALTERA_TSE should depend on HAS_DMA
vsock: Make transport the proto owner
net: sched: lock imbalance in hhf qdisc
net: mvmdio: Check for a valid interrupt instead of an error
net phy: Check for aneg completion before setting state to PHY_RUNNING
...
This commit is contained in:
@@ -4,11 +4,15 @@ Required properties:
|
||||
- compatible: Should be "snps,arc-emac"
|
||||
- reg: Address and length of the register set for the device
|
||||
- interrupts: Should contain the EMAC interrupts
|
||||
- clock-frequency: CPU frequency. It is needed to calculate and set polling
|
||||
period of EMAC.
|
||||
- max-speed: see ethernet.txt file in the same directory.
|
||||
- phy: see ethernet.txt file in the same directory.
|
||||
|
||||
Clock handling:
|
||||
The clock frequency is needed to calculate and set polling period of EMAC.
|
||||
It must be provided by one of:
|
||||
- clock-frequency: CPU frequency.
|
||||
- clocks: reference to the clock supplying the EMAC.
|
||||
|
||||
Child nodes of the driver are the individual PHY devices connected to the
|
||||
MDIO bus. They must have a "reg" property given the PHY address on the MDIO bus.
|
||||
|
||||
@@ -19,7 +23,11 @@ Examples:
|
||||
reg = <0xc0fc2000 0x3c>;
|
||||
interrupts = <6>;
|
||||
mac-address = [ 00 11 22 33 44 55 ];
|
||||
|
||||
clock-frequency = <80000000>;
|
||||
/* or */
|
||||
clocks = <&emac_clock>;
|
||||
|
||||
max-speed = <100>;
|
||||
phy = <&phy0>;
|
||||
|
||||
|
||||
@@ -429,7 +429,7 @@ RPS and RFS were introduced in kernel 2.6.35. XPS was incorporated into
|
||||
(therbert@google.com)
|
||||
|
||||
Accelerated RFS was introduced in 2.6.35. Original patches were
|
||||
submitted by Ben Hutchings (bhutchings@solarflare.com)
|
||||
submitted by Ben Hutchings (bwh@kernel.org)
|
||||
|
||||
Authors:
|
||||
Tom Herbert (therbert@google.com)
|
||||
|
||||
@@ -7288,7 +7288,6 @@ F: drivers/video/aty/aty128fb.c
|
||||
RALINK RT2X00 WIRELESS LAN DRIVER
|
||||
P: rt2x00 project
|
||||
M: Ivo van Doorn <IvDoorn@gmail.com>
|
||||
M: Gertjan van Wingerde <gwingerde@gmail.com>
|
||||
M: Helmut Schaa <helmut.schaa@googlemail.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
L: users@rt2x00.serialmonkey.com (moderated for non-subscribers)
|
||||
@@ -7685,7 +7684,6 @@ F: drivers/clk/samsung/
|
||||
SAMSUNG SXGBE DRIVERS
|
||||
M: Byungho An <bh74.an@samsung.com>
|
||||
M: Girish K S <ks.giri@samsung.com>
|
||||
M: Siva Reddy Kallam <siva.kallam@samsung.com>
|
||||
M: Vipul Pandya <vipul.pandya@samsung.com>
|
||||
S: Supported
|
||||
L: netdev@vger.kernel.org
|
||||
|
||||
@@ -466,7 +466,7 @@ static int crypto_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
|
||||
type -= CRYPTO_MSG_BASE;
|
||||
link = &crypto_dispatch[type];
|
||||
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
if (!netlink_capable(skb, CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
if ((type == (CRYPTO_MSG_GETALG - CRYPTO_MSG_BASE) &&
|
||||
|
||||
@@ -82,6 +82,7 @@ static const struct usb_device_id ath3k_table[] = {
|
||||
{ USB_DEVICE(0x04CA, 0x3004) },
|
||||
{ USB_DEVICE(0x04CA, 0x3005) },
|
||||
{ USB_DEVICE(0x04CA, 0x3006) },
|
||||
{ USB_DEVICE(0x04CA, 0x3007) },
|
||||
{ USB_DEVICE(0x04CA, 0x3008) },
|
||||
{ USB_DEVICE(0x04CA, 0x300b) },
|
||||
{ USB_DEVICE(0x0930, 0x0219) },
|
||||
@@ -131,6 +132,7 @@ static const struct usb_device_id ath3k_blist_tbl[] = {
|
||||
{ USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x3007), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 },
|
||||
|
||||
@@ -152,6 +152,7 @@ static const struct usb_device_id blacklist_table[] = {
|
||||
{ USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x3007), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 },
|
||||
{ USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 },
|
||||
@@ -1485,10 +1486,8 @@ static int btusb_probe(struct usb_interface *intf,
|
||||
if (id->driver_info & BTUSB_BCM92035)
|
||||
hdev->setup = btusb_setup_bcm92035;
|
||||
|
||||
if (id->driver_info & BTUSB_INTEL) {
|
||||
usb_enable_autosuspend(data->udev);
|
||||
if (id->driver_info & BTUSB_INTEL)
|
||||
hdev->setup = btusb_setup_intel;
|
||||
}
|
||||
|
||||
/* Interface numbers are hardcoded in the specification */
|
||||
data->isoc = usb_ifnum_to_if(data->udev, 1);
|
||||
|
||||
@@ -369,7 +369,7 @@ static void cn_proc_mcast_ctl(struct cn_msg *msg,
|
||||
return;
|
||||
|
||||
/* Can only change if privileged. */
|
||||
if (!capable(CAP_NET_ADMIN)) {
|
||||
if (!__netlink_ns_capable(nsp, &init_user_ns, CAP_NET_ADMIN)) {
|
||||
err = EPERM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -425,7 +425,7 @@ afterXPR:
|
||||
if (cs->debug & L1_DEB_MONITOR)
|
||||
debugl1(cs, "ICC %02x -> MOX1", cs->dc.icc.mon_tx[cs->dc.icc.mon_txp - 1]);
|
||||
}
|
||||
AfterMOX1:
|
||||
AfterMOX1: ;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -534,7 +534,7 @@ static ssize_t bonding_show_min_links(struct device *d,
|
||||
{
|
||||
struct bonding *bond = to_bond(d);
|
||||
|
||||
return sprintf(buf, "%d\n", bond->params.min_links);
|
||||
return sprintf(buf, "%u\n", bond->params.min_links);
|
||||
}
|
||||
|
||||
static ssize_t bonding_store_min_links(struct device *d,
|
||||
|
||||
@@ -14,6 +14,13 @@ config CAN_C_CAN_PLATFORM
|
||||
SPEAr1310 and SPEAr320 evaluation boards & TI (www.ti.com)
|
||||
boards like am335x, dm814x, dm813x and dm811x.
|
||||
|
||||
config CAN_C_CAN_STRICT_FRAME_ORDERING
|
||||
bool "Force a strict RX CAN frame order (may cause frame loss)"
|
||||
---help---
|
||||
The RX split buffer prevents packet reordering but can cause packet
|
||||
loss. Only enable this option when you accept to lose CAN frames
|
||||
in favour of getting the received CAN frames in the correct order.
|
||||
|
||||
config CAN_C_CAN_PCI
|
||||
tristate "Generic PCI Bus based C_CAN/D_CAN driver"
|
||||
depends on PCI
|
||||
|
||||
+309
-357
File diff suppressed because it is too large
Load Diff
@@ -22,14 +22,6 @@
|
||||
#ifndef C_CAN_H
|
||||
#define C_CAN_H
|
||||
|
||||
/*
|
||||
* IFx register masks:
|
||||
* allow easy operation on 16-bit registers when the
|
||||
* argument is 32-bit instead
|
||||
*/
|
||||
#define IFX_WRITE_LOW_16BIT(x) ((x) & 0xFFFF)
|
||||
#define IFX_WRITE_HIGH_16BIT(x) (((x) & 0xFFFF0000) >> 16)
|
||||
|
||||
/* message object split */
|
||||
#define C_CAN_NO_OF_OBJECTS 32
|
||||
#define C_CAN_MSG_OBJ_RX_NUM 16
|
||||
@@ -45,8 +37,6 @@
|
||||
|
||||
#define C_CAN_MSG_OBJ_RX_SPLIT 9
|
||||
#define C_CAN_MSG_RX_LOW_LAST (C_CAN_MSG_OBJ_RX_SPLIT - 1)
|
||||
|
||||
#define C_CAN_NEXT_MSG_OBJ_MASK (C_CAN_MSG_OBJ_TX_NUM - 1)
|
||||
#define RECEIVE_OBJECT_BITS 0x0000ffff
|
||||
|
||||
enum reg {
|
||||
@@ -183,23 +173,20 @@ struct c_can_priv {
|
||||
struct napi_struct napi;
|
||||
struct net_device *dev;
|
||||
struct device *device;
|
||||
spinlock_t xmit_lock;
|
||||
int tx_object;
|
||||
int current_status;
|
||||
atomic_t tx_active;
|
||||
unsigned long tx_dir;
|
||||
int last_status;
|
||||
u16 (*read_reg) (struct c_can_priv *priv, enum reg index);
|
||||
void (*write_reg) (struct c_can_priv *priv, enum reg index, u16 val);
|
||||
void __iomem *base;
|
||||
const u16 *regs;
|
||||
unsigned long irq_flags; /* for request_irq() */
|
||||
unsigned int tx_next;
|
||||
unsigned int tx_echo;
|
||||
void *priv; /* for board-specific data */
|
||||
u16 irqstatus;
|
||||
enum c_can_dev_id type;
|
||||
u32 __iomem *raminit_ctrlreg;
|
||||
unsigned int instance;
|
||||
int instance;
|
||||
void (*raminit) (const struct c_can_priv *priv, bool enable);
|
||||
u32 comm_rcv_high;
|
||||
u32 rxmasked;
|
||||
u32 dlc[C_CAN_MSG_OBJ_TX_NUM];
|
||||
};
|
||||
|
||||
|
||||
@@ -84,8 +84,11 @@ static int c_can_pci_probe(struct pci_dev *pdev,
|
||||
goto out_disable_device;
|
||||
}
|
||||
|
||||
pci_set_master(pdev);
|
||||
pci_enable_msi(pdev);
|
||||
ret = pci_enable_msi(pdev);
|
||||
if (!ret) {
|
||||
dev_info(&pdev->dev, "MSI enabled\n");
|
||||
pci_set_master(pdev);
|
||||
}
|
||||
|
||||
addr = pci_iomap(pdev, 0, pci_resource_len(pdev, 0));
|
||||
if (!addr) {
|
||||
@@ -132,6 +135,8 @@ static int c_can_pci_probe(struct pci_dev *pdev,
|
||||
goto out_free_c_can;
|
||||
}
|
||||
|
||||
priv->type = c_can_pci_data->type;
|
||||
|
||||
/* Configure access to registers */
|
||||
switch (c_can_pci_data->reg_align) {
|
||||
case C_CAN_REG_ALIGN_32:
|
||||
|
||||
@@ -222,7 +222,7 @@ static int c_can_plat_probe(struct platform_device *pdev)
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
|
||||
priv->raminit_ctrlreg = devm_ioremap_resource(&pdev->dev, res);
|
||||
if (IS_ERR(priv->raminit_ctrlreg) || (int)priv->instance < 0)
|
||||
if (IS_ERR(priv->raminit_ctrlreg) || priv->instance < 0)
|
||||
dev_info(&pdev->dev, "control memory is not used for raminit\n");
|
||||
else
|
||||
priv->raminit = c_can_hw_raminit;
|
||||
|
||||
@@ -256,7 +256,7 @@ static int can_get_bittiming(struct net_device *dev, struct can_bittiming *bt,
|
||||
|
||||
/* Check if the CAN device has bit-timing parameters */
|
||||
if (!btc)
|
||||
return -ENOTSUPP;
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/*
|
||||
* Depending on the given can_bittiming parameter structure the CAN
|
||||
|
||||
@@ -46,6 +46,7 @@ static int clk[MAXDEV];
|
||||
static unsigned char cdr[MAXDEV] = {[0 ... (MAXDEV - 1)] = 0xff};
|
||||
static unsigned char ocr[MAXDEV] = {[0 ... (MAXDEV - 1)] = 0xff};
|
||||
static int indirect[MAXDEV] = {[0 ... (MAXDEV - 1)] = -1};
|
||||
static spinlock_t indirect_lock[MAXDEV]; /* lock for indirect access mode */
|
||||
|
||||
module_param_array(port, ulong, NULL, S_IRUGO);
|
||||
MODULE_PARM_DESC(port, "I/O port number");
|
||||
@@ -101,19 +102,26 @@ static void sja1000_isa_port_write_reg(const struct sja1000_priv *priv,
|
||||
static u8 sja1000_isa_port_read_reg_indirect(const struct sja1000_priv *priv,
|
||||
int reg)
|
||||
{
|
||||
unsigned long base = (unsigned long)priv->reg_base;
|
||||
unsigned long flags, base = (unsigned long)priv->reg_base;
|
||||
u8 readval;
|
||||
|
||||
spin_lock_irqsave(&indirect_lock[priv->dev->dev_id], flags);
|
||||
outb(reg, base);
|
||||
return inb(base + 1);
|
||||
readval = inb(base + 1);
|
||||
spin_unlock_irqrestore(&indirect_lock[priv->dev->dev_id], flags);
|
||||
|
||||
return readval;
|
||||
}
|
||||
|
||||
static void sja1000_isa_port_write_reg_indirect(const struct sja1000_priv *priv,
|
||||
int reg, u8 val)
|
||||
{
|
||||
unsigned long base = (unsigned long)priv->reg_base;
|
||||
unsigned long flags, base = (unsigned long)priv->reg_base;
|
||||
|
||||
spin_lock_irqsave(&indirect_lock[priv->dev->dev_id], flags);
|
||||
outb(reg, base);
|
||||
outb(val, base + 1);
|
||||
spin_unlock_irqrestore(&indirect_lock[priv->dev->dev_id], flags);
|
||||
}
|
||||
|
||||
static int sja1000_isa_probe(struct platform_device *pdev)
|
||||
@@ -169,6 +177,7 @@ static int sja1000_isa_probe(struct platform_device *pdev)
|
||||
if (iosize == SJA1000_IOSIZE_INDIRECT) {
|
||||
priv->read_reg = sja1000_isa_port_read_reg_indirect;
|
||||
priv->write_reg = sja1000_isa_port_write_reg_indirect;
|
||||
spin_lock_init(&indirect_lock[idx]);
|
||||
} else {
|
||||
priv->read_reg = sja1000_isa_port_read_reg;
|
||||
priv->write_reg = sja1000_isa_port_write_reg;
|
||||
@@ -198,6 +207,7 @@ static int sja1000_isa_probe(struct platform_device *pdev)
|
||||
|
||||
platform_set_drvdata(pdev, dev);
|
||||
SET_NETDEV_DEV(dev, &pdev->dev);
|
||||
dev->dev_id = idx;
|
||||
|
||||
err = register_sja1000dev(dev);
|
||||
if (err) {
|
||||
|
||||
@@ -322,13 +322,13 @@ static void slcan_write_wakeup(struct tty_struct *tty)
|
||||
if (!sl || sl->magic != SLCAN_MAGIC || !netif_running(sl->dev))
|
||||
return;
|
||||
|
||||
spin_lock(&sl->lock);
|
||||
spin_lock_bh(&sl->lock);
|
||||
if (sl->xleft <= 0) {
|
||||
/* Now serial buffer is almost free & we can start
|
||||
* transmission of another packet */
|
||||
sl->dev->stats.tx_packets++;
|
||||
clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
|
||||
spin_unlock(&sl->lock);
|
||||
spin_unlock_bh(&sl->lock);
|
||||
netif_wake_queue(sl->dev);
|
||||
return;
|
||||
}
|
||||
@@ -336,7 +336,7 @@ static void slcan_write_wakeup(struct tty_struct *tty)
|
||||
actual = tty->ops->write(tty, sl->xhead, sl->xleft);
|
||||
sl->xleft -= actual;
|
||||
sl->xhead += actual;
|
||||
spin_unlock(&sl->lock);
|
||||
spin_unlock_bh(&sl->lock);
|
||||
}
|
||||
|
||||
/* Send a can_frame to a TTY queue. */
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
config ALTERA_TSE
|
||||
tristate "Altera Triple-Speed Ethernet MAC support"
|
||||
depends on HAS_DMA
|
||||
select PHYLIB
|
||||
---help---
|
||||
This driver supports the Altera Triple-Speed (TSE) Ethernet MAC.
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "altera_utils.h"
|
||||
#include "altera_tse.h"
|
||||
#include "altera_msgdmahw.h"
|
||||
#include "altera_msgdma.h"
|
||||
|
||||
/* No initialization work to do for MSGDMA */
|
||||
int msgdma_initialize(struct altera_tse_private *priv)
|
||||
@@ -29,6 +30,10 @@ void msgdma_uninitialize(struct altera_tse_private *priv)
|
||||
{
|
||||
}
|
||||
|
||||
void msgdma_start_rxdma(struct altera_tse_private *priv)
|
||||
{
|
||||
}
|
||||
|
||||
void msgdma_reset(struct altera_tse_private *priv)
|
||||
{
|
||||
int counter;
|
||||
@@ -154,7 +159,7 @@ u32 msgdma_tx_completions(struct altera_tse_private *priv)
|
||||
|
||||
/* Put buffer to the mSGDMA RX FIFO
|
||||
*/
|
||||
int msgdma_add_rx_desc(struct altera_tse_private *priv,
|
||||
void msgdma_add_rx_desc(struct altera_tse_private *priv,
|
||||
struct tse_buffer *rxbuffer)
|
||||
{
|
||||
struct msgdma_extended_desc *desc = priv->rx_dma_desc;
|
||||
@@ -175,7 +180,6 @@ int msgdma_add_rx_desc(struct altera_tse_private *priv,
|
||||
iowrite32(0, &desc->burst_seq_num);
|
||||
iowrite32(0x00010001, &desc->stride);
|
||||
iowrite32(control, &desc->control);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* status is returned on upper 16 bits,
|
||||
|
||||
@@ -25,10 +25,11 @@ void msgdma_disable_txirq(struct altera_tse_private *);
|
||||
void msgdma_clear_rxirq(struct altera_tse_private *);
|
||||
void msgdma_clear_txirq(struct altera_tse_private *);
|
||||
u32 msgdma_tx_completions(struct altera_tse_private *);
|
||||
int msgdma_add_rx_desc(struct altera_tse_private *, struct tse_buffer *);
|
||||
void msgdma_add_rx_desc(struct altera_tse_private *, struct tse_buffer *);
|
||||
int msgdma_tx_buffer(struct altera_tse_private *, struct tse_buffer *);
|
||||
u32 msgdma_rx_status(struct altera_tse_private *);
|
||||
int msgdma_initialize(struct altera_tse_private *);
|
||||
void msgdma_uninitialize(struct altera_tse_private *);
|
||||
void msgdma_start_rxdma(struct altera_tse_private *);
|
||||
|
||||
#endif /* __ALTERA_MSGDMA_H__ */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user