Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Handle errors mid-stream of an all dump, from Alexey Kodanev. 2) Fix build of openvswitch with certain combinations of netfilter options, from Arnd Bergmann. 3) Fix interactions between GSO and BQL, from Eric Dumazet. 4) Don't put a '/' in RTL8201F's sysfs file name, from Holger Hoffstätte. 5) S390 qeth driver fixes from Julian Wiedmann. 6) Allow ipv6 link local addresses for netconsole when both source and destination are link local, from Matwey V. Kornilov. 7) Fix the BPF program address seen in /proc/kallsyms, from Song Liu. 8) Initialize mutex before use in dsa microchip driver, from Tristram Ha. 9) Out-of-bounds access in hns3, from Yunsheng Lin. 10) Various netfilter fixes from Stefano Brivio, Jozsef Kadlecsik, Jiri Slaby, Florian Westphal, Eric Westbrook, Andrey Ryabinin, and Pablo Neira Ayuso. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (50 commits) net: alx: make alx_drv_name static net: bpfilter: fix iptables failure if bpfilter_umh is disabled sock_diag: fix autoloading of the raw_diag module net: core: netpoll: Enable netconsole IPv6 link local address ipv6: properly check return value in inet6_dump_all() rtnetlink: restore handling of dumpit return value in rtnl_dump_all() net/ipv6: Move anycast init/cleanup functions out of CONFIG_PROC_FS bonding/802.3ad: fix link_failure_count tracking net: phy: realtek: fix RTL8201F sysfs name sctp: define SCTP_SS_DEFAULT for Stream schedulers sctp: fix strchange_flags name for Stream Change Event mlxsw: spectrum: Fix IP2ME CPU policer configuration openvswitch: fix linking without CONFIG_NF_CONNTRACK_LABELS qed: fix link config error handling net: hns3: Fix for out-of-bounds access when setting pfc back pressure net/mlx4_en: use __netdev_tx_sent_queue() net: do not abort bulk send on BQL status net: bql: add __netdev_tx_sent_queue() s390/qeth: report 25Gbit link speed s390/qeth: sanitize ARP requests ...
This commit is contained in:
@@ -3112,13 +3112,13 @@ static int bond_slave_netdev_event(unsigned long event,
|
||||
case NETDEV_CHANGE:
|
||||
/* For 802.3ad mode only:
|
||||
* Getting invalid Speed/Duplex values here will put slave
|
||||
* in weird state. So mark it as link-down for the time
|
||||
* in weird state. So mark it as link-fail for the time
|
||||
* being and let link-monitoring (miimon) set it right when
|
||||
* correct speeds/duplex are available.
|
||||
*/
|
||||
if (bond_update_speed_duplex(slave) &&
|
||||
BOND_MODE(bond) == BOND_MODE_8023AD)
|
||||
slave->link = BOND_LINK_DOWN;
|
||||
slave->link = BOND_LINK_FAIL;
|
||||
|
||||
if (BOND_MODE(bond) == BOND_MODE_8023AD)
|
||||
bond_3ad_adapter_speed_duplex_changed(slave);
|
||||
|
@@ -1117,11 +1117,6 @@ static int ksz_switch_init(struct ksz_device *dev)
|
||||
{
|
||||
int i;
|
||||
|
||||
mutex_init(&dev->reg_mutex);
|
||||
mutex_init(&dev->stats_mutex);
|
||||
mutex_init(&dev->alu_mutex);
|
||||
mutex_init(&dev->vlan_mutex);
|
||||
|
||||
dev->ds->ops = &ksz_switch_ops;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(ksz_switch_chips); i++) {
|
||||
@@ -1206,6 +1201,11 @@ int ksz_switch_register(struct ksz_device *dev)
|
||||
if (dev->pdata)
|
||||
dev->chip_id = dev->pdata->chip_id;
|
||||
|
||||
mutex_init(&dev->reg_mutex);
|
||||
mutex_init(&dev->stats_mutex);
|
||||
mutex_init(&dev->alu_mutex);
|
||||
mutex_init(&dev->vlan_mutex);
|
||||
|
||||
if (ksz_switch_detect(dev))
|
||||
return -EINVAL;
|
||||
|
||||
|
@@ -140,6 +140,5 @@ struct alx_priv {
|
||||
};
|
||||
|
||||
extern const struct ethtool_ops alx_ethtool_ops;
|
||||
extern const char alx_drv_name[];
|
||||
|
||||
#endif
|
||||
|
@@ -49,7 +49,7 @@
|
||||
#include "hw.h"
|
||||
#include "reg.h"
|
||||
|
||||
const char alx_drv_name[] = "alx";
|
||||
static const char alx_drv_name[] = "alx";
|
||||
|
||||
static void alx_free_txbuf(struct alx_tx_queue *txq, int entry)
|
||||
{
|
||||
|
@@ -1902,9 +1902,6 @@ static void bcm_sysport_netif_start(struct net_device *dev)
|
||||
intrl2_1_mask_clear(priv, 0xffffffff);
|
||||
else
|
||||
intrl2_0_mask_clear(priv, INTRL2_0_TDMA_MBDONE_MASK);
|
||||
|
||||
/* Last call before we start the real business */
|
||||
netif_tx_start_all_queues(dev);
|
||||
}
|
||||
|
||||
static void rbuf_init(struct bcm_sysport_priv *priv)
|
||||
@@ -2048,6 +2045,8 @@ static int bcm_sysport_open(struct net_device *dev)
|
||||
|
||||
bcm_sysport_netif_start(dev);
|
||||
|
||||
netif_tx_start_all_queues(dev);
|
||||
|
||||
return 0;
|
||||
|
||||
out_clear_rx_int:
|
||||
@@ -2071,7 +2070,7 @@ static void bcm_sysport_netif_stop(struct net_device *dev)
|
||||
struct bcm_sysport_priv *priv = netdev_priv(dev);
|
||||
|
||||
/* stop all software from updating hardware */
|
||||
netif_tx_stop_all_queues(dev);
|
||||
netif_tx_disable(dev);
|
||||
napi_disable(&priv->napi);
|
||||
cancel_work_sync(&priv->dim.dim.work);
|
||||
phy_stop(dev->phydev);
|
||||
@@ -2658,12 +2657,12 @@ static int __maybe_unused bcm_sysport_suspend(struct device *d)
|
||||
if (!netif_running(dev))
|
||||
return 0;
|
||||
|
||||
netif_device_detach(dev);
|
||||
|
||||
bcm_sysport_netif_stop(dev);
|
||||
|
||||
phy_suspend(dev->phydev);
|
||||
|
||||
netif_device_detach(dev);
|
||||
|
||||
/* Disable UniMAC RX */
|
||||
umac_enable_set(priv, CMD_RX_EN, 0);
|
||||
|
||||
@@ -2746,8 +2745,6 @@ static int __maybe_unused bcm_sysport_resume(struct device *d)
|
||||
goto out_free_rx_ring;
|
||||
}
|
||||
|
||||
netif_device_attach(dev);
|
||||
|
||||
/* RX pipe enable */
|
||||
topctrl_writel(priv, 0, RX_FLUSH_CNTL);
|
||||
|
||||
@@ -2788,6 +2785,8 @@ static int __maybe_unused bcm_sysport_resume(struct device *d)
|
||||
|
||||
bcm_sysport_netif_start(dev);
|
||||
|
||||
netif_device_attach(dev);
|
||||
|
||||
return 0;
|
||||
|
||||
out_free_rx_ring:
|
||||
|
@@ -2855,7 +2855,6 @@ static void bcmgenet_netif_start(struct net_device *dev)
|
||||
|
||||
umac_enable_set(priv, CMD_TX_EN | CMD_RX_EN, true);
|
||||
|
||||
netif_tx_start_all_queues(dev);
|
||||
bcmgenet_enable_tx_napi(priv);
|
||||
|
||||
/* Monitor link interrupts now */
|
||||
@@ -2937,6 +2936,8 @@ static int bcmgenet_open(struct net_device *dev)
|
||||
|
||||
bcmgenet_netif_start(dev);
|
||||
|
||||
netif_tx_start_all_queues(dev);
|
||||
|
||||
return 0;
|
||||
|
||||
err_irq1:
|
||||
@@ -2958,7 +2959,7 @@ static void bcmgenet_netif_stop(struct net_device *dev)
|
||||
struct bcmgenet_priv *priv = netdev_priv(dev);
|
||||
|
||||
bcmgenet_disable_tx_napi(priv);
|
||||
netif_tx_stop_all_queues(dev);
|
||||
netif_tx_disable(dev);
|
||||
|
||||
/* Disable MAC receive */
|
||||
umac_enable_set(priv, CMD_RX_EN, false);
|
||||
@@ -3620,13 +3621,13 @@ static int bcmgenet_suspend(struct device *d)
|
||||
if (!netif_running(dev))
|
||||
return 0;
|
||||
|
||||
netif_device_detach(dev);
|
||||
|
||||
bcmgenet_netif_stop(dev);
|
||||
|
||||
if (!device_may_wakeup(d))
|
||||
phy_suspend(dev->phydev);
|
||||
|
||||
netif_device_detach(dev);
|
||||
|
||||
/* Prepare the device for Wake-on-LAN and switch to the slow clock */
|
||||
if (device_may_wakeup(d) && priv->wolopts) {
|
||||
ret = bcmgenet_power_down(priv, GENET_POWER_WOL_MAGIC);
|
||||
@@ -3700,8 +3701,6 @@ static int bcmgenet_resume(struct device *d)
|
||||
/* Always enable ring 16 - descriptor ring */
|
||||
bcmgenet_enable_dma(priv, dma_ctrl);
|
||||
|
||||
netif_device_attach(dev);
|
||||
|
||||
if (!device_may_wakeup(d))
|
||||
phy_resume(dev->phydev);
|
||||
|
||||
@@ -3710,6 +3709,8 @@ static int bcmgenet_resume(struct device *d)
|
||||
|
||||
bcmgenet_netif_start(dev);
|
||||
|
||||
netif_device_attach(dev);
|
||||
|
||||
return 0;
|
||||
|
||||
out_clk_disable:
|
||||
|
@@ -1168,14 +1168,14 @@ static int hclge_pfc_setup_hw(struct hclge_dev *hdev)
|
||||
*/
|
||||
static int hclge_bp_setup_hw(struct hclge_dev *hdev, u8 tc)
|
||||
{
|
||||
struct hclge_vport *vport = hdev->vport;
|
||||
u32 i, k, qs_bitmap;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < HCLGE_BP_GRP_NUM; i++) {
|
||||
qs_bitmap = 0;
|
||||
u32 qs_bitmap = 0;
|
||||
int k, ret;
|
||||
|
||||
for (k = 0; k < hdev->num_alloc_vport; k++) {
|
||||
struct hclge_vport *vport = &hdev->vport[k];
|
||||
u16 qs_id = vport->qs_offset + tc;
|
||||
u8 grp, sub_grp;
|
||||
|
||||
@@ -1185,8 +1185,6 @@ static int hclge_bp_setup_hw(struct hclge_dev *hdev, u8 tc)
|
||||
HCLGE_BP_SUB_GRP_ID_S);
|
||||
if (i == grp)
|
||||
qs_bitmap |= (1 << sub_grp);
|
||||
|
||||
vport++;
|
||||
}
|
||||
|
||||
ret = hclge_tm_qs_bp_cfg(hdev, tc, i, qs_bitmap);
|
||||
|
@@ -1006,7 +1006,6 @@ netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
ring->packets++;
|
||||
}
|
||||
ring->bytes += tx_info->nr_bytes;
|
||||
netdev_tx_sent_queue(ring->tx_queue, tx_info->nr_bytes);
|
||||
AVG_PERF_COUNTER(priv->pstats.tx_pktsz_avg, skb->len);
|
||||
|
||||
if (tx_info->inl)
|
||||
@@ -1044,7 +1043,10 @@ netdev_tx_t mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
netif_tx_stop_queue(ring->tx_queue);
|
||||
ring->queue_stopped++;
|
||||
}
|
||||
send_doorbell = !skb->xmit_more || netif_xmit_stopped(ring->tx_queue);
|
||||
|
||||
send_doorbell = __netdev_tx_sent_queue(ring->tx_queue,
|
||||
tx_info->nr_bytes,
|
||||
skb->xmit_more);
|
||||
|
||||
real_size = (real_size / 16) & 0x3f;
|
||||
|
||||
|
@@ -3568,7 +3568,6 @@ static int mlxsw_sp_cpu_policers_set(struct mlxsw_core *mlxsw_core)
|
||||
burst_size = 7;
|
||||
break;
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IP2ME:
|
||||
is_bytes = true;
|
||||
rate = 4 * 1024;
|
||||
burst_size = 4;
|
||||
break;
|
||||
|
@@ -1944,9 +1944,12 @@ int qed_mcp_trans_speed_mask(struct qed_hwfn *p_hwfn,
|
||||
struct qed_ptt *p_ptt, u32 *p_speed_mask)
|
||||
{
|
||||
u32 transceiver_type, transceiver_state;
|
||||
int ret;
|
||||
|
||||
qed_mcp_get_transceiver_data(p_hwfn, p_ptt, &transceiver_state,
|
||||
&transceiver_type);
|
||||
ret = qed_mcp_get_transceiver_data(p_hwfn, p_ptt, &transceiver_state,
|
||||
&transceiver_type);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (qed_is_transceiver_ready(transceiver_state, transceiver_type) ==
|
||||
false)
|
||||
|
@@ -220,7 +220,7 @@ static struct phy_driver realtek_drvs[] = {
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
}, {
|
||||
.phy_id = 0x001cc816,
|
||||
.name = "RTL8201F 10/100Mbps Ethernet",
|
||||
.name = "RTL8201F Fast Ethernet",
|
||||
.phy_id_mask = 0x001fffff,
|
||||
.features = PHY_BASIC_FEATURES,
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
|
@@ -1598,6 +1598,8 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
|
||||
return ret;
|
||||
}
|
||||
|
||||
cancel_delayed_work_sync(&pdata->carrier_check);
|
||||
|
||||
if (pdata->suspend_flags) {
|
||||
netdev_warn(dev->net, "error during last resume\n");
|
||||
pdata->suspend_flags = 0;
|
||||
@@ -1840,6 +1842,11 @@ done:
|
||||
*/
|
||||
if (ret && PMSG_IS_AUTO(message))
|
||||
usbnet_resume(intf);
|
||||
|
||||
if (ret)
|
||||
schedule_delayed_work(&pdata->carrier_check,
|
||||
CARRIER_CHECK_DELAY);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user