mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 06:33:41 +00:00
kernel: bump kernel 4.4 to 4.4.135 for 17.01
* Refreshed patches Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
6e47c22268
commit
2328977fed
@ -3,10 +3,10 @@
|
||||
LINUX_RELEASE?=1
|
||||
|
||||
LINUX_VERSION-3.18 = .43
|
||||
LINUX_VERSION-4.4 = .132
|
||||
LINUX_VERSION-4.4 = .135
|
||||
|
||||
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
|
||||
LINUX_KERNEL_HASH-4.4.132 = c415b01c810ad88284f9ffaebe0526efce8b1643d930dac6d8ef6a55cf6e0634
|
||||
LINUX_KERNEL_HASH-4.4.135 = 03ccb008824e363d9f83245676b9e0602f604c880dd10577653f3328c37781dc
|
||||
|
||||
ifdef KERNEL_PATCHVER
|
||||
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
|
||||
|
@ -283,7 +283,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||
dma_cap_mask_t cap_mask;
|
||||
unsigned short max_xor;
|
||||
unsigned short max_pq;
|
||||
@@ -1140,9 +1168,11 @@ enum dma_status dma_wait_for_async_tx(st
|
||||
@@ -1158,9 +1186,11 @@ enum dma_status dma_wait_for_async_tx(st
|
||||
void dma_issue_pending_all(void);
|
||||
struct dma_chan *__dma_request_channel(const dma_cap_mask_t *mask,
|
||||
dma_filter_fn fn, void *fn_param);
|
||||
@ -297,7 +297,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||
void dma_release_channel(struct dma_chan *chan);
|
||||
int dma_get_slave_caps(struct dma_chan *chan, struct dma_slave_caps *caps);
|
||||
#else
|
||||
@@ -1166,16 +1196,21 @@ static inline struct dma_chan *__dma_req
|
||||
@@ -1184,16 +1214,21 @@ static inline struct dma_chan *__dma_req
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
@ -324,7 +324,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||
static inline void dma_release_channel(struct dma_chan *chan)
|
||||
{
|
||||
}
|
||||
@@ -1186,6 +1221,8 @@ static inline int dma_get_slave_caps(str
|
||||
@@ -1204,6 +1239,8 @@ static inline int dma_get_slave_caps(str
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -179,7 +179,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||
|
||||
enum dma_status (*device_tx_status)(struct dma_chan *chan,
|
||||
dma_cookie_t cookie,
|
||||
@@ -856,6 +859,13 @@ static inline struct dma_async_tx_descri
|
||||
@@ -874,6 +877,13 @@ static inline struct dma_async_tx_descri
|
||||
src_sg, src_nents, flags);
|
||||
}
|
||||
|
||||
@ -193,7 +193,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||
static inline int dmaengine_terminate_all(struct dma_chan *chan)
|
||||
{
|
||||
if (chan->device->device_terminate_all)
|
||||
@@ -864,6 +874,86 @@ static inline int dmaengine_terminate_al
|
||||
@@ -882,6 +892,86 @@ static inline int dmaengine_terminate_al
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@ Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
@@ -4939,6 +4940,9 @@ void ata_qc_complete(struct ata_queued_c
|
||||
@@ -4945,6 +4946,9 @@ void ata_qc_complete(struct ata_queued_c
|
||||
{
|
||||
struct ata_port *ap = qc->ap;
|
||||
|
||||
|
@ -66,7 +66,7 @@
|
||||
+#define AR71XX_ETH1_PLL_SHIFT 19
|
||||
+
|
||||
#define AR724X_PLL_REG_CPU_CONFIG 0x00
|
||||
#define AR724X_PLL_REG_PCIE_CONFIG 0x18
|
||||
#define AR724X_PLL_REG_PCIE_CONFIG 0x10
|
||||
|
||||
@@ -186,6 +205,8 @@
|
||||
#define AR724X_DDR_DIV_SHIFT 22
|
||||
|
@ -49,6 +49,7 @@ CONFIG_ARM64=y
|
||||
CONFIG_ARM64_4K_PAGES=y
|
||||
# CONFIG_ARM64_64K_PAGES is not set
|
||||
# CONFIG_ARM64_CRYPTO is not set
|
||||
# CONFIG_ARM64_ERRATUM_1024718 is not set
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_826319=y
|
||||
|
@ -19,7 +19,7 @@ Link: lkml.kernel.org/r/1455225554-13267-2-git-send-email-mturquette@baylibre.co
|
||||
|
||||
--- a/drivers/clk/clk.c
|
||||
+++ b/drivers/clk/clk.c
|
||||
@@ -2466,6 +2466,11 @@ static int __clk_init(struct device *dev
|
||||
@@ -2469,6 +2469,11 @@ static int __clk_init(struct device *dev
|
||||
if (core->ops->init)
|
||||
core->ops->init(core->hw);
|
||||
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static bool bgmac_wait_value(struct bcma_device *core, u16 reg, u32 mask,
|
||||
u32 value, int timeout)
|
||||
{
|
||||
@@ -991,11 +1002,9 @@ static void bgmac_mac_speed(struct bgmac
|
||||
@@ -992,11 +1003,9 @@ static void bgmac_mac_speed(struct bgmac
|
||||
static void bgmac_miiconfig(struct bgmac *bgmac)
|
||||
{
|
||||
struct bcma_device *core = bgmac->core;
|
||||
@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bcma_awrite32(core, BCMA_IOCTL,
|
||||
bcma_aread32(core, BCMA_IOCTL) | 0x40 |
|
||||
BGMAC_BCMA_IOCTL_SW_CLKEN);
|
||||
@@ -1059,9 +1068,7 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -1060,9 +1069,7 @@ static void bgmac_chip_reset(struct bgma
|
||||
}
|
||||
|
||||
/* Request Misc PLL for corerev > 2 */
|
||||
@ -60,7 +60,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bgmac_set(bgmac, BCMA_CLKCTLST,
|
||||
BGMAC_BCMA_CLKCTLST_MISC_PLL_REQ);
|
||||
bgmac_wait_value(bgmac->core, BCMA_CLKCTLST,
|
||||
@@ -1197,8 +1204,7 @@ static void bgmac_enable(struct bgmac *b
|
||||
@@ -1198,8 +1205,7 @@ static void bgmac_enable(struct bgmac *b
|
||||
break;
|
||||
}
|
||||
|
||||
@ -70,7 +70,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
rxq_ctl = bgmac_read(bgmac, BGMAC_RXQ_CTL);
|
||||
rxq_ctl &= ~BGMAC_RXQ_CTL_MDP_MASK;
|
||||
bp_clk = bcma_pmu_get_bus_clock(&bgmac->core->bus->drv_cc) /
|
||||
@@ -1477,14 +1483,12 @@ static int bgmac_fixed_phy_register(stru
|
||||
@@ -1478,14 +1484,12 @@ static int bgmac_fixed_phy_register(stru
|
||||
|
||||
static int bgmac_mii_register(struct bgmac *bgmac)
|
||||
{
|
||||
@ -86,7 +86,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return bgmac_fixed_phy_register(bgmac);
|
||||
|
||||
mii_bus = mdiobus_alloc();
|
||||
@@ -1555,7 +1559,6 @@ static void bgmac_mii_unregister(struct
|
||||
@@ -1556,7 +1560,6 @@ static void bgmac_mii_unregister(struct
|
||||
/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipattach */
|
||||
static int bgmac_probe(struct bcma_device *core)
|
||||
{
|
||||
@ -94,7 +94,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
struct net_device *net_dev;
|
||||
struct bgmac *bgmac;
|
||||
struct ssb_sprom *sprom = &core->bus->sprom;
|
||||
@@ -1641,8 +1644,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1642,8 +1645,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
bgmac_chip_reset(bgmac);
|
||||
|
||||
/* For Northstar, we have to take all GMAC core out of reset */
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
case BCMA_CHIP_ID_BCM53018:
|
||||
return true;
|
||||
default:
|
||||
@@ -1056,8 +1057,9 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -1057,8 +1058,9 @@ static void bgmac_chip_reset(struct bgma
|
||||
(ci->id == BCMA_CHIP_ID_BCM53572 && ci->pkg == BCMA_PKG_ID_BCM47188))
|
||||
iost &= ~BGMAC_BCMA_IOST_ATTACHED;
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1604,6 +1604,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1605,6 +1605,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
bgmac->net_dev = net_dev;
|
||||
bgmac->core = core;
|
||||
bcma_set_drvdata(core, bgmac);
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1387,6 +1387,127 @@ static const struct net_device_ops bgmac
|
||||
@@ -1388,6 +1388,127 @@ static const struct net_device_ops bgmac
|
||||
* ethtool_ops
|
||||
**************************************************/
|
||||
|
||||
@ -143,7 +143,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static int bgmac_get_settings(struct net_device *net_dev,
|
||||
struct ethtool_cmd *cmd)
|
||||
{
|
||||
@@ -1411,6 +1532,9 @@ static void bgmac_get_drvinfo(struct net
|
||||
@@ -1412,6 +1533,9 @@ static void bgmac_get_drvinfo(struct net
|
||||
}
|
||||
|
||||
static const struct ethtool_ops bgmac_ethtool_ops = {
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1324,7 +1324,7 @@ static int bgmac_open(struct net_device
|
||||
@@ -1325,7 +1325,7 @@ static int bgmac_open(struct net_device
|
||||
}
|
||||
napi_enable(&bgmac->napi);
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
netif_start_queue(net_dev);
|
||||
|
||||
@@ -1337,7 +1337,7 @@ static int bgmac_stop(struct net_device
|
||||
@@ -1338,7 +1338,7 @@ static int bgmac_stop(struct net_device
|
||||
|
||||
netif_carrier_off(net_dev);
|
||||
|
||||
@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
napi_disable(&bgmac->napi);
|
||||
bgmac_chip_intrs_off(bgmac);
|
||||
@@ -1375,12 +1375,10 @@ static int bgmac_set_mac_address(struct
|
||||
@@ -1376,12 +1376,10 @@ static int bgmac_set_mac_address(struct
|
||||
|
||||
static int bgmac_ioctl(struct net_device *net_dev, struct ifreq *ifr, int cmd)
|
||||
{
|
||||
@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
static const struct net_device_ops bgmac_netdev_ops = {
|
||||
@@ -1523,7 +1521,7 @@ static int bgmac_get_settings(struct net
|
||||
@@ -1524,7 +1522,7 @@ static int bgmac_get_settings(struct net
|
||||
{
|
||||
struct bgmac *bgmac = netdev_priv(net_dev);
|
||||
|
||||
@ -58,7 +58,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
static int bgmac_set_settings(struct net_device *net_dev,
|
||||
@@ -1531,7 +1529,7 @@ static int bgmac_set_settings(struct net
|
||||
@@ -1532,7 +1530,7 @@ static int bgmac_set_settings(struct net
|
||||
{
|
||||
struct bgmac *bgmac = netdev_priv(net_dev);
|
||||
|
||||
@ -67,7 +67,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
static void bgmac_get_drvinfo(struct net_device *net_dev,
|
||||
@@ -1568,7 +1566,7 @@ static int bgmac_mii_write(struct mii_bu
|
||||
@@ -1569,7 +1567,7 @@ static int bgmac_mii_write(struct mii_bu
|
||||
static void bgmac_adjust_link(struct net_device *net_dev)
|
||||
{
|
||||
struct bgmac *bgmac = netdev_priv(net_dev);
|
||||
@ -76,7 +76,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bool update = false;
|
||||
|
||||
if (phy_dev->link) {
|
||||
@@ -1612,8 +1610,6 @@ static int bgmac_fixed_phy_register(stru
|
||||
@@ -1613,8 +1611,6 @@ static int bgmac_fixed_phy_register(stru
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -85,7 +85,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1666,7 +1662,6 @@ static int bgmac_mii_register(struct bgm
|
||||
@@ -1667,7 +1663,6 @@ static int bgmac_mii_register(struct bgm
|
||||
err = PTR_ERR(phy_dev);
|
||||
goto err_unregister_bus;
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
put_page(virt_to_head_page(buf));
|
||||
bgmac->net_dev->stats.rx_errors++;
|
||||
break;
|
||||
@@ -644,7 +644,7 @@ static int bgmac_dma_alloc(struct bgmac
|
||||
@@ -645,7 +645,7 @@ static int bgmac_dma_alloc(struct bgmac
|
||||
BUILD_BUG_ON(BGMAC_MAX_RX_RINGS > ARRAY_SIZE(ring_base));
|
||||
|
||||
if (!(bcma_aread32(bgmac->core, BCMA_IOST) & BCMA_IOST_DMA64)) {
|
||||
@ -149,7 +149,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
@@ -658,8 +658,8 @@ static int bgmac_dma_alloc(struct bgmac
|
||||
@@ -659,8 +659,8 @@ static int bgmac_dma_alloc(struct bgmac
|
||||
&ring->dma_base,
|
||||
GFP_KERNEL);
|
||||
if (!ring->cpu_base) {
|
||||
@ -160,7 +160,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
goto err_dma_free;
|
||||
}
|
||||
|
||||
@@ -683,8 +683,8 @@ static int bgmac_dma_alloc(struct bgmac
|
||||
@@ -684,8 +684,8 @@ static int bgmac_dma_alloc(struct bgmac
|
||||
&ring->dma_base,
|
||||
GFP_KERNEL);
|
||||
if (!ring->cpu_base) {
|
||||
@ -171,7 +171,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
err = -ENOMEM;
|
||||
goto err_dma_free;
|
||||
}
|
||||
@@ -803,8 +803,8 @@ static u16 bgmac_phy_read(struct bgmac *
|
||||
@@ -804,8 +804,8 @@ static u16 bgmac_phy_read(struct bgmac *
|
||||
bcma_write32(core, phy_access_addr, tmp);
|
||||
|
||||
if (!bgmac_wait_value(core, phy_access_addr, BGMAC_PA_START, 0, 1000)) {
|
||||
@ -182,7 +182,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
@@ -836,7 +836,7 @@ static int bgmac_phy_write(struct bgmac
|
||||
@@ -837,7 +837,7 @@ static int bgmac_phy_write(struct bgmac
|
||||
|
||||
bgmac_write(bgmac, BGMAC_INT_STATUS, BGMAC_IS_MDIO);
|
||||
if (bgmac_read(bgmac, BGMAC_INT_STATUS) & BGMAC_IS_MDIO)
|
||||
@ -191,7 +191,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
tmp = BGMAC_PA_START;
|
||||
tmp |= BGMAC_PA_WRITE;
|
||||
@@ -846,8 +846,8 @@ static int bgmac_phy_write(struct bgmac
|
||||
@@ -847,8 +847,8 @@ static int bgmac_phy_write(struct bgmac
|
||||
bcma_write32(core, phy_access_addr, tmp);
|
||||
|
||||
if (!bgmac_wait_value(core, phy_access_addr, BGMAC_PA_START, 0, 1000)) {
|
||||
@ -202,7 +202,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
@@ -900,7 +900,7 @@ static void bgmac_phy_reset(struct bgmac
|
||||
@@ -901,7 +901,7 @@ static void bgmac_phy_reset(struct bgmac
|
||||
bgmac_phy_write(bgmac, bgmac->phyaddr, MII_BMCR, BMCR_RESET);
|
||||
udelay(100);
|
||||
if (bgmac_phy_read(bgmac, bgmac->phyaddr, MII_BMCR) & BMCR_RESET)
|
||||
@ -211,7 +211,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bgmac_phy_init(bgmac);
|
||||
}
|
||||
|
||||
@@ -1001,7 +1001,8 @@ static void bgmac_mac_speed(struct bgmac
|
||||
@@ -1002,7 +1002,8 @@ static void bgmac_mac_speed(struct bgmac
|
||||
set |= BGMAC_CMDCFG_ES_2500;
|
||||
break;
|
||||
default:
|
||||
@ -221,7 +221,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
if (bgmac->mac_duplex == DUPLEX_HALF)
|
||||
@@ -1100,8 +1101,8 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -1101,8 +1102,8 @@ static void bgmac_chip_reset(struct bgma
|
||||
|
||||
if (bcm47xx_nvram_getenv("et_swtype", buf, sizeof(buf)) > 0) {
|
||||
if (kstrtou8(buf, 0, &et_swtype))
|
||||
@ -232,7 +232,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
et_swtype &= 0x0f;
|
||||
et_swtype <<= 4;
|
||||
sw_type = et_swtype;
|
||||
@@ -1264,7 +1265,7 @@ static irqreturn_t bgmac_interrupt(int i
|
||||
@@ -1265,7 +1266,7 @@ static irqreturn_t bgmac_interrupt(int i
|
||||
|
||||
int_status &= ~(BGMAC_IS_TX0 | BGMAC_IS_RX);
|
||||
if (int_status)
|
||||
@ -241,7 +241,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Disable new interrupts until handling existing ones */
|
||||
bgmac_chip_intrs_off(bgmac);
|
||||
@@ -1318,7 +1319,7 @@ static int bgmac_open(struct net_device
|
||||
@@ -1319,7 +1320,7 @@ static int bgmac_open(struct net_device
|
||||
err = request_irq(bgmac->core->irq, bgmac_interrupt, IRQF_SHARED,
|
||||
KBUILD_MODNAME, net_dev);
|
||||
if (err < 0) {
|
||||
@ -250,7 +250,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bgmac_dma_cleanup(bgmac);
|
||||
return err;
|
||||
}
|
||||
@@ -1599,14 +1600,14 @@ static int bgmac_fixed_phy_register(stru
|
||||
@@ -1600,14 +1601,14 @@ static int bgmac_fixed_phy_register(stru
|
||||
|
||||
phy_dev = fixed_phy_register(PHY_POLL, &fphy_status, -1, NULL);
|
||||
if (!phy_dev || IS_ERR(phy_dev)) {
|
||||
@ -267,7 +267,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1646,7 +1647,7 @@ static int bgmac_mii_register(struct bgm
|
||||
@@ -1647,7 +1648,7 @@ static int bgmac_mii_register(struct bgm
|
||||
|
||||
err = mdiobus_register(mii_bus);
|
||||
if (err) {
|
||||
@ -276,7 +276,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
goto err_free_irq;
|
||||
}
|
||||
|
||||
@@ -1658,7 +1659,7 @@ static int bgmac_mii_register(struct bgm
|
||||
@@ -1659,7 +1660,7 @@ static int bgmac_mii_register(struct bgm
|
||||
phy_dev = phy_connect(bgmac->net_dev, bus_id, &bgmac_adjust_link,
|
||||
PHY_INTERFACE_MODE_MII);
|
||||
if (IS_ERR(phy_dev)) {
|
||||
@ -285,7 +285,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
err = PTR_ERR(phy_dev);
|
||||
goto err_unregister_bus;
|
||||
}
|
||||
@@ -1707,7 +1708,8 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1708,7 +1709,8 @@ static int bgmac_probe(struct bcma_devic
|
||||
mac = sprom->et2mac;
|
||||
break;
|
||||
default:
|
||||
@ -295,7 +295,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
@@ -1730,6 +1732,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1731,6 +1733,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
net_dev->irq = core->irq;
|
||||
net_dev->ethtool_ops = &bgmac_ethtool_ops;
|
||||
bgmac = netdev_priv(net_dev);
|
||||
@ -303,7 +303,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bgmac->net_dev = net_dev;
|
||||
bgmac->core = core;
|
||||
bcma_set_drvdata(core, bgmac);
|
||||
@@ -1741,7 +1744,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1742,7 +1745,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
/* On BCM4706 we need common core to access PHY */
|
||||
if (core->id.id == BCMA_CORE_4706_MAC_GBIT &&
|
||||
!core->bus->drv_gmac_cmn.core) {
|
||||
@ -312,7 +312,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
err = -ENODEV;
|
||||
goto err_netdev_free;
|
||||
}
|
||||
@@ -1760,15 +1763,15 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1761,15 +1764,15 @@ static int bgmac_probe(struct bcma_devic
|
||||
}
|
||||
bgmac->phyaddr &= BGMAC_PHY_MASK;
|
||||
if (bgmac->phyaddr == BGMAC_PHY_MASK) {
|
||||
@ -332,7 +332,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
err = -ENOTSUPP;
|
||||
goto err_netdev_free;
|
||||
}
|
||||
@@ -1797,7 +1800,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1798,7 +1801,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
|
||||
err = bgmac_dma_alloc(bgmac);
|
||||
if (err) {
|
||||
@ -341,7 +341,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
goto err_netdev_free;
|
||||
}
|
||||
|
||||
@@ -1811,16 +1814,16 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1812,16 +1815,16 @@ static int bgmac_probe(struct bcma_devic
|
||||
bgmac->has_robosw = !!(core->bus->sprom.boardflags_lo &
|
||||
BGMAC_BFL_ENETROBO);
|
||||
if (bgmac->has_robosw)
|
||||
@ -361,7 +361,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
goto err_dma_free;
|
||||
}
|
||||
|
||||
@@ -1830,7 +1833,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1831,7 +1834,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
|
||||
err = register_netdev(bgmac->net_dev);
|
||||
if (err) {
|
||||
|
@ -65,7 +65,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
struct bgmac_dma_desc *dma_desc = ring->cpu_base;
|
||||
struct bgmac_slot_info *slot;
|
||||
int i;
|
||||
@@ -573,7 +573,7 @@ static void bgmac_dma_tx_ring_free(struc
|
||||
@@ -574,7 +574,7 @@ static void bgmac_dma_tx_ring_free(struc
|
||||
static void bgmac_dma_rx_ring_free(struct bgmac *bgmac,
|
||||
struct bgmac_dma_ring *ring)
|
||||
{
|
||||
@ -74,7 +74,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
struct bgmac_slot_info *slot;
|
||||
int i;
|
||||
|
||||
@@ -594,7 +594,7 @@ static void bgmac_dma_ring_desc_free(str
|
||||
@@ -595,7 +595,7 @@ static void bgmac_dma_ring_desc_free(str
|
||||
struct bgmac_dma_ring *ring,
|
||||
int num_slots)
|
||||
{
|
||||
@ -83,7 +83,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
int size;
|
||||
|
||||
if (!ring->cpu_base)
|
||||
@@ -632,7 +632,7 @@ static void bgmac_dma_free(struct bgmac
|
||||
@@ -633,7 +633,7 @@ static void bgmac_dma_free(struct bgmac
|
||||
|
||||
static int bgmac_dma_alloc(struct bgmac *bgmac)
|
||||
{
|
||||
@ -92,7 +92,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
struct bgmac_dma_ring *ring;
|
||||
static const u16 ring_base[] = { BGMAC_DMA_BASE0, BGMAC_DMA_BASE1,
|
||||
BGMAC_DMA_BASE2, BGMAC_DMA_BASE3, };
|
||||
@@ -1733,6 +1733,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1734,6 +1734,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
net_dev->ethtool_ops = &bgmac_ethtool_ops;
|
||||
bgmac = netdev_priv(net_dev);
|
||||
bgmac->dev = &core->dev;
|
||||
|
@ -317,7 +317,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
+MODULE_LICENSE("GPL");
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -759,150 +759,6 @@ error:
|
||||
@@ -760,150 +760,6 @@ error:
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -468,7 +468,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/**************************************************
|
||||
* Chip ops
|
||||
@@ -1159,7 +1015,8 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -1160,7 +1016,8 @@ static void bgmac_chip_reset(struct bgma
|
||||
else
|
||||
bgmac_set(bgmac, BGMAC_PHY_CNTL, BGMAC_PC_MTE);
|
||||
bgmac_miiconfig(bgmac);
|
||||
@ -478,7 +478,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
netdev_reset_queue(bgmac->net_dev);
|
||||
}
|
||||
@@ -1553,17 +1410,6 @@ static const struct ethtool_ops bgmac_et
|
||||
@@ -1554,17 +1411,6 @@ static const struct ethtool_ops bgmac_et
|
||||
* MII
|
||||
**************************************************/
|
||||
|
||||
@ -496,7 +496,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static void bgmac_adjust_link(struct net_device *net_dev)
|
||||
{
|
||||
struct bgmac *bgmac = netdev_priv(net_dev);
|
||||
@@ -1588,7 +1434,7 @@ static void bgmac_adjust_link(struct net
|
||||
@@ -1589,7 +1435,7 @@ static void bgmac_adjust_link(struct net
|
||||
}
|
||||
}
|
||||
|
||||
@ -505,7 +505,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
struct fixed_phy_status fphy_status = {
|
||||
.link = 1,
|
||||
@@ -1614,81 +1460,24 @@ static int bgmac_fixed_phy_register(stru
|
||||
@@ -1615,81 +1461,24 @@ static int bgmac_fixed_phy_register(stru
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -591,7 +591,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static int bgmac_probe(struct bcma_device *core)
|
||||
{
|
||||
struct net_device *net_dev;
|
||||
@@ -1809,9 +1598,6 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1810,9 +1599,6 @@ static int bgmac_probe(struct bcma_devic
|
||||
if (bcm47xx_nvram_getenv("et0_no_txint", NULL, 0) == 0)
|
||||
bgmac->int_mask &= ~BGMAC_IS_TX_MASK;
|
||||
|
||||
@ -601,7 +601,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bgmac->has_robosw = !!(core->bus->sprom.boardflags_lo &
|
||||
BGMAC_BFL_ENETROBO);
|
||||
if (bgmac->has_robosw)
|
||||
@@ -1822,10 +1608,25 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1823,10 +1609,25 @@ static int bgmac_probe(struct bcma_devic
|
||||
|
||||
netif_napi_add(net_dev, &bgmac->napi, bgmac_poll, BGMAC_WEIGHT);
|
||||
|
||||
@ -629,7 +629,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
net_dev->features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
|
||||
@@ -1835,18 +1636,19 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1836,18 +1637,19 @@ static int bgmac_probe(struct bcma_devic
|
||||
err = register_netdev(bgmac->net_dev);
|
||||
if (err) {
|
||||
dev_err(bgmac->dev, "Cannot register net device\n");
|
||||
@ -652,7 +652,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
err_netdev_free:
|
||||
bcma_set_drvdata(core, NULL);
|
||||
free_netdev(net_dev);
|
||||
@@ -1859,7 +1661,8 @@ static void bgmac_remove(struct bcma_dev
|
||||
@@ -1860,7 +1662,8 @@ static void bgmac_remove(struct bcma_dev
|
||||
struct bgmac *bgmac = bcma_get_drvdata(core);
|
||||
|
||||
unregister_netdev(bgmac->net_dev);
|
||||
|
@ -41,7 +41,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
ctl &= ~BGMAC_DMA_RX_BL_MASK;
|
||||
ctl |= BGMAC_DMA_RX_BL_128 << BGMAC_DMA_RX_BL_SHIFT;
|
||||
|
||||
@@ -772,14 +772,20 @@ static void bgmac_cmdcfg_maskset(struct
|
||||
@@ -773,14 +773,20 @@ static void bgmac_cmdcfg_maskset(struct
|
||||
{
|
||||
u32 cmdcfg = bgmac_read(bgmac, BGMAC_CMDCFG);
|
||||
u32 new_val = (cmdcfg & mask) | set;
|
||||
@ -64,7 +64,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
udelay(2);
|
||||
}
|
||||
|
||||
@@ -808,7 +814,7 @@ static void bgmac_chip_stats_update(stru
|
||||
@@ -809,7 +815,7 @@ static void bgmac_chip_stats_update(stru
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -73,7 +73,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
for (i = 0; i < BGMAC_NUM_MIB_TX_REGS; i++)
|
||||
bgmac->mib_tx_regs[i] =
|
||||
bgmac_read(bgmac,
|
||||
@@ -827,7 +833,7 @@ static void bgmac_clear_mib(struct bgmac
|
||||
@@ -828,7 +834,7 @@ static void bgmac_clear_mib(struct bgmac
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -82,7 +82,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return;
|
||||
|
||||
bgmac_set(bgmac, BGMAC_DEV_CTL, BGMAC_DC_MROR);
|
||||
@@ -870,9 +876,8 @@ static void bgmac_mac_speed(struct bgmac
|
||||
@@ -871,9 +877,8 @@ static void bgmac_mac_speed(struct bgmac
|
||||
static void bgmac_miiconfig(struct bgmac *bgmac)
|
||||
{
|
||||
struct bcma_device *core = bgmac->core;
|
||||
@ -93,7 +93,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bcma_awrite32(core, BCMA_IOCTL,
|
||||
bcma_aread32(core, BCMA_IOCTL) | 0x40 |
|
||||
BGMAC_BCMA_IOCTL_SW_CLKEN);
|
||||
@@ -880,6 +885,8 @@ static void bgmac_miiconfig(struct bgmac
|
||||
@@ -881,6 +886,8 @@ static void bgmac_miiconfig(struct bgmac
|
||||
bgmac->mac_duplex = DUPLEX_FULL;
|
||||
bgmac_mac_speed(bgmac);
|
||||
} else {
|
||||
@ -102,7 +102,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
imode = (bgmac_read(bgmac, BGMAC_DEV_STATUS) &
|
||||
BGMAC_DS_MM_MASK) >> BGMAC_DS_MM_SHIFT;
|
||||
if (imode == 0 || imode == 1) {
|
||||
@@ -894,9 +901,7 @@ static void bgmac_miiconfig(struct bgmac
|
||||
@@ -895,9 +902,7 @@ static void bgmac_miiconfig(struct bgmac
|
||||
static void bgmac_chip_reset(struct bgmac *bgmac)
|
||||
{
|
||||
struct bcma_device *core = bgmac->core;
|
||||
@ -113,7 +113,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
u32 iost;
|
||||
int i;
|
||||
|
||||
@@ -919,15 +924,12 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -920,15 +925,12 @@ static void bgmac_chip_reset(struct bgma
|
||||
}
|
||||
|
||||
iost = bcma_aread32(core, BCMA_IOST);
|
||||
@ -132,7 +132,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (iost & BGMAC_BCMA_IOST_ATTACHED) {
|
||||
flags = BGMAC_BCMA_IOCTL_SW_CLKEN;
|
||||
if (!bgmac->has_robosw)
|
||||
@@ -937,7 +939,7 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -938,7 +940,7 @@ static void bgmac_chip_reset(struct bgma
|
||||
}
|
||||
|
||||
/* Request Misc PLL for corerev > 2 */
|
||||
@ -141,7 +141,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bgmac_set(bgmac, BCMA_CLKCTLST,
|
||||
BGMAC_BCMA_CLKCTLST_MISC_PLL_REQ);
|
||||
bgmac_wait_value(bgmac->core, BCMA_CLKCTLST,
|
||||
@@ -946,9 +948,7 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -947,9 +949,7 @@ static void bgmac_chip_reset(struct bgma
|
||||
1000);
|
||||
}
|
||||
|
||||
@ -152,7 +152,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
struct bcma_drv_cc *cc = &bgmac->core->bus->drv_cc;
|
||||
u8 et_swtype = 0;
|
||||
u8 sw_type = BGMAC_CHIPCTL_1_SW_TYPE_EPHY |
|
||||
@@ -962,11 +962,9 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -963,11 +963,9 @@ static void bgmac_chip_reset(struct bgma
|
||||
et_swtype &= 0x0f;
|
||||
et_swtype <<= 4;
|
||||
sw_type = et_swtype;
|
||||
@ -166,7 +166,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
sw_type = BGMAC_CHIPCTL_1_IF_TYPE_RGMII |
|
||||
BGMAC_CHIPCTL_1_SW_TYPE_RGMII;
|
||||
}
|
||||
@@ -986,6 +984,11 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -987,6 +985,11 @@ static void bgmac_chip_reset(struct bgma
|
||||
* BGMAC_CMDCFG is read _after_ putting chip in a reset. So it has to
|
||||
* be keps until taking MAC out of the reset.
|
||||
*/
|
||||
@ -178,7 +178,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bgmac_cmdcfg_maskset(bgmac,
|
||||
~(BGMAC_CMDCFG_TE |
|
||||
BGMAC_CMDCFG_RE |
|
||||
@@ -1003,13 +1006,13 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -1004,13 +1007,13 @@ static void bgmac_chip_reset(struct bgma
|
||||
BGMAC_CMDCFG_PROM |
|
||||
BGMAC_CMDCFG_NLC |
|
||||
BGMAC_CMDCFG_CFE |
|
||||
@ -194,7 +194,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bcma_maskset32(bgmac->cmn, BCMA_GMAC_CMN_PHY_CTL, ~0,
|
||||
BCMA_GMAC_CMN_PC_MTE);
|
||||
else
|
||||
@@ -1035,46 +1038,48 @@ static void bgmac_chip_intrs_off(struct
|
||||
@@ -1036,46 +1039,48 @@ static void bgmac_chip_intrs_off(struct
|
||||
/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/gmac_enable */
|
||||
static void bgmac_enable(struct bgmac *bgmac)
|
||||
{
|
||||
@ -263,7 +263,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
rxq_ctl = bgmac_read(bgmac, BGMAC_RXQ_CTL);
|
||||
rxq_ctl &= ~BGMAC_RXQ_CTL_MDP_MASK;
|
||||
bp_clk = bcma_pmu_get_bus_clock(&bgmac->core->bus->drv_cc) /
|
||||
@@ -1606,6 +1611,74 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1607,6 +1612,74 @@ static int bgmac_probe(struct bcma_devic
|
||||
if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM)
|
||||
dev_warn(bgmac->dev, "Support for ADMtek ethernet switch not implemented\n");
|
||||
|
||||
|
@ -689,7 +689,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
ring->mmio_base + BGMAC_DMA_RX_STATUS,
|
||||
BGMAC_DMA_RX_STAT, BGMAC_DMA_RX_STAT_DISABLED,
|
||||
10000))
|
||||
@@ -643,7 +619,7 @@ static int bgmac_dma_alloc(struct bgmac
|
||||
@@ -644,7 +620,7 @@ static int bgmac_dma_alloc(struct bgmac
|
||||
BUILD_BUG_ON(BGMAC_MAX_TX_RINGS > ARRAY_SIZE(ring_base));
|
||||
BUILD_BUG_ON(BGMAC_MAX_RX_RINGS > ARRAY_SIZE(ring_base));
|
||||
|
||||
@ -698,7 +698,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
dev_err(bgmac->dev, "Core does not report 64-bit DMA\n");
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
@@ -875,12 +851,10 @@ static void bgmac_mac_speed(struct bgmac
|
||||
@@ -876,12 +852,10 @@ static void bgmac_mac_speed(struct bgmac
|
||||
|
||||
static void bgmac_miiconfig(struct bgmac *bgmac)
|
||||
{
|
||||
@ -714,7 +714,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bgmac->mac_speed = SPEED_2500;
|
||||
bgmac->mac_duplex = DUPLEX_FULL;
|
||||
bgmac_mac_speed(bgmac);
|
||||
@@ -900,12 +874,11 @@ static void bgmac_miiconfig(struct bgmac
|
||||
@@ -901,12 +875,11 @@ static void bgmac_miiconfig(struct bgmac
|
||||
/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipreset */
|
||||
static void bgmac_chip_reset(struct bgmac *bgmac)
|
||||
{
|
||||
@ -728,7 +728,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (!bgmac->stats_grabbed) {
|
||||
/* bgmac_chip_stats_update(bgmac); */
|
||||
bgmac->stats_grabbed = true;
|
||||
@@ -923,7 +896,7 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -924,7 +897,7 @@ static void bgmac_chip_reset(struct bgma
|
||||
/* TODO: Clear software multicast filter list */
|
||||
}
|
||||
|
||||
@ -737,7 +737,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (bgmac->feature_flags & BGMAC_FEAT_IOST_ATTACHED)
|
||||
iost &= ~BGMAC_BCMA_IOST_ATTACHED;
|
||||
|
||||
@@ -935,21 +908,20 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -936,21 +909,20 @@ static void bgmac_chip_reset(struct bgma
|
||||
if (!bgmac->has_robosw)
|
||||
flags |= BGMAC_BCMA_IOCTL_SW_RESET;
|
||||
}
|
||||
@ -761,7 +761,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
u8 et_swtype = 0;
|
||||
u8 sw_type = BGMAC_CHIPCTL_1_SW_TYPE_EPHY |
|
||||
BGMAC_CHIPCTL_1_IF_TYPE_MII;
|
||||
@@ -968,16 +940,15 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -969,16 +941,15 @@ static void bgmac_chip_reset(struct bgma
|
||||
sw_type = BGMAC_CHIPCTL_1_IF_TYPE_RGMII |
|
||||
BGMAC_CHIPCTL_1_SW_TYPE_RGMII;
|
||||
}
|
||||
@ -784,7 +784,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/gmac_reset
|
||||
* Specs don't say about using BGMAC_CMDCFG_SR, but in this routine
|
||||
@@ -1013,8 +984,8 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -1014,8 +985,8 @@ static void bgmac_chip_reset(struct bgma
|
||||
|
||||
bgmac_clear_mib(bgmac);
|
||||
if (bgmac->feature_flags & BGMAC_FEAT_CMN_PHY_CTL)
|
||||
@ -795,7 +795,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
else
|
||||
bgmac_set(bgmac, BGMAC_PHY_CNTL, BGMAC_PC_MTE);
|
||||
bgmac_miiconfig(bgmac);
|
||||
@@ -1059,8 +1030,8 @@ static void bgmac_enable(struct bgmac *b
|
||||
@@ -1060,8 +1031,8 @@ static void bgmac_enable(struct bgmac *b
|
||||
if (bgmac->feature_flags & BGMAC_FEAT_CLKCTLST || mode != 0)
|
||||
bgmac_set(bgmac, BCMA_CLKCTLST, BCMA_CLKCTLST_FORCEHT);
|
||||
if (bgmac->feature_flags & BGMAC_FEAT_CLKCTLST && mode == 2)
|
||||
@ -806,7 +806,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
if (bgmac->feature_flags & (BGMAC_FEAT_FLW_CTRL1 |
|
||||
BGMAC_FEAT_FLW_CTRL2)) {
|
||||
@@ -1082,8 +1053,7 @@ static void bgmac_enable(struct bgmac *b
|
||||
@@ -1083,8 +1054,7 @@ static void bgmac_enable(struct bgmac *b
|
||||
|
||||
rxq_ctl = bgmac_read(bgmac, BGMAC_RXQ_CTL);
|
||||
rxq_ctl &= ~BGMAC_RXQ_CTL_MDP_MASK;
|
||||
@ -816,7 +816,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mdp = (bp_clk * 128 / 1000) - 3;
|
||||
rxq_ctl |= (mdp << BGMAC_RXQ_CTL_MDP_SHIFT);
|
||||
bgmac_write(bgmac, BGMAC_RXQ_CTL, rxq_ctl);
|
||||
@@ -1178,7 +1148,7 @@ static int bgmac_open(struct net_device
|
||||
@@ -1179,7 +1149,7 @@ static int bgmac_open(struct net_device
|
||||
/* Specs say about reclaiming rings here, but we do that in DMA init */
|
||||
bgmac_chip_init(bgmac);
|
||||
|
||||
@ -825,7 +825,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
KBUILD_MODNAME, net_dev);
|
||||
if (err < 0) {
|
||||
dev_err(bgmac->dev, "IRQ request error: %d!\n", err);
|
||||
@@ -1204,7 +1174,7 @@ static int bgmac_stop(struct net_device
|
||||
@@ -1205,7 +1175,7 @@ static int bgmac_stop(struct net_device
|
||||
|
||||
napi_disable(&bgmac->napi);
|
||||
bgmac_chip_intrs_off(bgmac);
|
||||
@ -834,7 +834,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
bgmac_chip_reset(bgmac);
|
||||
bgmac_dma_cleanup(bgmac);
|
||||
@@ -1399,7 +1369,7 @@ static void bgmac_get_drvinfo(struct net
|
||||
@@ -1400,7 +1370,7 @@ static void bgmac_get_drvinfo(struct net
|
||||
struct ethtool_drvinfo *info)
|
||||
{
|
||||
strlcpy(info->driver, KBUILD_MODNAME, sizeof(info->driver));
|
||||
@ -843,7 +843,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
static const struct ethtool_ops bgmac_ethtool_ops = {
|
||||
@@ -1483,116 +1453,41 @@ static int bgmac_phy_connect(struct bgma
|
||||
@@ -1484,116 +1454,41 @@ static int bgmac_phy_connect(struct bgma
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -976,7 +976,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
err = bgmac_dma_alloc(bgmac);
|
||||
if (err) {
|
||||
dev_err(bgmac->dev, "Unable to alloc memory for DMA\n");
|
||||
@@ -1603,103 +1498,15 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1604,103 +1499,15 @@ static int bgmac_probe(struct bcma_devic
|
||||
if (bcm47xx_nvram_getenv("et0_no_txint", NULL, 0) == 0)
|
||||
bgmac->int_mask &= ~BGMAC_IS_TX_MASK;
|
||||
|
||||
@ -1081,7 +1081,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
net_dev->features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
|
||||
@@ -1718,56 +1525,24 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1719,56 +1526,24 @@ static int bgmac_probe(struct bcma_devic
|
||||
|
||||
err_phy_disconnect:
|
||||
phy_disconnect(net_dev->phydev);
|
||||
|
@ -75,7 +75,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
bgmac->feature_flags |= BGMAC_FEAT_SET_RXQ_CLK;
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -943,6 +943,27 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -944,6 +944,27 @@ static void bgmac_chip_reset(struct bgma
|
||||
bgmac_cco_ctl_maskset(bgmac, 1, ~(BGMAC_CHIPCTL_1_IF_TYPE_MASK |
|
||||
BGMAC_CHIPCTL_1_SW_TYPE_MASK),
|
||||
sw_type);
|
||||
@ -103,7 +103,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
if (iost & BGMAC_BCMA_IOST_ATTACHED && !bgmac->has_robosw)
|
||||
@@ -1486,6 +1507,10 @@ int bgmac_enet_probe(struct bgmac *info)
|
||||
@@ -1487,6 +1508,10 @@ int bgmac_enet_probe(struct bgmac *info)
|
||||
*/
|
||||
bgmac_clk_enable(bgmac, 0);
|
||||
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -935,7 +935,8 @@ static void bgmac_chip_reset(struct bgma
|
||||
@@ -936,7 +936,8 @@ static void bgmac_chip_reset(struct bgma
|
||||
et_swtype <<= 4;
|
||||
sw_type = et_swtype;
|
||||
} else if (bgmac->feature_flags & BGMAC_FEAT_SW_TYPE_EPHYRMII) {
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1049,7 +1049,7 @@ static void bgmac_enable(struct bgmac *b
|
||||
@@ -1050,7 +1050,7 @@ static void bgmac_enable(struct bgmac *b
|
||||
|
||||
mode = (bgmac_read(bgmac, BGMAC_DEV_STATUS) & BGMAC_DS_MM_MASK) >>
|
||||
BGMAC_DS_MM_SHIFT;
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1468,7 +1468,7 @@ static int bgmac_phy_connect(struct bgma
|
||||
@@ -1469,7 +1469,7 @@ static int bgmac_phy_connect(struct bgma
|
||||
phy_dev = phy_connect(bgmac->net_dev, bus_id, &bgmac_adjust_link,
|
||||
PHY_INTERFACE_MODE_MII);
|
||||
if (IS_ERR(phy_dev)) {
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1049,9 +1049,9 @@ static void bgmac_enable(struct bgmac *b
|
||||
@@ -1050,9 +1050,9 @@ static void bgmac_enable(struct bgmac *b
|
||||
|
||||
mode = (bgmac_read(bgmac, BGMAC_DEV_STATUS) & BGMAC_DS_MM_MASK) >>
|
||||
BGMAC_DS_MM_SHIFT;
|
||||
|
@ -68,7 +68,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1475,22 +1475,32 @@ static int bgmac_phy_connect(struct bgma
|
||||
@@ -1476,22 +1476,32 @@ static int bgmac_phy_connect(struct bgma
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
net_dev->irq = bgmac->irq;
|
||||
SET_NETDEV_DEV(net_dev, bgmac->dev);
|
||||
|
||||
@@ -1517,7 +1527,7 @@ int bgmac_enet_probe(struct bgmac *info)
|
||||
@@ -1518,7 +1528,7 @@ int bgmac_enet_probe(struct bgmac *info)
|
||||
err = bgmac_dma_alloc(bgmac);
|
||||
if (err) {
|
||||
dev_err(bgmac->dev, "Unable to alloc memory for DMA\n");
|
||||
@ -115,7 +115,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
bgmac->int_mask = BGMAC_IS_ERRMASK | BGMAC_IS_RX | BGMAC_IS_TX_MASK;
|
||||
@@ -1553,8 +1563,7 @@ err_phy_disconnect:
|
||||
@@ -1554,8 +1564,7 @@ err_phy_disconnect:
|
||||
phy_disconnect(net_dev->phydev);
|
||||
err_dma_free:
|
||||
bgmac_dma_free(bgmac);
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
dmam_alloc_coherent()
|
||||
--- a/drivers/clk/clk.c
|
||||
+++ b/drivers/clk/clk.c
|
||||
@@ -2595,6 +2595,22 @@ fail_out:
|
||||
@@ -2598,6 +2598,22 @@ fail_out:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(clk_register);
|
||||
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
/* Free memory allocated for a clock. */
|
||||
static void __clk_release(struct kref *ref)
|
||||
{
|
||||
@@ -2696,11 +2712,26 @@ void clk_unregister(struct clk *clk)
|
||||
@@ -2699,11 +2715,26 @@ void clk_unregister(struct clk *clk)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(clk_unregister);
|
||||
|
||||
@ -86,7 +86,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
/**
|
||||
* devm_clk_register - resource managed clk_register()
|
||||
* @dev: device that is registering this clock
|
||||
@@ -2731,6 +2762,36 @@ struct clk *devm_clk_register(struct dev
|
||||
@@ -2734,6 +2765,36 @@ struct clk *devm_clk_register(struct dev
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devm_clk_register);
|
||||
|
||||
@ -123,7 +123,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
static int devm_clk_match(struct device *dev, void *res, void *data)
|
||||
{
|
||||
struct clk *c = res;
|
||||
@@ -2739,6 +2800,15 @@ static int devm_clk_match(struct device
|
||||
@@ -2742,6 +2803,15 @@ static int devm_clk_match(struct device
|
||||
return c == data;
|
||||
}
|
||||
|
||||
@ -139,7 +139,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
/**
|
||||
* devm_clk_unregister - resource managed clk_unregister()
|
||||
* @clk: clock to unregister
|
||||
@@ -2753,6 +2823,22 @@ void devm_clk_unregister(struct device *
|
||||
@@ -2756,6 +2826,22 @@ void devm_clk_unregister(struct device *
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(devm_clk_unregister);
|
||||
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
|
||||
--- a/drivers/clk/clk.c
|
||||
+++ b/drivers/clk/clk.c
|
||||
@@ -3001,6 +3001,7 @@ struct of_clk_provider {
|
||||
@@ -3004,6 +3004,7 @@ struct of_clk_provider {
|
||||
|
||||
struct device_node *node;
|
||||
struct clk *(*get)(struct of_phandle_args *clkspec, void *data);
|
||||
@ -38,7 +38,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
void *data;
|
||||
};
|
||||
|
||||
@@ -3017,6 +3018,12 @@ struct clk *of_clk_src_simple_get(struct
|
||||
@@ -3020,6 +3021,12 @@ struct clk *of_clk_src_simple_get(struct
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_clk_src_simple_get);
|
||||
|
||||
@ -51,7 +51,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
struct clk *of_clk_src_onecell_get(struct of_phandle_args *clkspec, void *data)
|
||||
{
|
||||
struct clk_onecell_data *clk_data = data;
|
||||
@@ -3031,6 +3038,21 @@ struct clk *of_clk_src_onecell_get(struc
|
||||
@@ -3034,6 +3041,21 @@ struct clk *of_clk_src_onecell_get(struc
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_clk_src_onecell_get);
|
||||
|
||||
@ -73,7 +73,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
/**
|
||||
* of_clk_add_provider() - Register a clock provider for a node
|
||||
* @np: Device node pointer associated with clock provider
|
||||
@@ -3067,6 +3089,41 @@ int of_clk_add_provider(struct device_no
|
||||
@@ -3070,6 +3092,41 @@ int of_clk_add_provider(struct device_no
|
||||
EXPORT_SYMBOL_GPL(of_clk_add_provider);
|
||||
|
||||
/**
|
||||
@ -115,7 +115,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
* of_clk_del_provider() - Remove a previously registered clock provider
|
||||
* @np: Device node pointer associated with clock provider
|
||||
*/
|
||||
@@ -3087,11 +3144,32 @@ void of_clk_del_provider(struct device_n
|
||||
@@ -3090,11 +3147,32 @@ void of_clk_del_provider(struct device_n
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(of_clk_del_provider);
|
||||
|
||||
@ -148,7 +148,7 @@ Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
|
||||
|
||||
if (!clkspec)
|
||||
return ERR_PTR(-EINVAL);
|
||||
@@ -3100,10 +3178,9 @@ struct clk *__of_clk_get_from_provider(s
|
||||
@@ -3103,10 +3181,9 @@ struct clk *__of_clk_get_from_provider(s
|
||||
mutex_lock(&of_clk_mutex);
|
||||
list_for_each_entry(provider, &of_clk_providers, link) {
|
||||
if (provider->node == clkspec->np)
|
||||
|
@ -82,8 +82,8 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Gobi 1000 QMI/wwan interface number is 3 according to qcserial */
|
||||
#define QMI_GOBI1K_DEVICE(vend, prod) \
|
||||
QMI_FIXED_INTF(vend, prod, 3)
|
||||
@@ -909,6 +933,8 @@ static const struct usb_device_id produc
|
||||
{QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */
|
||||
@@ -914,6 +938,8 @@ static const struct usb_device_id produc
|
||||
{QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
|
||||
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
|
||||
{QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */
|
||||
+ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0125, 4)}, /* Quectel EC25, EC20 R2.0 Mini PCIe */
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
.get_acl = jffs2_get_acl,
|
||||
.set_acl = jffs2_set_acl,
|
||||
.setattr = jffs2_setattr,
|
||||
@@ -754,8 +754,27 @@ static int jffs2_mknod (struct inode *di
|
||||
@@ -750,8 +750,27 @@ static int jffs2_mknod (struct inode *di
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
{
|
||||
int ret;
|
||||
struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
|
||||
@@ -763,6 +782,9 @@ static int jffs2_rename (struct inode *o
|
||||
@@ -759,6 +778,9 @@ static int jffs2_rename (struct inode *o
|
||||
uint8_t type;
|
||||
uint32_t now;
|
||||
|
||||
@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/* The VFS will check for us and prevent trying to rename a
|
||||
* file over a directory and vice versa, but if it's a directory,
|
||||
* the VFS can't check whether the victim is empty. The filesystem
|
||||
@@ -826,9 +848,14 @@ static int jffs2_rename (struct inode *o
|
||||
@@ -822,9 +844,14 @@ static int jffs2_rename (struct inode *o
|
||||
if (d_is_dir(old_dentry) && !victim_f)
|
||||
inc_nlink(new_dir_i);
|
||||
|
||||
|
@ -7,7 +7,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/fs/jffs2/dir.c
|
||||
+++ b/fs/jffs2/dir.c
|
||||
@@ -779,18 +779,31 @@ static int jffs2_rename (struct inode *o
|
||||
@@ -775,18 +775,31 @@ static int jffs2_rename (struct inode *o
|
||||
int ret;
|
||||
struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
|
||||
struct jffs2_inode_info *victim_f = NULL;
|
||||
@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
victim_f = JFFS2_INODE_INFO(d_inode(new_dentry));
|
||||
if (d_is_dir(new_dentry)) {
|
||||
struct jffs2_full_dirent *fd;
|
||||
@@ -825,7 +838,7 @@ static int jffs2_rename (struct inode *o
|
||||
@@ -821,7 +834,7 @@ static int jffs2_rename (struct inode *o
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@ -50,7 +50,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/* There was a victim. Kill it off nicely */
|
||||
if (d_is_dir(new_dentry))
|
||||
clear_nlink(d_inode(new_dentry));
|
||||
@@ -845,12 +858,18 @@ static int jffs2_rename (struct inode *o
|
||||
@@ -841,12 +854,18 @@ static int jffs2_rename (struct inode *o
|
||||
|
||||
/* If it was a directory we moved, and there was no victim,
|
||||
increase i_nlink on its new parent */
|
||||
@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
else
|
||||
/* Unlink the original */
|
||||
ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
|
||||
@@ -882,7 +901,7 @@ static int jffs2_rename (struct inode *o
|
||||
@@ -878,7 +897,7 @@ static int jffs2_rename (struct inode *o
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
|
||||
/*
|
||||
* IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
|
||||
@@ -135,11 +136,13 @@
|
||||
@@ -136,11 +137,13 @@
|
||||
* This is an Ethernet frame header.
|
||||
*/
|
||||
|
||||
|
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -3135,6 +3137,7 @@ static int packet_create(struct net *net
|
||||
@@ -3137,6 +3139,7 @@ static int packet_create(struct net *net
|
||||
mutex_init(&po->pg_vec_lock);
|
||||
po->rollover = NULL;
|
||||
po->prot_hook.func = packet_rcv;
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3793,6 +3796,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3795,6 +3798,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||
return 0;
|
||||
}
|
||||
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -3845,6 +3858,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -3847,6 +3860,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
@ -12,7 +12,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
#include <linux/bcm47xx_nvram.h>
|
||||
#include "bgmac.h"
|
||||
|
||||
@@ -1403,6 +1404,17 @@ static const struct ethtool_ops bgmac_et
|
||||
@@ -1404,6 +1405,17 @@ static const struct ethtool_ops bgmac_et
|
||||
.get_drvinfo = bgmac_get_drvinfo,
|
||||
};
|
||||
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
/**************************************************
|
||||
* MII
|
||||
**************************************************/
|
||||
@@ -1549,6 +1561,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
|
||||
@@ -1550,6 +1562,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
|
||||
net_dev->hw_features = net_dev->features;
|
||||
net_dev->vlan_features = net_dev->features;
|
||||
|
||||
@ -45,7 +45,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
err = register_netdev(bgmac->net_dev);
|
||||
if (err) {
|
||||
dev_err(bgmac->dev, "Cannot register net device\n");
|
||||
@@ -1571,6 +1591,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
|
||||
@@ -1572,6 +1592,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
|
||||
|
||||
void bgmac_enet_remove(struct bgmac *bgmac)
|
||||
{
|
||||
|
@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
/**
|
||||
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
||||
* @tf: Target ATA taskfile
|
||||
@@ -4805,6 +4818,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
@@ -4811,6 +4824,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
if (tag < 0)
|
||||
return NULL;
|
||||
}
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
qc = __ata_qc_from_tag(ap, tag);
|
||||
qc->tag = tag;
|
||||
@@ -5701,6 +5717,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
@@ -5707,6 +5723,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||
ap->stats.unhandled_irq = 1;
|
||||
ap->stats.idle_irq = 1;
|
||||
#endif
|
||||
@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
ata_sff_port_init(ap);
|
||||
|
||||
return ap;
|
||||
@@ -5722,6 +5741,12 @@ static void ata_host_release(struct devi
|
||||
@@ -5728,6 +5747,12 @@ static void ata_host_release(struct devi
|
||||
|
||||
kfree(ap->pmp_link);
|
||||
kfree(ap->slave_link);
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
kfree(ap);
|
||||
host->ports[i] = NULL;
|
||||
}
|
||||
@@ -6168,7 +6193,23 @@ int ata_host_register(struct ata_host *h
|
||||
@@ -6174,7 +6199,23 @@ int ata_host_register(struct ata_host *h
|
||||
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
|
||||
host->ports[i]->local_port_no = i + 1;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@
|
||||
static void __sk_free(struct sock *sk)
|
||||
{
|
||||
+#ifdef CONFIG_SOCK_DIAG
|
||||
if (unlikely(sock_diag_has_destroy_listeners(sk) && sk->sk_net_refcnt))
|
||||
if (unlikely(sk->sk_net_refcnt && sock_diag_has_destroy_listeners(sk)))
|
||||
sock_diag_broadcast_destroy(sk);
|
||||
else
|
||||
+#endif
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: Felipe Balbi <balbi@kernel.org>
|
||||
|
||||
--- a/drivers/usb/dwc3/core.h
|
||||
+++ b/drivers/usb/dwc3/core.h
|
||||
@@ -1019,6 +1019,12 @@ struct dwc3_gadget_ep_cmd_params {
|
||||
@@ -1021,6 +1021,12 @@ struct dwc3_gadget_ep_cmd_params {
|
||||
void dwc3_set_mode(struct dwc3 *dwc, u32 mode);
|
||||
int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc);
|
||||
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Felipe Balbi <balbi@kernel.org>
|
||||
|
||||
--- a/drivers/usb/dwc3/core.h
|
||||
+++ b/drivers/usb/dwc3/core.h
|
||||
@@ -220,7 +220,8 @@
|
||||
@@ -222,7 +222,8 @@
|
||||
/* Global HWPARAMS3 Register */
|
||||
#define DWC3_GHWPARAMS3_SSPHY_IFC(n) ((n) & 3)
|
||||
#define DWC3_GHWPARAMS3_SSPHY_IFC_DIS 0
|
||||
@ -24,7 +24,7 @@ Signed-off-by: Felipe Balbi <balbi@kernel.org>
|
||||
#define DWC3_GHWPARAMS3_HSPHY_IFC(n) (((n) & (3 << 2)) >> 2)
|
||||
#define DWC3_GHWPARAMS3_HSPHY_IFC_DIS 0
|
||||
#define DWC3_GHWPARAMS3_HSPHY_IFC_UTMI 1
|
||||
@@ -246,6 +247,7 @@
|
||||
@@ -248,6 +249,7 @@
|
||||
#define DWC3_DCFG_DEVADDR_MASK DWC3_DCFG_DEVADDR(0x7f)
|
||||
|
||||
#define DWC3_DCFG_SPEED_MASK (7 << 0)
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Felipe Balbi <balbi@kernel.org>
|
||||
#define DWC3_DCFG_SUPERSPEED (4 << 0)
|
||||
#define DWC3_DCFG_HIGHSPEED (0 << 0)
|
||||
#define DWC3_DCFG_FULLSPEED2 (1 << 0)
|
||||
@@ -336,6 +338,7 @@
|
||||
@@ -338,6 +340,7 @@
|
||||
|
||||
#define DWC3_DSTS_CONNECTSPD (7 << 0)
|
||||
|
||||
|
@ -82,7 +82,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
|
||||
--- a/drivers/usb/dwc3/core.h
|
||||
+++ b/drivers/usb/dwc3/core.h
|
||||
@@ -705,9 +705,7 @@ struct dwc3_scratchpad_array {
|
||||
@@ -707,9 +707,7 @@ struct dwc3_scratchpad_array {
|
||||
* 0 - utmi_sleep_n
|
||||
* 1 - utmi_l1_suspend_n
|
||||
* @is_fpga: true when we are using the FPGA board
|
||||
@ -92,7 +92,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
* @setup_packet_pending: true when there's a Setup Packet in FIFO. Workaround
|
||||
* @start_config_issued: true when StartConfig command has been issued
|
||||
* @three_stage_setup: set if we perform a three phase setup
|
||||
@@ -850,9 +848,7 @@ struct dwc3 {
|
||||
@@ -852,9 +850,7 @@ struct dwc3 {
|
||||
unsigned has_lpm_erratum:1;
|
||||
unsigned is_utmi_l1_suspend:1;
|
||||
unsigned is_fpga:1;
|
||||
@ -102,7 +102,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
unsigned setup_packet_pending:1;
|
||||
unsigned three_stage_setup:1;
|
||||
unsigned usb3_lpm_capable:1;
|
||||
@@ -1020,7 +1016,6 @@ struct dwc3_gadget_ep_cmd_params {
|
||||
@@ -1022,7 +1018,6 @@ struct dwc3_gadget_ep_cmd_params {
|
||||
|
||||
/* prototypes */
|
||||
void dwc3_set_mode(struct dwc3 *dwc, u32 mode);
|
||||
|
@ -143,7 +143,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
static int dwc3_alloc_scratch_buffers(struct dwc3 *dwc)
|
||||
--- a/drivers/usb/dwc3/core.h
|
||||
+++ b/drivers/usb/dwc3/core.h
|
||||
@@ -663,7 +663,6 @@ struct dwc3_scratchpad_array {
|
||||
@@ -665,7 +665,6 @@ struct dwc3_scratchpad_array {
|
||||
* @regs: base address for our registers
|
||||
* @regs_size: address space size
|
||||
* @nr_scratch: number of scratch buffers
|
||||
@ -151,7 +151,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
* @u1u2: only used on revisions <1.83a for workaround
|
||||
* @maximum_speed: maximum speed requested (mainly for testing purposes)
|
||||
* @revision: revision register contents
|
||||
@@ -773,7 +772,6 @@ struct dwc3 {
|
||||
@@ -775,7 +774,6 @@ struct dwc3 {
|
||||
u32 gctl;
|
||||
|
||||
u32 nr_scratch;
|
||||
|
@ -65,7 +65,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
|
||||
|
||||
--- a/drivers/usb/dwc3/core.h
|
||||
+++ b/drivers/usb/dwc3/core.h
|
||||
@@ -748,7 +748,7 @@ struct dwc3 {
|
||||
@@ -750,7 +750,7 @@ struct dwc3 {
|
||||
struct platform_device *xhci;
|
||||
struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM];
|
||||
|
||||
|
@ -35,6 +35,7 @@ CONFIG_ARM64=y
|
||||
CONFIG_ARM64_4K_PAGES=y
|
||||
# CONFIG_ARM64_64K_PAGES is not set
|
||||
# CONFIG_ARM64_CRYPTO is not set
|
||||
# CONFIG_ARM64_ERRATUM_1024718 is not set
|
||||
CONFIG_ARM64_ERRATUM_819472=y
|
||||
CONFIG_ARM64_ERRATUM_824069=y
|
||||
CONFIG_ARM64_ERRATUM_826319=y
|
||||
|
@ -204,7 +204,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3672,11 +3674,12 @@ static void quirk_fixed_dma_alias(struct
|
||||
@@ -3677,11 +3679,12 @@ static void quirk_fixed_dma_alias(struct
|
||||
|
||||
id = pci_match_id(fixed_dma_alias_tbl, dev);
|
||||
if (id) {
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
|
||||
struct clk_hw *
|
||||
clk_hw_get_parent_by_index(const struct clk_hw *hw, unsigned int index)
|
||||
{
|
||||
@@ -2033,6 +2046,12 @@ static const struct file_operations clk_
|
||||
@@ -2036,6 +2049,12 @@ static const struct file_operations clk_
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -1071,15 +1071,28 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1072,15 +1072,28 @@ static void mvneta_defaults_set(struct m
|
||||
MVNETA_GMAC_AN_SPEED_EN |
|
||||
MVNETA_GMAC_AN_DUPLEX_EN;
|
||||
mvreg_write(pp, MVNETA_GMAC_AUTONEG_CONFIG, val);
|
||||
@ -43,7 +43,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
mvneta_set_ucast_table(pp, -1);
|
||||
@@ -3232,9 +3245,6 @@ static int mvneta_port_power_up(struct m
|
||||
@@ -3233,9 +3246,6 @@ static int mvneta_port_power_up(struct m
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
u64 ethtool_stats[ARRAY_SIZE(mvneta_statistics)];
|
||||
};
|
||||
@@ -977,6 +977,44 @@ static void mvneta_set_other_mcast_table
|
||||
@@ -978,6 +978,44 @@ static void mvneta_set_other_mcast_table
|
||||
mvreg_write(pp, MVNETA_DA_FILT_OTH_MCAST + offset, val);
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* This method sets defaults to the NETA port:
|
||||
* Clears interrupt Cause and Mask registers.
|
||||
* Clears all MAC tables.
|
||||
@@ -1062,39 +1100,7 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1063,39 +1101,7 @@ static void mvneta_defaults_set(struct m
|
||||
val &= ~MVNETA_PHY_POLLING_ENABLE;
|
||||
mvreg_write(pp, MVNETA_UNIT_CONTROL, val);
|
||||
|
||||
@ -118,7 +118,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvneta_set_ucast_table(pp, -1);
|
||||
mvneta_set_special_mcast_table(pp, -1);
|
||||
mvneta_set_other_mcast_table(pp, -1);
|
||||
@@ -2958,10 +2964,43 @@ int mvneta_ethtool_get_settings(struct n
|
||||
@@ -2959,10 +2965,43 @@ int mvneta_ethtool_get_settings(struct n
|
||||
int mvneta_ethtool_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
|
@ -19,16 +19,16 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Core clock */
|
||||
struct clk *clk;
|
||||
@@ -819,7 +820,7 @@ static void mvneta_port_up(struct mvneta
|
||||
mvreg_write(pp, MVNETA_TXQ_CMD, q_map);
|
||||
@@ -820,7 +821,7 @@ static void mvneta_port_up(struct mvneta
|
||||
|
||||
q_map = 0;
|
||||
/* Enable all initialized RXQs. */
|
||||
- mvreg_write(pp, MVNETA_RXQ_CMD, BIT(rxq_def));
|
||||
+ mvreg_write(pp, MVNETA_RXQ_CMD, BIT(pp->rxq_def));
|
||||
}
|
||||
|
||||
/* Stop the Ethernet port activity */
|
||||
@@ -1071,7 +1072,7 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1072,7 +1073,7 @@ static void mvneta_defaults_set(struct m
|
||||
mvreg_write(pp, MVNETA_ACC_MODE, val);
|
||||
|
||||
/* Update val of portCfg register accordingly with all RxQueue types */
|
||||
@ -37,7 +37,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvreg_write(pp, MVNETA_PORT_CONFIG, val);
|
||||
|
||||
val = 0;
|
||||
@@ -2105,19 +2106,19 @@ static void mvneta_set_rx_mode(struct ne
|
||||
@@ -2106,19 +2107,19 @@ static void mvneta_set_rx_mode(struct ne
|
||||
if (dev->flags & IFF_PROMISC) {
|
||||
/* Accept all: Multicast + Unicast */
|
||||
mvneta_rx_unicast_promisc_set(pp, 1);
|
||||
@ -63,7 +63,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
} else {
|
||||
/* Accept only initialized multicast */
|
||||
mvneta_set_special_mcast_table(pp, -1);
|
||||
@@ -2126,7 +2127,7 @@ static void mvneta_set_rx_mode(struct ne
|
||||
@@ -2127,7 +2128,7 @@ static void mvneta_set_rx_mode(struct ne
|
||||
if (!netdev_mc_empty(dev)) {
|
||||
netdev_for_each_mc_addr(ha, dev) {
|
||||
mvneta_mcast_addr_set(pp, ha->addr,
|
||||
@ -72,7 +72,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2209,7 +2210,7 @@ static int mvneta_poll(struct napi_struc
|
||||
@@ -2210,7 +2211,7 @@ static int mvneta_poll(struct napi_struc
|
||||
* RX packets
|
||||
*/
|
||||
cause_rx_tx |= port->cause_rx_tx;
|
||||
@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
budget -= rx_done;
|
||||
|
||||
if (budget > 0) {
|
||||
@@ -2422,17 +2423,17 @@ static void mvneta_cleanup_txqs(struct m
|
||||
@@ -2423,17 +2424,17 @@ static void mvneta_cleanup_txqs(struct m
|
||||
/* Cleanup all Rx queues */
|
||||
static void mvneta_cleanup_rxqs(struct mvneta_port *pp)
|
||||
{
|
||||
@ -102,7 +102,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvneta_cleanup_rxqs(pp);
|
||||
return err;
|
||||
}
|
||||
@@ -2638,7 +2639,7 @@ static int mvneta_set_mac_addr(struct ne
|
||||
@@ -2639,7 +2640,7 @@ static int mvneta_set_mac_addr(struct ne
|
||||
mvneta_mac_addr_set(pp, dev->dev_addr, -1);
|
||||
|
||||
/* Set new addr in hw */
|
||||
@ -111,7 +111,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
eth_commit_mac_addr_change(dev, addr);
|
||||
return 0;
|
||||
@@ -2757,7 +2758,7 @@ static void mvneta_percpu_elect(struct m
|
||||
@@ -2758,7 +2759,7 @@ static void mvneta_percpu_elect(struct m
|
||||
{
|
||||
int online_cpu_idx, cpu, i = 0;
|
||||
|
||||
@ -120,7 +120,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
for_each_online_cpu(cpu) {
|
||||
if (i == online_cpu_idx)
|
||||
@@ -3365,6 +3366,8 @@ static int mvneta_probe(struct platform_
|
||||
@@ -3366,6 +3367,8 @@ static int mvneta_probe(struct platform_
|
||||
strcmp(managed, "in-band-status") == 0);
|
||||
pp->cpu_notifier.notifier_call = mvneta_percpu_notifier;
|
||||
|
||||
|
@ -32,9 +32,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
#define MVNETA_INTR_NEW_CAUSE 0x25a0
|
||||
#define MVNETA_INTR_NEW_MASK 0x25a4
|
||||
@@ -820,7 +827,13 @@ static void mvneta_port_up(struct mvneta
|
||||
mvreg_write(pp, MVNETA_TXQ_CMD, q_map);
|
||||
@@ -821,7 +828,13 @@ static void mvneta_port_up(struct mvneta
|
||||
|
||||
q_map = 0;
|
||||
/* Enable all initialized RXQs. */
|
||||
- mvreg_write(pp, MVNETA_RXQ_CMD, BIT(pp->rxq_def));
|
||||
+ for (queue = 0; queue < rxq_number; queue++) {
|
||||
@ -47,7 +47,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
/* Stop the Ethernet port activity */
|
||||
@@ -1030,6 +1043,7 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1031,6 +1044,7 @@ static void mvneta_defaults_set(struct m
|
||||
int cpu;
|
||||
int queue;
|
||||
u32 val;
|
||||
@ -55,7 +55,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Clear all Cause registers */
|
||||
mvreg_write(pp, MVNETA_INTR_NEW_CAUSE, 0);
|
||||
@@ -1045,13 +1059,23 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1046,13 +1060,23 @@ static void mvneta_defaults_set(struct m
|
||||
/* Enable MBUS Retry bit16 */
|
||||
mvreg_write(pp, MVNETA_MBUS_RETRY, 0x20);
|
||||
|
||||
@ -85,7 +85,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Reset RX and TX DMAs */
|
||||
mvreg_write(pp, MVNETA_PORT_RX_RESET, MVNETA_PORT_RX_DMA_RESET);
|
||||
@@ -2178,6 +2202,7 @@ static int mvneta_poll(struct napi_struc
|
||||
@@ -2179,6 +2203,7 @@ static int mvneta_poll(struct napi_struc
|
||||
{
|
||||
int rx_done = 0;
|
||||
u32 cause_rx_tx;
|
||||
@ -93,7 +93,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
struct mvneta_port *pp = netdev_priv(napi->dev);
|
||||
struct mvneta_pcpu_port *port = this_cpu_ptr(pp->ports);
|
||||
|
||||
@@ -2209,8 +2234,15 @@ static int mvneta_poll(struct napi_struc
|
||||
@@ -2210,8 +2235,15 @@ static int mvneta_poll(struct napi_struc
|
||||
/* For the case where the last mvneta_poll did not process all
|
||||
* RX packets
|
||||
*/
|
||||
@ -110,7 +110,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
budget -= rx_done;
|
||||
|
||||
if (budget > 0) {
|
||||
@@ -2423,19 +2455,27 @@ static void mvneta_cleanup_txqs(struct m
|
||||
@@ -2424,19 +2456,27 @@ static void mvneta_cleanup_txqs(struct m
|
||||
/* Cleanup all Rx queues */
|
||||
static void mvneta_cleanup_rxqs(struct mvneta_port *pp)
|
||||
{
|
||||
@ -145,7 +145,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -2459,6 +2499,19 @@ static int mvneta_setup_txqs(struct mvne
|
||||
@@ -2460,6 +2500,19 @@ static int mvneta_setup_txqs(struct mvne
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -165,7 +165,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static void mvneta_start_dev(struct mvneta_port *pp)
|
||||
{
|
||||
unsigned int cpu;
|
||||
@@ -2476,11 +2529,10 @@ static void mvneta_start_dev(struct mvne
|
||||
@@ -2477,11 +2530,10 @@ static void mvneta_start_dev(struct mvne
|
||||
napi_enable(&port->napi);
|
||||
}
|
||||
|
||||
@ -181,7 +181,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
||||
MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
||||
MVNETA_CAUSE_LINK_CHANGE |
|
||||
@@ -2756,22 +2808,35 @@ static void mvneta_percpu_disable(void *
|
||||
@@ -2757,22 +2809,35 @@ static void mvneta_percpu_disable(void *
|
||||
|
||||
static void mvneta_percpu_elect(struct mvneta_port *pp)
|
||||
{
|
||||
@ -227,7 +227,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2806,12 +2871,22 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2807,12 +2872,22 @@ static int mvneta_percpu_notifier(struct
|
||||
mvreg_write(pp, MVNETA_INTR_MISC_MASK, 0);
|
||||
napi_enable(&port->napi);
|
||||
|
||||
@ -251,7 +251,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvreg_write(pp, MVNETA_INTR_NEW_MASK,
|
||||
MVNETA_RX_INTR_MASK(rxq_number) |
|
||||
MVNETA_TX_INTR_MASK(txq_number) |
|
||||
@@ -2862,7 +2937,7 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2863,7 +2938,7 @@ static int mvneta_percpu_notifier(struct
|
||||
static int mvneta_open(struct net_device *dev)
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
@ -260,7 +260,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
pp->pkt_size = MVNETA_RX_PKT_SIZE(pp->dev->mtu);
|
||||
pp->frag_size = SKB_DATA_ALIGN(MVNETA_RX_BUF_SIZE(pp->pkt_size)) +
|
||||
@@ -2892,8 +2967,13 @@ static int mvneta_open(struct net_device
|
||||
@@ -2893,8 +2968,13 @@ static int mvneta_open(struct net_device
|
||||
*/
|
||||
mvneta_percpu_disable(pp);
|
||||
|
||||
|
@ -34,7 +34,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
};
|
||||
|
||||
/* The mvneta_tx_desc and mvneta_rx_desc structures describe the
|
||||
@@ -1071,7 +1078,7 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1072,7 +1079,7 @@ static void mvneta_defaults_set(struct m
|
||||
if ((rxq % max_cpu) == cpu)
|
||||
rxq_map |= MVNETA_CPU_RXQ_ACCESS(rxq);
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
txq_map = MVNETA_CPU_TXQ_ACCESS_ALL_MASK;
|
||||
|
||||
mvreg_write(pp, MVNETA_CPU_MAP(cpu), rxq_map | txq_map);
|
||||
@@ -2512,6 +2519,18 @@ static void mvneta_percpu_unmask_interru
|
||||
@@ -2513,6 +2520,18 @@ static void mvneta_percpu_unmask_interru
|
||||
MVNETA_MISCINTR_INTR_MASK);
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static void mvneta_start_dev(struct mvneta_port *pp)
|
||||
{
|
||||
unsigned int cpu;
|
||||
@@ -3233,6 +3252,106 @@ static int mvneta_ethtool_get_sset_count
|
||||
@@ -3234,6 +3253,106 @@ static int mvneta_ethtool_get_sset_count
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
@ -169,7 +169,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static const struct net_device_ops mvneta_netdev_ops = {
|
||||
.ndo_open = mvneta_open,
|
||||
.ndo_stop = mvneta_stop,
|
||||
@@ -3257,6 +3376,10 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
@@ -3258,6 +3377,10 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
.get_strings = mvneta_ethtool_get_strings,
|
||||
.get_ethtool_stats = mvneta_ethtool_get_stats,
|
||||
.get_sset_count = mvneta_ethtool_get_sset_count,
|
||||
@ -180,7 +180,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
};
|
||||
|
||||
/* Initialize hw */
|
||||
@@ -3448,6 +3571,8 @@ static int mvneta_probe(struct platform_
|
||||
@@ -3449,6 +3572,8 @@ static int mvneta_probe(struct platform_
|
||||
|
||||
pp->rxq_def = rxq_def;
|
||||
|
||||
|
@ -32,7 +32,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
};
|
||||
|
||||
struct mvneta_rx_queue {
|
||||
@@ -1066,20 +1070,30 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1067,20 +1071,30 @@ static void mvneta_defaults_set(struct m
|
||||
/* Enable MBUS Retry bit16 */
|
||||
mvreg_write(pp, MVNETA_MBUS_RETRY, 0x20);
|
||||
|
||||
@ -69,7 +69,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
mvreg_write(pp, MVNETA_CPU_MAP(cpu), rxq_map | txq_map);
|
||||
}
|
||||
@@ -2366,6 +2380,8 @@ static void mvneta_rxq_deinit(struct mvn
|
||||
@@ -2367,6 +2381,8 @@ static void mvneta_rxq_deinit(struct mvn
|
||||
static int mvneta_txq_init(struct mvneta_port *pp,
|
||||
struct mvneta_tx_queue *txq)
|
||||
{
|
||||
@ -78,7 +78,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
txq->size = pp->tx_ring_size;
|
||||
|
||||
/* A queue must always have room for at least one skb.
|
||||
@@ -2418,6 +2434,14 @@ static int mvneta_txq_init(struct mvneta
|
||||
@@ -2419,6 +2435,14 @@ static int mvneta_txq_init(struct mvneta
|
||||
}
|
||||
mvneta_tx_done_pkts_coal_set(pp, txq, txq->done_pkts_coal);
|
||||
|
||||
@ -93,7 +93,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2840,13 +2864,23 @@ static void mvneta_percpu_elect(struct m
|
||||
@@ -2841,13 +2865,23 @@ static void mvneta_percpu_elect(struct m
|
||||
if ((rxq % max_cpu) == cpu)
|
||||
rxq_map |= MVNETA_CPU_RXQ_ACCESS(rxq);
|
||||
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -3244,26 +3244,25 @@ static void mvneta_ethtool_update_stats(
|
||||
@@ -3245,26 +3245,25 @@ static void mvneta_ethtool_update_stats(
|
||||
const struct mvneta_statistic *s;
|
||||
void __iomem *base = pp->base;
|
||||
u32 high, low, val;
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -2851,9 +2851,14 @@ static void mvneta_percpu_disable(void *
|
||||
@@ -2852,9 +2852,14 @@ static void mvneta_percpu_disable(void *
|
||||
|
||||
static void mvneta_percpu_elect(struct mvneta_port *pp)
|
||||
{
|
||||
@ -37,7 +37,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
max_cpu = num_present_cpus();
|
||||
|
||||
for_each_online_cpu(cpu) {
|
||||
@@ -2864,7 +2869,7 @@ static void mvneta_percpu_elect(struct m
|
||||
@@ -2865,7 +2870,7 @@ static void mvneta_percpu_elect(struct m
|
||||
if ((rxq % max_cpu) == cpu)
|
||||
rxq_map |= MVNETA_CPU_RXQ_ACCESS(rxq);
|
||||
|
||||
@ -46,7 +46,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Map the default receive queue queue to the
|
||||
* elected CPU
|
||||
*/
|
||||
@@ -2875,7 +2880,7 @@ static void mvneta_percpu_elect(struct m
|
||||
@@ -2876,7 +2881,7 @@ static void mvneta_percpu_elect(struct m
|
||||
* the CPU bound to the default RX queue
|
||||
*/
|
||||
if (txq_number == 1)
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -2557,7 +2557,7 @@ static void mvneta_percpu_mask_interrupt
|
||||
@@ -2558,7 +2558,7 @@ static void mvneta_percpu_mask_interrupt
|
||||
|
||||
static void mvneta_start_dev(struct mvneta_port *pp)
|
||||
{
|
||||
@ -23,7 +23,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
mvneta_max_rx_size_set(pp, pp->pkt_size);
|
||||
mvneta_txq_max_tx_size_set(pp, pp->pkt_size);
|
||||
@@ -2573,9 +2573,8 @@ static void mvneta_start_dev(struct mvne
|
||||
@@ -2574,9 +2574,8 @@ static void mvneta_start_dev(struct mvne
|
||||
}
|
||||
|
||||
/* Unmask interrupts. It has to be done from each CPU */
|
||||
@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
||||
MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
||||
MVNETA_CAUSE_LINK_CHANGE |
|
||||
@@ -2995,7 +2994,7 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2996,7 +2995,7 @@ static int mvneta_percpu_notifier(struct
|
||||
static int mvneta_open(struct net_device *dev)
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
pp->pkt_size = MVNETA_RX_PKT_SIZE(pp->dev->mtu);
|
||||
pp->frag_size = SKB_DATA_ALIGN(MVNETA_RX_BUF_SIZE(pp->pkt_size)) +
|
||||
@@ -3028,9 +3027,7 @@ static int mvneta_open(struct net_device
|
||||
@@ -3029,9 +3028,7 @@ static int mvneta_open(struct net_device
|
||||
/* Enable per-CPU interrupt on all the CPU to handle our RX
|
||||
* queue interrupts
|
||||
*/
|
||||
@ -55,7 +55,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
|
||||
/* Register a CPU notifier to handle the case where our CPU
|
||||
@@ -3317,9 +3314,7 @@ static int mvneta_config_rss(struct mvn
|
||||
@@ -3318,9 +3315,7 @@ static int mvneta_config_rss(struct mvn
|
||||
|
||||
netif_tx_stop_all_queues(pp->dev);
|
||||
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -1040,6 +1040,43 @@ static void mvneta_set_autoneg(struct mv
|
||||
@@ -1041,6 +1041,43 @@ static void mvneta_set_autoneg(struct mv
|
||||
}
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* This method sets defaults to the NETA port:
|
||||
* Clears interrupt Cause and Mask registers.
|
||||
* Clears all MAC tables.
|
||||
@@ -1057,14 +1094,10 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1058,14 +1095,10 @@ static void mvneta_defaults_set(struct m
|
||||
int max_cpu = num_present_cpus();
|
||||
|
||||
/* Clear all Cause registers */
|
||||
@ -78,7 +78,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvreg_write(pp, MVNETA_INTR_ENABLE, 0);
|
||||
|
||||
/* Enable MBUS Retry bit16 */
|
||||
@@ -2530,31 +2563,6 @@ static int mvneta_setup_txqs(struct mvne
|
||||
@@ -2531,31 +2564,6 @@ static int mvneta_setup_txqs(struct mvne
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -110,7 +110,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static void mvneta_start_dev(struct mvneta_port *pp)
|
||||
{
|
||||
int cpu;
|
||||
@@ -2605,13 +2613,10 @@ static void mvneta_stop_dev(struct mvnet
|
||||
@@ -2606,13 +2614,10 @@ static void mvneta_stop_dev(struct mvnet
|
||||
mvneta_port_disable(pp);
|
||||
|
||||
/* Clear all ethernet port interrupts */
|
||||
@ -126,7 +126,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
mvneta_tx_reset(pp);
|
||||
mvneta_rx_reset(pp);
|
||||
@@ -2923,9 +2928,7 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2924,9 +2929,7 @@ static int mvneta_percpu_notifier(struct
|
||||
}
|
||||
|
||||
/* Mask all ethernet port interrupts */
|
||||
@ -137,7 +137,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
napi_enable(&port->napi);
|
||||
|
||||
|
||||
@@ -2940,14 +2943,8 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2941,14 +2944,8 @@ static int mvneta_percpu_notifier(struct
|
||||
*/
|
||||
mvneta_percpu_elect(pp);
|
||||
|
||||
@ -154,7 +154,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
||||
MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
||||
MVNETA_CAUSE_LINK_CHANGE |
|
||||
@@ -2958,9 +2955,7 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2959,9 +2956,7 @@ static int mvneta_percpu_notifier(struct
|
||||
case CPU_DOWN_PREPARE_FROZEN:
|
||||
netif_tx_stop_all_queues(pp->dev);
|
||||
/* Mask all ethernet port interrupts */
|
||||
@ -165,7 +165,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
napi_synchronize(&port->napi);
|
||||
napi_disable(&port->napi);
|
||||
@@ -2976,10 +2971,7 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2977,10 +2972,7 @@ static int mvneta_percpu_notifier(struct
|
||||
/* Check if a new CPU must be elected now this on is down */
|
||||
mvneta_percpu_elect(pp);
|
||||
/* Unmask all ethernet port interrupts */
|
||||
|
@ -31,7 +31,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Core clock */
|
||||
struct clk *clk;
|
||||
@@ -2857,6 +2861,12 @@ static void mvneta_percpu_elect(struct m
|
||||
@@ -2858,6 +2862,12 @@ static void mvneta_percpu_elect(struct m
|
||||
{
|
||||
int elected_cpu = 0, max_cpu, cpu, i = 0;
|
||||
|
||||
@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Use the cpu associated to the rxq when it is online, in all
|
||||
* the other cases, use the cpu 0 which can't be offline.
|
||||
*/
|
||||
@@ -2900,6 +2910,7 @@ static void mvneta_percpu_elect(struct m
|
||||
@@ -2901,6 +2911,7 @@ static void mvneta_percpu_elect(struct m
|
||||
i++;
|
||||
|
||||
}
|
||||
@ -52,7 +52,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
};
|
||||
|
||||
static int mvneta_percpu_notifier(struct notifier_block *nfb,
|
||||
@@ -2954,8 +2965,13 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2955,8 +2966,13 @@ static int mvneta_percpu_notifier(struct
|
||||
case CPU_DOWN_PREPARE:
|
||||
case CPU_DOWN_PREPARE_FROZEN:
|
||||
netif_tx_stop_all_queues(pp->dev);
|
||||
|
@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* Core clock */
|
||||
struct clk *clk;
|
||||
@@ -2857,16 +2858,14 @@ static void mvneta_percpu_disable(void *
|
||||
@@ -2858,16 +2859,14 @@ static void mvneta_percpu_disable(void *
|
||||
disable_percpu_irq(pp->dev->irq);
|
||||
}
|
||||
|
||||
@ -47,7 +47,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Use the cpu associated to the rxq when it is online, in all
|
||||
* the other cases, use the cpu 0 which can't be offline.
|
||||
*/
|
||||
@@ -2910,7 +2909,6 @@ static void mvneta_percpu_elect(struct m
|
||||
@@ -2911,7 +2910,6 @@ static void mvneta_percpu_elect(struct m
|
||||
i++;
|
||||
|
||||
}
|
||||
@ -55,7 +55,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
};
|
||||
|
||||
static int mvneta_percpu_notifier(struct notifier_block *nfb,
|
||||
@@ -2924,6 +2922,14 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2925,6 +2923,14 @@ static int mvneta_percpu_notifier(struct
|
||||
switch (action) {
|
||||
case CPU_ONLINE:
|
||||
case CPU_ONLINE_FROZEN:
|
||||
@ -70,7 +70,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
netif_tx_stop_all_queues(pp->dev);
|
||||
|
||||
/* We have to synchronise on tha napi of each CPU
|
||||
@@ -2961,6 +2967,7 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2962,6 +2968,7 @@ static int mvneta_percpu_notifier(struct
|
||||
MVNETA_CAUSE_LINK_CHANGE |
|
||||
MVNETA_CAUSE_PSC_SYNC_CHANGE);
|
||||
netif_tx_start_all_queues(pp->dev);
|
||||
@ -78,7 +78,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
break;
|
||||
case CPU_DOWN_PREPARE:
|
||||
case CPU_DOWN_PREPARE_FROZEN:
|
||||
@@ -2985,7 +2992,9 @@ static int mvneta_percpu_notifier(struct
|
||||
@@ -2986,7 +2993,9 @@ static int mvneta_percpu_notifier(struct
|
||||
case CPU_DEAD:
|
||||
case CPU_DEAD_FROZEN:
|
||||
/* Check if a new CPU must be elected now this on is down */
|
||||
@ -88,7 +88,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Unmask all ethernet port interrupts */
|
||||
on_each_cpu(mvneta_percpu_unmask_interrupt, pp, true);
|
||||
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
||||
@@ -3037,7 +3046,7 @@ static int mvneta_open(struct net_device
|
||||
@@ -3038,7 +3047,7 @@ static int mvneta_open(struct net_device
|
||||
*/
|
||||
on_each_cpu(mvneta_percpu_enable, pp, true);
|
||||
|
||||
@ -97,7 +97,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Register a CPU notifier to handle the case where our CPU
|
||||
* might be taken offline.
|
||||
*/
|
||||
@@ -3070,9 +3079,18 @@ static int mvneta_stop(struct net_device
|
||||
@@ -3071,9 +3080,18 @@ static int mvneta_stop(struct net_device
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
|
||||
@ -116,7 +116,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
on_each_cpu(mvneta_percpu_disable, pp, true);
|
||||
free_percpu_irq(dev->irq, pp->ports);
|
||||
mvneta_cleanup_rxqs(pp);
|
||||
@@ -3343,7 +3361,9 @@ static int mvneta_config_rss(struct mvn
|
||||
@@ -3344,7 +3362,9 @@ static int mvneta_config_rss(struct mvn
|
||||
mvreg_write(pp, MVNETA_PORT_CONFIG, val);
|
||||
|
||||
/* Update the elected CPU matching the new rxq_def */
|
||||
|
@ -495,7 +495,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Start the Ethernet port RX and TX activity */
|
||||
static void mvneta_port_up(struct mvneta_port *pp)
|
||||
{
|
||||
@@ -1151,9 +1383,17 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1152,9 +1384,17 @@ static void mvneta_defaults_set(struct m
|
||||
mvreg_write(pp, MVNETA_PORT_RX_RESET, 0);
|
||||
|
||||
/* Set Port Acceleration Mode */
|
||||
@ -514,7 +514,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Update val of portCfg register accordingly with all RxQueue types */
|
||||
val = MVNETA_PORT_CONFIG_DEFL_VALUE(pp->rxq_def);
|
||||
mvreg_write(pp, MVNETA_PORT_CONFIG, val);
|
||||
@@ -1520,23 +1760,25 @@ static void mvneta_txq_done(struct mvnet
|
||||
@@ -1521,23 +1761,25 @@ static void mvneta_txq_done(struct mvnet
|
||||
}
|
||||
}
|
||||
|
||||
@ -547,7 +547,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
static int mvneta_rx_refill(struct mvneta_port *pp,
|
||||
struct mvneta_rx_desc *rx_desc)
|
||||
|
||||
@@ -1544,7 +1786,7 @@ static int mvneta_rx_refill(struct mvnet
|
||||
@@ -1545,7 +1787,7 @@ static int mvneta_rx_refill(struct mvnet
|
||||
dma_addr_t phys_addr;
|
||||
void *data;
|
||||
|
||||
@ -556,7 +556,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1552,7 +1794,7 @@ static int mvneta_rx_refill(struct mvnet
|
||||
@@ -1553,7 +1795,7 @@ static int mvneta_rx_refill(struct mvnet
|
||||
MVNETA_RX_BUF_SIZE(pp->pkt_size),
|
||||
DMA_FROM_DEVICE);
|
||||
if (unlikely(dma_mapping_error(pp->dev->dev.parent, phys_addr))) {
|
||||
@ -565,7 +565,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -1598,22 +1840,156 @@ static void mvneta_rxq_drop_pkts(struct
|
||||
@@ -1599,22 +1841,156 @@ static void mvneta_rxq_drop_pkts(struct
|
||||
int rx_done, i;
|
||||
|
||||
rx_done = mvneta_rxq_busy_desc_num_get(pp, rxq);
|
||||
@ -728,7 +728,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
{
|
||||
struct mvneta_pcpu_port *port = this_cpu_ptr(pp->ports);
|
||||
struct net_device *dev = pp->dev;
|
||||
@@ -1632,21 +2008,29 @@ static int mvneta_rx(struct mvneta_port
|
||||
@@ -1633,21 +2009,29 @@ static int mvneta_rx(struct mvneta_port
|
||||
/* Fairness NAPI loop */
|
||||
while (rx_done < rx_todo) {
|
||||
struct mvneta_rx_desc *rx_desc = mvneta_rxq_next_desc_get(rxq);
|
||||
@ -760,7 +760,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
dev->stats.rx_errors++;
|
||||
mvneta_rx_error(pp, rx_desc);
|
||||
/* leave the descriptor untouched */
|
||||
@@ -1657,7 +2041,7 @@ static int mvneta_rx(struct mvneta_port
|
||||
@@ -1658,7 +2042,7 @@ static int mvneta_rx(struct mvneta_port
|
||||
/* better copy a small frame and not unmap the DMA region */
|
||||
skb = netdev_alloc_skb_ip_align(dev, rx_bytes);
|
||||
if (unlikely(!skb))
|
||||
@ -769,7 +769,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
dma_sync_single_range_for_cpu(dev->dev.parent,
|
||||
rx_desc->buf_phys_addr,
|
||||
@@ -1675,26 +2059,31 @@ static int mvneta_rx(struct mvneta_port
|
||||
@@ -1676,26 +2060,31 @@ static int mvneta_rx(struct mvneta_port
|
||||
rcvd_pkts++;
|
||||
rcvd_bytes += rx_bytes;
|
||||
|
||||
@ -807,7 +807,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
if (!skb)
|
||||
goto err_drop_frame;
|
||||
|
||||
@@ -2299,7 +2688,10 @@ static int mvneta_poll(struct napi_struc
|
||||
@@ -2300,7 +2689,10 @@ static int mvneta_poll(struct napi_struc
|
||||
|
||||
if (rx_queue) {
|
||||
rx_queue = rx_queue - 1;
|
||||
@ -819,7 +819,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
}
|
||||
|
||||
budget -= rx_done;
|
||||
@@ -2388,9 +2780,17 @@ static int mvneta_rxq_init(struct mvneta
|
||||
@@ -2389,9 +2781,17 @@ static int mvneta_rxq_init(struct mvneta
|
||||
mvneta_rx_pkts_coal_set(pp, rxq, rxq->pkts_coal);
|
||||
mvneta_rx_time_coal_set(pp, rxq, rxq->time_coal);
|
||||
|
||||
@ -840,7 +840,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvneta_rxq_fill(pp, rxq, rxq->size);
|
||||
|
||||
return 0;
|
||||
@@ -2663,6 +3063,9 @@ static int mvneta_change_mtu(struct net_
|
||||
@@ -2664,6 +3064,9 @@ static int mvneta_change_mtu(struct net_
|
||||
dev->mtu = mtu;
|
||||
|
||||
if (!netif_running(dev)) {
|
||||
@ -850,7 +850,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
netdev_update_features(dev);
|
||||
return 0;
|
||||
}
|
||||
@@ -2675,6 +3078,9 @@ static int mvneta_change_mtu(struct net_
|
||||
@@ -2676,6 +3079,9 @@ static int mvneta_change_mtu(struct net_
|
||||
mvneta_cleanup_txqs(pp);
|
||||
mvneta_cleanup_rxqs(pp);
|
||||
|
||||
@ -860,7 +860,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
pp->pkt_size = MVNETA_RX_PKT_SIZE(dev->mtu);
|
||||
pp->frag_size = SKB_DATA_ALIGN(MVNETA_RX_BUF_SIZE(pp->pkt_size)) +
|
||||
SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
|
||||
@@ -3567,6 +3973,7 @@ static int mvneta_probe(struct platform_
|
||||
@@ -3568,6 +3974,7 @@ static int mvneta_probe(struct platform_
|
||||
struct resource *res;
|
||||
struct device_node *dn = pdev->dev.of_node;
|
||||
struct device_node *phy_node;
|
||||
@ -868,7 +868,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
struct mvneta_port *pp;
|
||||
struct net_device *dev;
|
||||
const char *dt_mac_addr;
|
||||
@@ -3694,26 +4101,39 @@ static int mvneta_probe(struct platform_
|
||||
@@ -3695,26 +4102,39 @@ static int mvneta_probe(struct platform_
|
||||
|
||||
pp->tx_csum_limit = tx_csum_limit;
|
||||
|
||||
@ -914,7 +914,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
for_each_present_cpu(cpu) {
|
||||
struct mvneta_pcpu_port *port = per_cpu_ptr(pp->ports, cpu);
|
||||
|
||||
@@ -3748,6 +4168,13 @@ static int mvneta_probe(struct platform_
|
||||
@@ -3749,6 +4169,13 @@ static int mvneta_probe(struct platform_
|
||||
|
||||
return 0;
|
||||
|
||||
@ -928,7 +928,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
err_free_stats:
|
||||
free_percpu(pp->stats);
|
||||
err_free_ports:
|
||||
@@ -3777,6 +4204,12 @@ static int mvneta_remove(struct platform
|
||||
@@ -3778,6 +4205,12 @@ static int mvneta_remove(struct platform
|
||||
of_node_put(pp->phy_node);
|
||||
free_netdev(dev);
|
||||
|
||||
|
@ -64,7 +64,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
goto bm_mtu_err;
|
||||
}
|
||||
mvneta_bm_pool_bufsize_set(pp, bm_pool->buf_size, bm_pool->id);
|
||||
@@ -2068,14 +2070,14 @@ err_drop_frame:
|
||||
@@ -2069,14 +2071,14 @@ err_drop_frame:
|
||||
}
|
||||
|
||||
/* Refill processing */
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -3488,17 +3488,17 @@ static int mvneta_stop(struct net_device
|
||||
@@ -3489,17 +3489,17 @@ static int mvneta_stop(struct net_device
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
|
||||
/* Inform that we are stopping so we don't want to setup the
|
||||
@ -42,7 +42,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
on_each_cpu(mvneta_percpu_disable, pp, true);
|
||||
free_percpu_irq(dev->irq, pp->ports);
|
||||
mvneta_cleanup_rxqs(pp);
|
||||
@@ -4031,6 +4031,7 @@ static int mvneta_probe(struct platform_
|
||||
@@ -4032,6 +4032,7 @@ static int mvneta_probe(struct platform_
|
||||
dev->ethtool_ops = &mvneta_eth_tool_ops;
|
||||
|
||||
pp = netdev_priv(dev);
|
||||
|
@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -1105,7 +1105,7 @@ static void mvneta_port_down(struct mvne
|
||||
@@ -1106,7 +1106,7 @@ static void mvneta_port_down(struct mvne
|
||||
do {
|
||||
if (count++ >= MVNETA_RX_DISABLE_TIMEOUT_MSEC) {
|
||||
netdev_warn(pp->dev,
|
||||
@ -22,7 +22,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
val);
|
||||
break;
|
||||
}
|
||||
@@ -1144,7 +1144,7 @@ static void mvneta_port_down(struct mvne
|
||||
@@ -1145,7 +1145,7 @@ static void mvneta_port_down(struct mvne
|
||||
do {
|
||||
if (count++ >= MVNETA_TX_FIFO_EMPTY_TIMEOUT) {
|
||||
netdev_warn(pp->dev,
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
#define IS_TSO_HEADER(txq, addr) \
|
||||
((addr >= txq->tso_hdrs_phys) && \
|
||||
@@ -2766,9 +2765,6 @@ static int mvneta_rxq_init(struct mvneta
|
||||
@@ -2767,9 +2766,6 @@ static int mvneta_rxq_init(struct mvneta
|
||||
if (rxq->descs == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -43,7 +43,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
rxq->last_desc = rxq->size - 1;
|
||||
|
||||
/* Set Rx descriptors queue starting address */
|
||||
@@ -2839,10 +2835,6 @@ static int mvneta_txq_init(struct mvneta
|
||||
@@ -2840,10 +2836,6 @@ static int mvneta_txq_init(struct mvneta
|
||||
if (txq->descs == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -3044,6 +3044,20 @@ static int mvneta_check_mtu_valid(struct
|
||||
@@ -3045,6 +3045,20 @@ static int mvneta_check_mtu_valid(struct
|
||||
return mtu;
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* Change the device mtu */
|
||||
static int mvneta_change_mtu(struct net_device *dev, int mtu)
|
||||
{
|
||||
@@ -3068,6 +3082,7 @@ static int mvneta_change_mtu(struct net_
|
||||
@@ -3069,6 +3083,7 @@ static int mvneta_change_mtu(struct net_
|
||||
* reallocation of the queues
|
||||
*/
|
||||
mvneta_stop_dev(pp);
|
||||
@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
mvneta_cleanup_txqs(pp);
|
||||
mvneta_cleanup_rxqs(pp);
|
||||
@@ -3091,6 +3106,7 @@ static int mvneta_change_mtu(struct net_
|
||||
@@ -3092,6 +3107,7 @@ static int mvneta_change_mtu(struct net_
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
mvneta_start_dev(pp);
|
||||
mvneta_port_up(pp);
|
||||
|
||||
@@ -3244,20 +3260,6 @@ static void mvneta_mdio_remove(struct mv
|
||||
@@ -3245,20 +3261,6 @@ static void mvneta_mdio_remove(struct mv
|
||||
pp->phy_dev = NULL;
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
|
||||
struct mvneta_bm *bm_priv;
|
||||
struct mvneta_bm_pool *pool_long;
|
||||
@@ -1177,10 +1179,6 @@ static void mvneta_port_disable(struct m
|
||||
@@ -1178,10 +1180,6 @@ static void mvneta_port_disable(struct m
|
||||
val &= ~MVNETA_GMAC0_PORT_ENABLE;
|
||||
mvreg_write(pp, MVNETA_GMAC_CTRL_0, val);
|
||||
|
||||
@ -90,7 +90,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
udelay(200);
|
||||
}
|
||||
|
||||
@@ -1240,44 +1238,6 @@ static void mvneta_set_other_mcast_table
|
||||
@@ -1241,44 +1239,6 @@ static void mvneta_set_other_mcast_table
|
||||
mvreg_write(pp, MVNETA_DA_FILT_OTH_MCAST + offset, val);
|
||||
}
|
||||
|
||||
@ -135,7 +135,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
static void mvneta_percpu_unmask_interrupt(void *arg)
|
||||
{
|
||||
struct mvneta_port *pp = arg;
|
||||
@@ -1425,7 +1385,6 @@ static void mvneta_defaults_set(struct m
|
||||
@@ -1426,7 +1386,6 @@ static void mvneta_defaults_set(struct m
|
||||
val &= ~MVNETA_PHY_POLLING_ENABLE;
|
||||
mvreg_write(pp, MVNETA_UNIT_CONTROL, val);
|
||||
|
||||
@ -143,7 +143,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
mvneta_set_ucast_table(pp, -1);
|
||||
mvneta_set_special_mcast_table(pp, -1);
|
||||
mvneta_set_other_mcast_table(pp, -1);
|
||||
@@ -2618,26 +2577,11 @@ static irqreturn_t mvneta_isr(int irq, v
|
||||
@@ -2619,26 +2578,11 @@ static irqreturn_t mvneta_isr(int irq, v
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
|
||||
/* NAPI handler
|
||||
@@ -2666,12 +2610,11 @@ static int mvneta_poll(struct napi_struc
|
||||
@@ -2667,12 +2611,11 @@ static int mvneta_poll(struct napi_struc
|
||||
u32 cause_misc = mvreg_read(pp, MVNETA_INTR_MISC_CAUSE);
|
||||
|
||||
mvreg_write(pp, MVNETA_INTR_MISC_CAUSE, 0);
|
||||
@ -190,7 +190,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
|
||||
/* Release Tx descriptors */
|
||||
@@ -2987,7 +2930,7 @@ static void mvneta_start_dev(struct mvne
|
||||
@@ -2988,7 +2931,7 @@ static void mvneta_start_dev(struct mvne
|
||||
MVNETA_CAUSE_LINK_CHANGE |
|
||||
MVNETA_CAUSE_PSC_SYNC_CHANGE);
|
||||
|
||||
@ -199,7 +199,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
netif_tx_start_all_queues(pp->dev);
|
||||
}
|
||||
|
||||
@@ -2995,7 +2938,7 @@ static void mvneta_stop_dev(struct mvnet
|
||||
@@ -2996,7 +2939,7 @@ static void mvneta_stop_dev(struct mvnet
|
||||
{
|
||||
unsigned int cpu;
|
||||
|
||||
@ -208,7 +208,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
|
||||
for_each_online_cpu(cpu) {
|
||||
struct mvneta_pcpu_port *port = per_cpu_ptr(pp->ports, cpu);
|
||||
@@ -3165,99 +3108,219 @@ static int mvneta_set_mac_addr(struct ne
|
||||
@@ -3166,99 +3109,219 @@ static int mvneta_set_mac_addr(struct ne
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -501,7 +501,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
|
||||
/* Electing a CPU must be done in an atomic way: it should be done
|
||||
@@ -3505,10 +3568,7 @@ static int mvneta_ioctl(struct net_devic
|
||||
@@ -3506,10 +3569,7 @@ static int mvneta_ioctl(struct net_devic
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
|
||||
@ -513,7 +513,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
|
||||
/* Ethtool methods */
|
||||
@@ -3518,54 +3578,15 @@ int mvneta_ethtool_get_settings(struct n
|
||||
@@ -3519,54 +3579,15 @@ int mvneta_ethtool_get_settings(struct n
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(dev);
|
||||
|
||||
@ -570,7 +570,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
|
||||
/* Set interrupt coalescing for ethtools */
|
||||
@@ -3673,7 +3694,8 @@ static void mvneta_ethtool_update_stats(
|
||||
@@ -3674,7 +3695,8 @@ static void mvneta_ethtool_update_stats(
|
||||
{
|
||||
const struct mvneta_statistic *s;
|
||||
void __iomem *base = pp->base;
|
||||
@ -580,7 +580,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
u64 val64;
|
||||
int i;
|
||||
|
||||
@@ -3968,14 +3990,13 @@ static int mvneta_probe(struct platform_
|
||||
@@ -3969,14 +3991,13 @@ static int mvneta_probe(struct platform_
|
||||
const struct mbus_dram_target_info *dram_target_info;
|
||||
struct resource *res;
|
||||
struct device_node *dn = pdev->dev.of_node;
|
||||
@ -596,7 +596,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
int tx_csum_limit;
|
||||
int phy_mode;
|
||||
int err;
|
||||
@@ -3991,31 +4012,11 @@ static int mvneta_probe(struct platform_
|
||||
@@ -3992,31 +4013,11 @@ static int mvneta_probe(struct platform_
|
||||
goto err_free_netdev;
|
||||
}
|
||||
|
||||
@ -629,7 +629,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
|
||||
dev->tx_queue_len = MVNETA_MAX_TXD;
|
||||
@@ -4026,12 +4027,7 @@ static int mvneta_probe(struct platform_
|
||||
@@ -4027,12 +4028,7 @@ static int mvneta_probe(struct platform_
|
||||
|
||||
pp = netdev_priv(dev);
|
||||
spin_lock_init(&pp->lock);
|
||||
@ -643,7 +643,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
pp->cpu_notifier.notifier_call = mvneta_percpu_notifier;
|
||||
|
||||
pp->rxq_def = rxq_def;
|
||||
@@ -4041,7 +4037,7 @@ static int mvneta_probe(struct platform_
|
||||
@@ -4042,7 +4038,7 @@ static int mvneta_probe(struct platform_
|
||||
pp->clk = devm_clk_get(&pdev->dev, NULL);
|
||||
if (IS_ERR(pp->clk)) {
|
||||
err = PTR_ERR(pp->clk);
|
||||
@ -652,7 +652,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
|
||||
clk_prepare_enable(pp->clk);
|
||||
@@ -4144,6 +4140,14 @@ static int mvneta_probe(struct platform_
|
||||
@@ -4145,6 +4141,14 @@ static int mvneta_probe(struct platform_
|
||||
dev->priv_flags |= IFF_UNICAST_FLT | IFF_LIVE_ADDR_CHANGE;
|
||||
dev->gso_max_segs = MVNETA_MAX_TSO_SEGS;
|
||||
|
||||
@ -667,7 +667,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
err = register_netdev(dev);
|
||||
if (err < 0) {
|
||||
dev_err(&pdev->dev, "failed to register\n");
|
||||
@@ -4155,13 +4159,6 @@ static int mvneta_probe(struct platform_
|
||||
@@ -4156,13 +4160,6 @@ static int mvneta_probe(struct platform_
|
||||
|
||||
platform_set_drvdata(pdev, pp->dev);
|
||||
|
||||
@ -681,7 +681,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -4173,13 +4170,13 @@ err_netdev:
|
||||
@@ -4174,13 +4171,13 @@ err_netdev:
|
||||
1 << pp->id);
|
||||
}
|
||||
err_free_stats:
|
||||
@ -697,7 +697,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
err_free_irq:
|
||||
irq_dispose_mapping(dev->irq);
|
||||
err_free_netdev:
|
||||
@@ -4198,7 +4195,7 @@ static int mvneta_remove(struct platform
|
||||
@@ -4199,7 +4196,7 @@ static int mvneta_remove(struct platform
|
||||
free_percpu(pp->ports);
|
||||
free_percpu(pp->stats);
|
||||
irq_dispose_mapping(dev->irq);
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -3589,6 +3589,13 @@ int mvneta_ethtool_set_settings(struct n
|
||||
@@ -3590,6 +3590,13 @@ int mvneta_ethtool_set_settings(struct n
|
||||
return phylink_ethtool_set_settings(pp->phylink, cmd);
|
||||
}
|
||||
|
||||
@ -28,7 +28,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
/* Set interrupt coalescing for ethtools */
|
||||
static int mvneta_ethtool_set_coalesce(struct net_device *dev,
|
||||
struct ethtool_coalesce *c)
|
||||
@@ -3853,6 +3860,7 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
@@ -3854,6 +3861,7 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
.get_link = ethtool_op_get_link,
|
||||
.get_settings = mvneta_ethtool_get_settings,
|
||||
.set_settings = mvneta_ethtool_set_settings,
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -3208,6 +3208,8 @@ static void mvneta_mac_config(struct net
|
||||
@@ -3209,6 +3209,8 @@ static void mvneta_mac_config(struct net
|
||||
|
||||
if (state->advertising & ADVERTISED_Pause)
|
||||
new_an |= MVNETA_GMAC_ADVERT_SYM_FLOW_CTRL;
|
||||
@ -23,7 +23,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
|
||||
switch (mode) {
|
||||
case MLO_AN_SGMII:
|
||||
@@ -3232,7 +3234,7 @@ static void mvneta_mac_config(struct net
|
||||
@@ -3233,7 +3235,7 @@ static void mvneta_mac_config(struct net
|
||||
/* The MAC only supports FD mode */
|
||||
MVNETA_GMAC_CONFIG_FULL_DUPLEX;
|
||||
|
||||
@ -32,7 +32,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
new_an |= MVNETA_GMAC_AN_FLOW_CTRL_EN;
|
||||
break;
|
||||
|
||||
@@ -3685,6 +3687,22 @@ static int mvneta_ethtool_set_ringparam(
|
||||
@@ -3686,6 +3688,22 @@ static int mvneta_ethtool_set_ringparam(
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
static void mvneta_ethtool_get_strings(struct net_device *netdev, u32 sset,
|
||||
u8 *data)
|
||||
{
|
||||
@@ -3866,6 +3884,8 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
@@ -3867,6 +3885,8 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
.get_drvinfo = mvneta_ethtool_get_drvinfo,
|
||||
.get_ringparam = mvneta_ethtool_get_ringparam,
|
||||
.set_ringparam = mvneta_ethtool_set_ringparam,
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -3127,12 +3127,14 @@ static int mvneta_mac_support(struct net
|
||||
@@ -3128,12 +3128,14 @@ static int mvneta_mac_support(struct net
|
||||
state->supported = PHY_10BT_FEATURES |
|
||||
PHY_100BT_FEATURES |
|
||||
SUPPORTED_1000baseT_Full |
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -3114,9 +3114,9 @@ static int mvneta_mac_support(struct net
|
||||
@@ -3115,9 +3115,9 @@ static int mvneta_mac_support(struct net
|
||||
switch (mode) {
|
||||
case MLO_AN_8023Z:
|
||||
state->supported = SUPPORTED_1000baseT_Full |
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
state->an_enabled = 1;
|
||||
break;
|
||||
|
||||
@@ -3127,18 +3127,21 @@ static int mvneta_mac_support(struct net
|
||||
@@ -3128,18 +3128,21 @@ static int mvneta_mac_support(struct net
|
||||
state->supported = PHY_10BT_FEATURES |
|
||||
PHY_100BT_FEATURES |
|
||||
SUPPORTED_1000baseT_Full |
|
||||
|
@ -68,7 +68,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
u64 ethtool_stats[ARRAY_SIZE(mvneta_statistics)];
|
||||
|
||||
u32 indir[MVNETA_RSS_LU_TABLE_SIZE];
|
||||
@@ -3276,6 +3293,18 @@ static void mvneta_mac_config(struct net
|
||||
@@ -3277,6 +3294,18 @@ static void mvneta_mac_config(struct net
|
||||
mvreg_write(pp, MVNETA_GMAC_AUTONEG_CONFIG, new_an);
|
||||
}
|
||||
|
||||
@ -87,7 +87,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
static void mvneta_mac_link_down(struct net_device *ndev, unsigned int mode)
|
||||
{
|
||||
struct mvneta_port *pp = netdev_priv(ndev);
|
||||
@@ -3289,6 +3318,9 @@ static void mvneta_mac_link_down(struct
|
||||
@@ -3290,6 +3319,9 @@ static void mvneta_mac_link_down(struct
|
||||
val |= MVNETA_GMAC_FORCE_LINK_DOWN;
|
||||
mvreg_write(pp, MVNETA_GMAC_AUTONEG_CONFIG, val);
|
||||
}
|
||||
@ -97,7 +97,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
|
||||
static void mvneta_mac_link_up(struct net_device *ndev, unsigned int mode,
|
||||
@@ -3305,6 +3337,11 @@ static void mvneta_mac_link_up(struct ne
|
||||
@@ -3306,6 +3338,11 @@ static void mvneta_mac_link_up(struct ne
|
||||
}
|
||||
|
||||
mvneta_port_up(pp);
|
||||
@ -109,7 +109,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
|
||||
static const struct phylink_mac_ops mvneta_phylink_ops = {
|
||||
@@ -3744,6 +3781,13 @@ static void mvneta_ethtool_update_stats(
|
||||
@@ -3745,6 +3782,13 @@ static void mvneta_ethtool_update_stats(
|
||||
val64 = (u64)high << 32 | low;
|
||||
pp->ethtool_stats[i] += val64;
|
||||
break;
|
||||
@ -123,7 +123,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3867,6 +3911,47 @@ static int mvneta_ethtool_get_rxfh(struc
|
||||
@@ -3868,6 +3912,47 @@ static int mvneta_ethtool_get_rxfh(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -171,7 +171,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
static const struct net_device_ops mvneta_netdev_ops = {
|
||||
.ndo_open = mvneta_open,
|
||||
.ndo_stop = mvneta_stop,
|
||||
@@ -3898,6 +3983,8 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
@@ -3899,6 +3984,8 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
.get_rxnfc = mvneta_ethtool_get_rxnfc,
|
||||
.get_rxfh = mvneta_ethtool_get_rxfh,
|
||||
.set_rxfh = mvneta_ethtool_set_rxfh,
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -3911,6 +3911,22 @@ static int mvneta_ethtool_get_rxfh(struc
|
||||
@@ -3912,6 +3912,22 @@ static int mvneta_ethtool_get_rxfh(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||
static int mvneta_ethtool_get_eee(struct net_device *dev,
|
||||
struct ethtool_eee *eee)
|
||||
{
|
||||
@@ -3983,6 +3999,8 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
@@ -3984,6 +4000,8 @@ const struct ethtool_ops mvneta_eth_tool
|
||||
.get_rxnfc = mvneta_ethtool_get_rxnfc,
|
||||
.get_rxfh = mvneta_ethtool_get_rxfh,
|
||||
.set_rxfh = mvneta_ethtool_set_rxfh,
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -1695,8 +1695,10 @@ static struct mvneta_tx_queue *mvneta_tx
|
||||
@@ -1696,8 +1696,10 @@ static struct mvneta_tx_queue *mvneta_tx
|
||||
|
||||
/* Free tx queue skbuffs */
|
||||
static void mvneta_txq_bufs_free(struct mvneta_port *pp,
|
||||
@ -12,7 +12,7 @@
|
||||
int i;
|
||||
|
||||
for (i = 0; i < num; i++) {
|
||||
@@ -1704,6 +1706,11 @@ static void mvneta_txq_bufs_free(struct
|
||||
@@ -1705,6 +1707,11 @@ static void mvneta_txq_bufs_free(struct
|
||||
txq->txq_get_index;
|
||||
struct sk_buff *skb = txq->tx_skb[txq->txq_get_index];
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
mvneta_txq_inc_get(txq);
|
||||
|
||||
if (!IS_TSO_HEADER(txq, tx_desc->buf_phys_addr))
|
||||
@@ -1714,6 +1721,8 @@ static void mvneta_txq_bufs_free(struct
|
||||
@@ -1715,6 +1722,8 @@ static void mvneta_txq_bufs_free(struct
|
||||
continue;
|
||||
dev_kfree_skb_any(skb);
|
||||
}
|
||||
@ -33,7 +33,7 @@
|
||||
}
|
||||
|
||||
/* Handle end of transmission */
|
||||
@@ -1727,7 +1736,7 @@ static void mvneta_txq_done(struct mvnet
|
||||
@@ -1728,7 +1737,7 @@ static void mvneta_txq_done(struct mvnet
|
||||
if (!tx_done)
|
||||
return;
|
||||
|
||||
@ -42,7 +42,7 @@
|
||||
|
||||
txq->count -= tx_done;
|
||||
|
||||
@@ -2334,6 +2343,8 @@ out:
|
||||
@@ -2335,6 +2344,8 @@ out:
|
||||
struct mvneta_pcpu_stats *stats = this_cpu_ptr(pp->stats);
|
||||
struct netdev_queue *nq = netdev_get_tx_queue(dev, txq_id);
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
txq->count += frags;
|
||||
mvneta_txq_pend_desc_add(pp, txq, frags);
|
||||
|
||||
@@ -2358,9 +2369,10 @@ static void mvneta_txq_done_force(struct
|
||||
@@ -2359,9 +2370,10 @@ static void mvneta_txq_done_force(struct
|
||||
struct mvneta_tx_queue *txq)
|
||||
|
||||
{
|
||||
@ -63,7 +63,7 @@
|
||||
|
||||
/* reset txq */
|
||||
txq->count = 0;
|
||||
@@ -2841,6 +2853,8 @@ static int mvneta_txq_init(struct mvneta
|
||||
@@ -2842,6 +2854,8 @@ static int mvneta_txq_init(struct mvneta
|
||||
static void mvneta_txq_deinit(struct mvneta_port *pp,
|
||||
struct mvneta_tx_queue *txq)
|
||||
{
|
||||
@ -72,7 +72,7 @@
|
||||
kfree(txq->tx_skb);
|
||||
|
||||
if (txq->tso_hdrs)
|
||||
@@ -2852,6 +2866,8 @@ static void mvneta_txq_deinit(struct mvn
|
||||
@@ -2853,6 +2867,8 @@ static void mvneta_txq_deinit(struct mvn
|
||||
txq->size * MVNETA_DESC_ALIGNED_SIZE,
|
||||
txq->descs, txq->descs_phys);
|
||||
|
||||
|
@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||
@@ -3984,6 +3984,16 @@ static int mvneta_ethtool_set_eee(struct
|
||||
@@ -3985,6 +3985,16 @@ static int mvneta_ethtool_set_eee(struct
|
||||
return phylink_ethtool_set_eee(pp->phylink, eee);
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static const struct net_device_ops mvneta_netdev_ops = {
|
||||
.ndo_open = mvneta_open,
|
||||
.ndo_stop = mvneta_stop,
|
||||
@@ -3994,6 +4004,7 @@ static const struct net_device_ops mvnet
|
||||
@@ -3995,6 +4005,7 @@ static const struct net_device_ops mvnet
|
||||
.ndo_fix_features = mvneta_fix_features,
|
||||
.ndo_get_stats64 = mvneta_get_stats64,
|
||||
.ndo_do_ioctl = mvneta_ioctl,
|
||||
|
@ -15,7 +15,7 @@
|
||||
/* initialize internal qc */
|
||||
|
||||
/* XXX: Tag 0 is used for drivers with legacy EH as some
|
||||
@@ -4812,6 +4820,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
@@ -4818,6 +4826,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||
if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
|
||||
return NULL;
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
/* libsas case */
|
||||
if (ap->flags & ATA_FLAG_SAS_HOST) {
|
||||
tag = ata_sas_allocate_tag(ap);
|
||||
@@ -4857,6 +4868,8 @@ void ata_qc_free(struct ata_queued_cmd *
|
||||
@@ -4863,6 +4874,8 @@ void ata_qc_free(struct ata_queued_cmd *
|
||||
qc->tag = ATA_TAG_POISON;
|
||||
if (ap->flags & ATA_FLAG_SAS_HOST)
|
||||
ata_sas_free_tag(tag, ap);
|
||||
|
Loading…
Reference in New Issue
Block a user