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) kvaser CAN driver has fixed limits of some of it's table, validate
that we won't exceed those limits at probe time. Fix from Olivier
Sobrie.
2) Fix rtl8192ce disabling interrupts for too long, from Olivier
Langlois.
3) Fix botched shift in ath5k driver, from Dan Carpenter.
4) Fix corruption of deferred packets in TIPC, from Erik Hugne.
5) Fix newlink error path in macvlan driver, from Cong Wang.
6) Fix netpoll deadlock in bonding, from Ding Tianhong.
7) Handle GSO packets properly in forwarding path when fragmentation is
necessary on egress, from Florian Westphal.
8) Fix axienet build errors, from Michal Simek.
9) Fix refcounting of ubufs on tx in vhost net driver, from Michael S
Tsirkin.
10) Carrier status isn't set properly in hyperv driver, from Haiyang
Zhang.
11) Missing pci_disable_device() in tulip_remove_one), from Ingo Molnar.
12) AF_PACKET qdisc bypass mode doesn't adhere to driver provided TX
queue selection method. Add a fallback method mechanism to fix this
bug, from Daniel Borkmann.
13) Fix regression in link local route handling on GRE tunnels, from
Nicolas Dichtel.
14) Bonding can assign dup aggregator IDs in some sequences of
configuration, fix by making the allocation counter per-bond instead
of global. From Jiri Bohac.
15) sctp_connectx() needs compat translations, from Daniel Borkmann.
16) Fix of_mdio PHY interrupt parsing, from Ben Dooks
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (62 commits)
MAINTAINERS: add entry for the PHY library
of_mdio: fix phy interrupt passing
net: ethernet: update dependency and help text of mvneta
NET: fec: only enable napi if we are successful
af_packet: remove a stray tab in packet_set_ring()
net: sctp: fix sctp_connectx abi for ia32 emulation/compat mode
ipv4: fix counter in_slow_tot
irtty-sir.c: Do not set_termios() on irtty_close()
bonding: 802.3ad: make aggregator_identifier bond-private
usbnet: remove generic hard_header_len check
gre: add link local route when local addr is any
batman-adv: fix potential kernel paging error for unicast transmissions
batman-adv: avoid double free when orig_node initialization fails
batman-adv: free skb on TVLV parsing success
batman-adv: fix TT CRC computation by ensuring byte order
batman-adv: fix potential orig_node reference leak
batman-adv: avoid potential race condition when adding a new neighbour
batman-adv: properly check pskb_may_pull return value
batman-adv: release vlan object after checking the CRC
batman-adv: fix TT-TVLV parsing on OGM reception
...
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
STMicroelectronics SoC DWMAC glue layer controller
|
||||||
|
|
||||||
|
The device node has following properties.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : Can be "st,stih415-dwmac", "st,stih416-dwmac" or
|
||||||
|
"st,stid127-dwmac".
|
||||||
|
- reg : Offset of the glue configuration register map in system
|
||||||
|
configuration regmap pointed by st,syscon property and size.
|
||||||
|
|
||||||
|
- reg-names : Should be "sti-ethconf".
|
||||||
|
|
||||||
|
- st,syscon : Should be phandle to system configuration node which
|
||||||
|
encompases this glue registers.
|
||||||
|
|
||||||
|
- st,tx-retime-src: On STi Parts for Giga bit speeds, 125Mhz clocks can be
|
||||||
|
wired up in from different sources. One via TXCLK pin and other via CLK_125
|
||||||
|
pin. This wiring is totally board dependent. However the retiming glue
|
||||||
|
logic should be configured accordingly. Possible values for this property
|
||||||
|
|
||||||
|
"txclk" - if 125Mhz clock is wired up via txclk line.
|
||||||
|
"clk_125" - if 125Mhz clock is wired up via clk_125 line.
|
||||||
|
|
||||||
|
This property is only valid for Giga bit setup( GMII, RGMII), and it is
|
||||||
|
un-used for non-giga bit (MII and RMII) setups. Also note that internal
|
||||||
|
clockgen can not generate stable 125Mhz clock.
|
||||||
|
|
||||||
|
- st,ext-phyclk: This boolean property indicates who is generating the clock
|
||||||
|
for tx and rx. This property is only valid for RMII case where the clock can
|
||||||
|
be generated from the MAC or PHY.
|
||||||
|
|
||||||
|
- clock-names: should be "sti-ethclk".
|
||||||
|
- clocks: Should point to ethernet clockgen which can generate phyclk.
|
||||||
|
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
ethernet0: dwmac@fe810000 {
|
||||||
|
device_type = "network";
|
||||||
|
compatible = "st,stih416-dwmac", "snps,dwmac", "snps,dwmac-3.710";
|
||||||
|
reg = <0xfe810000 0x8000>, <0x8bc 0x4>;
|
||||||
|
reg-names = "stmmaceth", "sti-ethconf";
|
||||||
|
interrupts = <0 133 0>, <0 134 0>, <0 135 0>;
|
||||||
|
interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
|
||||||
|
phy-mode = "mii";
|
||||||
|
|
||||||
|
st,syscon = <&syscfg_rear>;
|
||||||
|
|
||||||
|
snps,pbl = <32>;
|
||||||
|
snps,mixed-burst;
|
||||||
|
|
||||||
|
resets = <&softreset STIH416_ETH0_SOFTRESET>;
|
||||||
|
reset-names = "stmmaceth";
|
||||||
|
pinctrl-0 = <&pinctrl_mii0>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
clocks = <&CLK_S_GMAC0_PHY>;
|
||||||
|
clock-names = "stmmaceth";
|
||||||
|
};
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
The 3Com Etherlink Plus (3c505) driver.
|
|
||||||
|
|
||||||
This driver now uses DMA. There is currently no support for PIO operation.
|
|
||||||
The default DMA channel is 6; this is _not_ autoprobed, so you must
|
|
||||||
make sure you configure it correctly. If loading the driver as a
|
|
||||||
module, you can do this with "modprobe 3c505 dma=n". If the driver is
|
|
||||||
linked statically into the kernel, you must either use an "ether="
|
|
||||||
statement on the command line, or change the definition of ELP_DMA in 3c505.h.
|
|
||||||
|
|
||||||
The driver will warn you if it has to fall back on the compiled in
|
|
||||||
default DMA channel.
|
|
||||||
|
|
||||||
If no base address is given at boot time, the driver will autoprobe
|
|
||||||
ports 0x300, 0x280 and 0x310 (in that order). If no IRQ is given, the driver
|
|
||||||
will try to probe for it.
|
|
||||||
|
|
||||||
The driver can be used as a loadable module.
|
|
||||||
|
|
||||||
Theoretically, one instance of the driver can now run multiple cards,
|
|
||||||
in the standard way (when loading a module, say "modprobe 3c505
|
|
||||||
io=0x300,0x340 irq=10,11 dma=6,7" or whatever). I have not tested
|
|
||||||
this, though.
|
|
||||||
|
|
||||||
The driver may now support revision 2 hardware; the dependency on
|
|
||||||
being able to read the host control register has been removed. This
|
|
||||||
is also untested, since I don't have a suitable card.
|
|
||||||
|
|
||||||
Known problems:
|
|
||||||
I still see "DMA upload timed out" messages from time to time. These
|
|
||||||
seem to be fairly non-fatal though.
|
|
||||||
The card is old and slow.
|
|
||||||
|
|
||||||
To do:
|
|
||||||
Improve probe/setup code
|
|
||||||
Test multicast and promiscuous operation
|
|
||||||
|
|
||||||
Authors:
|
|
||||||
The driver is mainly written by Craig Southeren, email
|
|
||||||
<craigs@ineluki.apana.org.au>.
|
|
||||||
Parts of the driver (adapting the driver to 1.1.4+ kernels,
|
|
||||||
IRQ/address detection, some changes) and this README by
|
|
||||||
Juha Laiho <jlaiho@ichaos.nullnet.fi>.
|
|
||||||
DMA mode, more fixes, etc, by Philip Blundell <pjb27@cam.ac.uk>
|
|
||||||
Multicard support, Software configurable DMA, etc., by
|
|
||||||
Christopher Collins <ccollins@pcug.org.au>
|
|
||||||
+11
@@ -3324,6 +3324,17 @@ S: Maintained
|
|||||||
F: include/linux/netfilter_bridge/
|
F: include/linux/netfilter_bridge/
|
||||||
F: net/bridge/
|
F: net/bridge/
|
||||||
|
|
||||||
|
ETHERNET PHY LIBRARY
|
||||||
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: include/linux/phy.h
|
||||||
|
F: include/linux/phy_fixed.h
|
||||||
|
F: drivers/net/phy/
|
||||||
|
F: Documentation/networking/phy.txt
|
||||||
|
F: drivers/of/of_mdio.c
|
||||||
|
F: drivers/of/of_net.c
|
||||||
|
|
||||||
EXT2 FILE SYSTEM
|
EXT2 FILE SYSTEM
|
||||||
M: Jan Kara <jack@suse.cz>
|
M: Jan Kara <jack@suse.cz>
|
||||||
L: linux-ext4@vger.kernel.org
|
L: linux-ext4@vger.kernel.org
|
||||||
|
|||||||
+1
-1
@@ -139,7 +139,7 @@ config MACVTAP
|
|||||||
This adds a specialized tap character device driver that is based
|
This adds a specialized tap character device driver that is based
|
||||||
on the MAC-VLAN network interface, called macvtap. A macvtap device
|
on the MAC-VLAN network interface, called macvtap. A macvtap device
|
||||||
can be added in the same way as a macvlan device, using 'type
|
can be added in the same way as a macvlan device, using 'type
|
||||||
macvlan', and then be accessed through the tap user space interface.
|
macvtap', and then be accessed through the tap user space interface.
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the module
|
To compile this driver as a module, choose M here: the module
|
||||||
will be called macvtap.
|
will be called macvtap.
|
||||||
|
|||||||
@@ -1796,8 +1796,6 @@ void bond_3ad_initiate_agg_selection(struct bonding *bond, int timeout)
|
|||||||
BOND_AD_INFO(bond).agg_select_timer = timeout;
|
BOND_AD_INFO(bond).agg_select_timer = timeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u16 aggregator_identifier;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bond_3ad_initialize - initialize a bond's 802.3ad parameters and structures
|
* bond_3ad_initialize - initialize a bond's 802.3ad parameters and structures
|
||||||
* @bond: bonding struct to work on
|
* @bond: bonding struct to work on
|
||||||
@@ -1811,7 +1809,7 @@ void bond_3ad_initialize(struct bonding *bond, u16 tick_resolution)
|
|||||||
if (!MAC_ADDRESS_EQUAL(&(BOND_AD_INFO(bond).system.sys_mac_addr),
|
if (!MAC_ADDRESS_EQUAL(&(BOND_AD_INFO(bond).system.sys_mac_addr),
|
||||||
bond->dev->dev_addr)) {
|
bond->dev->dev_addr)) {
|
||||||
|
|
||||||
aggregator_identifier = 0;
|
BOND_AD_INFO(bond).aggregator_identifier = 0;
|
||||||
|
|
||||||
BOND_AD_INFO(bond).system.sys_priority = 0xFFFF;
|
BOND_AD_INFO(bond).system.sys_priority = 0xFFFF;
|
||||||
BOND_AD_INFO(bond).system.sys_mac_addr = *((struct mac_addr *)bond->dev->dev_addr);
|
BOND_AD_INFO(bond).system.sys_mac_addr = *((struct mac_addr *)bond->dev->dev_addr);
|
||||||
@@ -1880,7 +1878,7 @@ void bond_3ad_bind_slave(struct slave *slave)
|
|||||||
ad_initialize_agg(aggregator);
|
ad_initialize_agg(aggregator);
|
||||||
|
|
||||||
aggregator->aggregator_mac_address = *((struct mac_addr *)bond->dev->dev_addr);
|
aggregator->aggregator_mac_address = *((struct mac_addr *)bond->dev->dev_addr);
|
||||||
aggregator->aggregator_identifier = (++aggregator_identifier);
|
aggregator->aggregator_identifier = ++BOND_AD_INFO(bond).aggregator_identifier;
|
||||||
aggregator->slave = slave;
|
aggregator->slave = slave;
|
||||||
aggregator->is_active = 0;
|
aggregator->is_active = 0;
|
||||||
aggregator->num_of_ports = 0;
|
aggregator->num_of_ports = 0;
|
||||||
|
|||||||
@@ -253,6 +253,7 @@ struct ad_system {
|
|||||||
struct ad_bond_info {
|
struct ad_bond_info {
|
||||||
struct ad_system system; /* 802.3ad system structure */
|
struct ad_system system; /* 802.3ad system structure */
|
||||||
u32 agg_select_timer; // Timer to select aggregator after all adapter's hand shakes
|
u32 agg_select_timer; // Timer to select aggregator after all adapter's hand shakes
|
||||||
|
u16 aggregator_identifier;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ad_slave_info {
|
struct ad_slave_info {
|
||||||
|
|||||||
@@ -1543,9 +1543,11 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
|
|||||||
bond_set_carrier(bond);
|
bond_set_carrier(bond);
|
||||||
|
|
||||||
if (USES_PRIMARY(bond->params.mode)) {
|
if (USES_PRIMARY(bond->params.mode)) {
|
||||||
|
block_netpoll_tx();
|
||||||
write_lock_bh(&bond->curr_slave_lock);
|
write_lock_bh(&bond->curr_slave_lock);
|
||||||
bond_select_active_slave(bond);
|
bond_select_active_slave(bond);
|
||||||
write_unlock_bh(&bond->curr_slave_lock);
|
write_unlock_bh(&bond->curr_slave_lock);
|
||||||
|
unblock_netpoll_tx();
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_info("%s: enslaving %s as a%s interface with a%s link.\n",
|
pr_info("%s: enslaving %s as a%s interface with a%s link.\n",
|
||||||
@@ -1571,10 +1573,12 @@ err_detach:
|
|||||||
if (bond->primary_slave == new_slave)
|
if (bond->primary_slave == new_slave)
|
||||||
bond->primary_slave = NULL;
|
bond->primary_slave = NULL;
|
||||||
if (bond->curr_active_slave == new_slave) {
|
if (bond->curr_active_slave == new_slave) {
|
||||||
|
block_netpoll_tx();
|
||||||
write_lock_bh(&bond->curr_slave_lock);
|
write_lock_bh(&bond->curr_slave_lock);
|
||||||
bond_change_active_slave(bond, NULL);
|
bond_change_active_slave(bond, NULL);
|
||||||
bond_select_active_slave(bond);
|
bond_select_active_slave(bond);
|
||||||
write_unlock_bh(&bond->curr_slave_lock);
|
write_unlock_bh(&bond->curr_slave_lock);
|
||||||
|
unblock_netpoll_tx();
|
||||||
}
|
}
|
||||||
slave_disable_netpoll(new_slave);
|
slave_disable_netpoll(new_slave);
|
||||||
|
|
||||||
@@ -2864,9 +2868,12 @@ static int bond_slave_netdev_event(unsigned long event,
|
|||||||
pr_info("%s: Primary slave changed to %s, reselecting active slave.\n",
|
pr_info("%s: Primary slave changed to %s, reselecting active slave.\n",
|
||||||
bond->dev->name, bond->primary_slave ? slave_dev->name :
|
bond->dev->name, bond->primary_slave ? slave_dev->name :
|
||||||
"none");
|
"none");
|
||||||
|
|
||||||
|
block_netpoll_tx();
|
||||||
write_lock_bh(&bond->curr_slave_lock);
|
write_lock_bh(&bond->curr_slave_lock);
|
||||||
bond_select_active_slave(bond);
|
bond_select_active_slave(bond);
|
||||||
write_unlock_bh(&bond->curr_slave_lock);
|
write_unlock_bh(&bond->curr_slave_lock);
|
||||||
|
unblock_netpoll_tx();
|
||||||
break;
|
break;
|
||||||
case NETDEV_FEAT_CHANGE:
|
case NETDEV_FEAT_CHANGE:
|
||||||
bond_compute_features(bond);
|
bond_compute_features(bond);
|
||||||
@@ -3700,7 +3707,7 @@ static inline int bond_slave_override(struct bonding *bond,
|
|||||||
|
|
||||||
|
|
||||||
static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb,
|
static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||||
void *accel_priv)
|
void *accel_priv, select_queue_fallback_t fallback)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* This helper function exists to help dev_pick_tx get the correct
|
* This helper function exists to help dev_pick_tx get the correct
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/if.h>
|
#include <linux/if.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/rwlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/rcupdate.h>
|
#include <linux/rcupdate.h>
|
||||||
#include <linux/ctype.h>
|
#include <linux/ctype.h>
|
||||||
#include <linux/inet.h>
|
#include <linux/inet.h>
|
||||||
|
|||||||
@@ -473,6 +473,8 @@ static int kvaser_usb_get_card_info(struct kvaser_usb *dev)
|
|||||||
return err;
|
return err;
|
||||||
|
|
||||||
dev->nchannels = msg.u.cardinfo.nchannels;
|
dev->nchannels = msg.u.cardinfo.nchannels;
|
||||||
|
if (dev->nchannels > MAX_NET_DEVICES)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1873,7 +1873,7 @@ void bnx2x_netif_stop(struct bnx2x *bp, int disable_hw)
|
|||||||
}
|
}
|
||||||
|
|
||||||
u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
|
u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||||
void *accel_priv)
|
void *accel_priv, select_queue_fallback_t fallback)
|
||||||
{
|
{
|
||||||
struct bnx2x *bp = netdev_priv(dev);
|
struct bnx2x *bp = netdev_priv(dev);
|
||||||
|
|
||||||
@@ -1895,7 +1895,7 @@ u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* select a non-FCoE queue */
|
/* select a non-FCoE queue */
|
||||||
return __netdev_pick_tx(dev, skb) % BNX2X_NUM_ETH_QUEUES(bp);
|
return fallback(dev, skb) % BNX2X_NUM_ETH_QUEUES(bp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bnx2x_set_num_queues(struct bnx2x *bp)
|
void bnx2x_set_num_queues(struct bnx2x *bp)
|
||||||
|
|||||||
@@ -496,7 +496,7 @@ int bnx2x_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos);
|
|||||||
|
|
||||||
/* select_queue callback */
|
/* select_queue callback */
|
||||||
u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
|
u16 bnx2x_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||||
void *accel_priv);
|
void *accel_priv, select_queue_fallback_t fallback);
|
||||||
|
|
||||||
static inline void bnx2x_update_rx_prod(struct bnx2x *bp,
|
static inline void bnx2x_update_rx_prod(struct bnx2x *bp,
|
||||||
struct bnx2x_fastpath *fp,
|
struct bnx2x_fastpath *fp,
|
||||||
|
|||||||
@@ -1939,6 +1939,7 @@ static void tulip_remove_one(struct pci_dev *pdev)
|
|||||||
pci_iounmap(pdev, tp->base_addr);
|
pci_iounmap(pdev, tp->base_addr);
|
||||||
free_netdev (dev);
|
free_netdev (dev);
|
||||||
pci_release_regions (pdev);
|
pci_release_regions (pdev);
|
||||||
|
pci_disable_device(pdev);
|
||||||
|
|
||||||
/* pci_power_off (pdev, -1); */
|
/* pci_power_off (pdev, -1); */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1778,8 +1778,6 @@ fec_enet_open(struct net_device *ndev)
|
|||||||
struct fec_enet_private *fep = netdev_priv(ndev);
|
struct fec_enet_private *fep = netdev_priv(ndev);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
napi_enable(&fep->napi);
|
|
||||||
|
|
||||||
/* I should reset the ring buffers here, but I don't yet know
|
/* I should reset the ring buffers here, but I don't yet know
|
||||||
* a simple way to do that.
|
* a simple way to do that.
|
||||||
*/
|
*/
|
||||||
@@ -1794,6 +1792,8 @@ fec_enet_open(struct net_device *ndev)
|
|||||||
fec_enet_free_buffers(ndev);
|
fec_enet_free_buffers(ndev);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
napi_enable(&fep->napi);
|
||||||
phy_start(fep->phy_dev);
|
phy_start(fep->phy_dev);
|
||||||
netif_start_queue(ndev);
|
netif_start_queue(ndev);
|
||||||
fep->opened = 1;
|
fep->opened = 1;
|
||||||
|
|||||||
@@ -6881,7 +6881,7 @@ static inline int ixgbe_maybe_stop_tx(struct ixgbe_ring *tx_ring, u16 size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb,
|
static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||||
void *accel_priv)
|
void *accel_priv, select_queue_fallback_t fallback)
|
||||||
{
|
{
|
||||||
struct ixgbe_fwd_adapter *fwd_adapter = accel_priv;
|
struct ixgbe_fwd_adapter *fwd_adapter = accel_priv;
|
||||||
#ifdef IXGBE_FCOE
|
#ifdef IXGBE_FCOE
|
||||||
@@ -6907,7 +6907,7 @@ static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb,
|
|||||||
if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED)
|
if (adapter->flags & IXGBE_FLAG_FCOE_ENABLED)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return __netdev_pick_tx(dev, skb);
|
return fallback(dev, skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
f = &adapter->ring_feature[RING_F_FCOE];
|
f = &adapter->ring_feature[RING_F_FCOE];
|
||||||
@@ -6920,7 +6920,7 @@ static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb,
|
|||||||
|
|
||||||
return txq + f->offset;
|
return txq + f->offset;
|
||||||
#else
|
#else
|
||||||
return __netdev_pick_tx(dev, skb);
|
return fallback(dev, skb);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -619,7 +619,7 @@ ltq_etop_set_multicast_list(struct net_device *dev)
|
|||||||
|
|
||||||
static u16
|
static u16
|
||||||
ltq_etop_select_queue(struct net_device *dev, struct sk_buff *skb,
|
ltq_etop_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||||
void *accel_priv)
|
void *accel_priv, select_queue_fallback_t fallback)
|
||||||
{
|
{
|
||||||
/* we are currently only using the first queue */
|
/* we are currently only using the first queue */
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -43,12 +43,12 @@ config MVMDIO
|
|||||||
This driver is used by the MV643XX_ETH and MVNETA drivers.
|
This driver is used by the MV643XX_ETH and MVNETA drivers.
|
||||||
|
|
||||||
config MVNETA
|
config MVNETA
|
||||||
tristate "Marvell Armada 370/XP network interface support"
|
tristate "Marvell Armada 370/38x/XP network interface support"
|
||||||
depends on MACH_ARMADA_370_XP
|
depends on PLAT_ORION
|
||||||
select MVMDIO
|
select MVMDIO
|
||||||
---help---
|
---help---
|
||||||
This driver supports the network interface units in the
|
This driver supports the network interface units in the
|
||||||
Marvell ARMADA XP and ARMADA 370 SoC family.
|
Marvell ARMADA XP, ARMADA 370 and ARMADA 38x SoC family.
|
||||||
|
|
||||||
Note that this driver is distinct from the mv643xx_eth
|
Note that this driver is distinct from the mv643xx_eth
|
||||||
driver, which should be used for the older Marvell SoCs
|
driver, which should be used for the older Marvell SoCs
|
||||||
|
|||||||
@@ -629,7 +629,7 @@ static void build_inline_wqe(struct mlx4_en_tx_desc *tx_desc, struct sk_buff *sk
|
|||||||
}
|
}
|
||||||
|
|
||||||
u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
|
u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||||
void *accel_priv)
|
void *accel_priv, select_queue_fallback_t fallback)
|
||||||
{
|
{
|
||||||
struct mlx4_en_priv *priv = netdev_priv(dev);
|
struct mlx4_en_priv *priv = netdev_priv(dev);
|
||||||
u16 rings_p_up = priv->num_tx_rings_p_up;
|
u16 rings_p_up = priv->num_tx_rings_p_up;
|
||||||
@@ -641,7 +641,7 @@ u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
|
|||||||
if (vlan_tx_tag_present(skb))
|
if (vlan_tx_tag_present(skb))
|
||||||
up = vlan_tx_tag_get(skb) >> VLAN_PRIO_SHIFT;
|
up = vlan_tx_tag_get(skb) >> VLAN_PRIO_SHIFT;
|
||||||
|
|
||||||
return __netdev_pick_tx(dev, skb) % rings_p_up + up * rings_p_up;
|
return fallback(dev, skb) % rings_p_up + up * rings_p_up;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mlx4_bf_copy(void __iomem *dst, unsigned long *src, unsigned bytecnt)
|
static void mlx4_bf_copy(void __iomem *dst, unsigned long *src, unsigned bytecnt)
|
||||||
|
|||||||
@@ -723,7 +723,7 @@ int mlx4_en_arm_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq);
|
|||||||
|
|
||||||
void mlx4_en_tx_irq(struct mlx4_cq *mcq);
|
void mlx4_en_tx_irq(struct mlx4_cq *mcq);
|
||||||
u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
|
u16 mlx4_en_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||||
void *accel_priv);
|
void *accel_priv, select_queue_fallback_t fallback);
|
||||||
netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev);
|
netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev);
|
||||||
|
|
||||||
int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv,
|
int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv,
|
||||||
|
|||||||
@@ -37,6 +37,17 @@ config DWMAC_SUNXI
|
|||||||
stmmac device driver. This driver is used for A20/A31
|
stmmac device driver. This driver is used for A20/A31
|
||||||
GMAC ethernet controller.
|
GMAC ethernet controller.
|
||||||
|
|
||||||
|
config DWMAC_STI
|
||||||
|
bool "STi GMAC support"
|
||||||
|
depends on STMMAC_PLATFORM && ARCH_STI
|
||||||
|
default y
|
||||||
|
---help---
|
||||||
|
Support for ethernet controller on STi SOCs.
|
||||||
|
|
||||||
|
This selects STi SoC glue layer support for the stmmac
|
||||||
|
device driver. This driver is used on for the STi series
|
||||||
|
SOCs GMAC ethernet controller.
|
||||||
|
|
||||||
config STMMAC_PCI
|
config STMMAC_PCI
|
||||||
bool "STMMAC PCI bus support"
|
bool "STMMAC PCI bus support"
|
||||||
depends on STMMAC_ETH && PCI
|
depends on STMMAC_ETH && PCI
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ obj-$(CONFIG_STMMAC_ETH) += stmmac.o
|
|||||||
stmmac-$(CONFIG_STMMAC_PLATFORM) += stmmac_platform.o
|
stmmac-$(CONFIG_STMMAC_PLATFORM) += stmmac_platform.o
|
||||||
stmmac-$(CONFIG_STMMAC_PCI) += stmmac_pci.o
|
stmmac-$(CONFIG_STMMAC_PCI) += stmmac_pci.o
|
||||||
stmmac-$(CONFIG_DWMAC_SUNXI) += dwmac-sunxi.o
|
stmmac-$(CONFIG_DWMAC_SUNXI) += dwmac-sunxi.o
|
||||||
|
stmmac-$(CONFIG_DWMAC_STI) += dwmac-sti.o
|
||||||
stmmac-objs:= stmmac_main.o stmmac_ethtool.o stmmac_mdio.o ring_mode.o \
|
stmmac-objs:= stmmac_main.o stmmac_ethtool.o stmmac_mdio.o ring_mode.o \
|
||||||
chain_mode.o dwmac_lib.o dwmac1000_core.o dwmac1000_dma.o \
|
chain_mode.o dwmac_lib.o dwmac1000_core.o dwmac1000_dma.o \
|
||||||
dwmac100_core.o dwmac100_dma.o enh_desc.o norm_desc.o \
|
dwmac100_core.o dwmac100_dma.o enh_desc.o norm_desc.o \
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user