Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: net/netfilter/nfnetlink_log.c net/netfilter/xt_LOG.c Rather easy conflict resolution, the 'net' tree had bug fixes to make sure we checked if a socket is a time-wait one or not and elide the logging code if so. Whereas on the 'net-next' side we are calculating the UID and GID from the creds using different interfaces due to the user namespace changes from Eric Biederman. Signed-off-by: David S. Miller <davem@davemloft.net>
这个提交包含在:
@@ -720,17 +720,15 @@ static inline u16 bnx2x_tx_avail(struct bnx2x *bp,
|
||||
prod = txdata->tx_bd_prod;
|
||||
cons = txdata->tx_bd_cons;
|
||||
|
||||
/* NUM_TX_RINGS = number of "next-page" entries
|
||||
It will be used as a threshold */
|
||||
used = SUB_S16(prod, cons) + (s16)NUM_TX_RINGS;
|
||||
used = SUB_S16(prod, cons);
|
||||
|
||||
#ifdef BNX2X_STOP_ON_ERROR
|
||||
WARN_ON(used < 0);
|
||||
WARN_ON(used > bp->tx_ring_size);
|
||||
WARN_ON((bp->tx_ring_size - used) > MAX_TX_AVAIL);
|
||||
WARN_ON(used > txdata->tx_ring_size);
|
||||
WARN_ON((txdata->tx_ring_size - used) > MAX_TX_AVAIL);
|
||||
#endif
|
||||
|
||||
return (s16)(bp->tx_ring_size) - used;
|
||||
return (s16)(txdata->tx_ring_size) - used;
|
||||
}
|
||||
|
||||
static inline int bnx2x_tx_queue_has_work(struct bnx2x_fp_txdata *txdata)
|
||||
@@ -1098,6 +1096,7 @@ static inline void bnx2x_init_txdata(struct bnx2x *bp,
|
||||
txdata->txq_index = txq_index;
|
||||
txdata->tx_cons_sb = tx_cons_sb;
|
||||
txdata->parent_fp = fp;
|
||||
txdata->tx_ring_size = IS_FCOE_FP(fp) ? MAX_TX_AVAIL : bp->tx_ring_size;
|
||||
|
||||
DP(NETIF_MSG_IFUP, "created tx data cid %d, txq %d\n",
|
||||
txdata->cid, txdata->txq_index);
|
||||
|
@@ -401,11 +401,11 @@ static const struct reg_addr reg_addrs[] = {
|
||||
{ 0x70000, 8, RI_ALL_ONLINE },
|
||||
{ 0x70020, 8184, RI_ALL_OFFLINE },
|
||||
{ 0x78000, 8192, RI_E3E3B0_OFFLINE },
|
||||
{ 0x85000, 3, RI_ALL_ONLINE },
|
||||
{ 0x8501c, 7, RI_ALL_ONLINE },
|
||||
{ 0x85048, 1, RI_ALL_ONLINE },
|
||||
{ 0x85200, 32, RI_ALL_ONLINE },
|
||||
{ 0xb0000, 16384, RI_E1H_ONLINE },
|
||||
{ 0x85000, 3, RI_ALL_OFFLINE },
|
||||
{ 0x8501c, 7, RI_ALL_OFFLINE },
|
||||
{ 0x85048, 1, RI_ALL_OFFLINE },
|
||||
{ 0x85200, 32, RI_ALL_OFFLINE },
|
||||
{ 0xb0000, 16384, RI_E1H_OFFLINE },
|
||||
{ 0xc1000, 7, RI_ALL_ONLINE },
|
||||
{ 0xc103c, 2, RI_E2E3E3B0_ONLINE },
|
||||
{ 0xc1800, 2, RI_ALL_ONLINE },
|
||||
@@ -581,17 +581,12 @@ static const struct reg_addr reg_addrs[] = {
|
||||
{ 0x140188, 3, RI_E1E1HE2E3_ONLINE },
|
||||
{ 0x140194, 13, RI_ALL_ONLINE },
|
||||
{ 0x140200, 6, RI_E1E1HE2E3_ONLINE },
|
||||
{ 0x140220, 4, RI_E2E3_ONLINE },
|
||||
{ 0x140240, 4, RI_E2E3_ONLINE },
|
||||
{ 0x140260, 4, RI_E2E3_ONLINE },
|
||||
{ 0x140280, 4, RI_E2E3_ONLINE },
|
||||
{ 0x1402a0, 4, RI_E2E3_ONLINE },
|
||||
{ 0x1402c0, 4, RI_E2E3_ONLINE },
|
||||
{ 0x1402e0, 2, RI_E2E3_ONLINE },
|
||||
{ 0x1402e8, 2, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x1402f0, 9, RI_E2E3_ONLINE },
|
||||
{ 0x140314, 44, RI_E3B0_ONLINE },
|
||||
{ 0x1403d0, 70, RI_E3B0_ONLINE },
|
||||
{ 0x144000, 4, RI_E1E1H_ONLINE },
|
||||
{ 0x148000, 4, RI_E1E1H_ONLINE },
|
||||
{ 0x14c000, 4, RI_E1E1H_ONLINE },
|
||||
@@ -704,7 +699,6 @@ static const struct reg_addr reg_addrs[] = {
|
||||
{ 0x180398, 1, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x1803a0, 5, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x1803b4, 2, RI_E3E3B0_ONLINE },
|
||||
{ 0x180400, 1, RI_ALL_ONLINE },
|
||||
{ 0x180404, 255, RI_E1E1H_OFFLINE },
|
||||
{ 0x181000, 4, RI_ALL_ONLINE },
|
||||
{ 0x181010, 1020, RI_ALL_OFFLINE },
|
||||
@@ -800,9 +794,9 @@ static const struct reg_addr reg_addrs[] = {
|
||||
{ 0x1b905c, 1, RI_E3E3B0_ONLINE },
|
||||
{ 0x1b9064, 1, RI_E3B0_ONLINE },
|
||||
{ 0x1b9080, 10, RI_E3B0_ONLINE },
|
||||
{ 0x1b9400, 14, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x1b943c, 19, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x1b9490, 10, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x1b9400, 14, RI_E2E3E3B0_OFFLINE },
|
||||
{ 0x1b943c, 19, RI_E2E3E3B0_OFFLINE },
|
||||
{ 0x1b9490, 10, RI_E2E3E3B0_OFFLINE },
|
||||
{ 0x1c0000, 2, RI_ALL_ONLINE },
|
||||
{ 0x200000, 65, RI_ALL_ONLINE },
|
||||
{ 0x20014c, 2, RI_E1HE2E3E3B0_ONLINE },
|
||||
@@ -814,7 +808,6 @@ static const struct reg_addr reg_addrs[] = {
|
||||
{ 0x200398, 1, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x2003a0, 1, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x2003a8, 2, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x200400, 1, RI_ALL_ONLINE },
|
||||
{ 0x200404, 255, RI_E1E1H_OFFLINE },
|
||||
{ 0x202000, 4, RI_ALL_ONLINE },
|
||||
{ 0x202010, 2044, RI_ALL_OFFLINE },
|
||||
@@ -921,7 +914,6 @@ static const struct reg_addr reg_addrs[] = {
|
||||
{ 0x280398, 1, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x2803a0, 1, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x2803a8, 2, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x280400, 1, RI_ALL_ONLINE },
|
||||
{ 0x280404, 255, RI_E1E1H_OFFLINE },
|
||||
{ 0x282000, 4, RI_ALL_ONLINE },
|
||||
{ 0x282010, 2044, RI_ALL_OFFLINE },
|
||||
@@ -1031,7 +1023,6 @@ static const struct reg_addr reg_addrs[] = {
|
||||
{ 0x300398, 1, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x3003a0, 1, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x3003a8, 2, RI_E2E3E3B0_ONLINE },
|
||||
{ 0x300400, 1, RI_ALL_ONLINE },
|
||||
{ 0x300404, 255, RI_E1E1H_OFFLINE },
|
||||
{ 0x302000, 4, RI_ALL_ONLINE },
|
||||
{ 0x302010, 2044, RI_ALL_OFFLINE },
|
||||
|
@@ -775,7 +775,7 @@ static void bnx2x_get_regs(struct net_device *dev,
|
||||
struct bnx2x *bp = netdev_priv(dev);
|
||||
struct dump_hdr dump_hdr = {0};
|
||||
|
||||
regs->version = 0;
|
||||
regs->version = 1;
|
||||
memset(p, 0, regs->len);
|
||||
|
||||
if (!netif_running(bp->dev))
|
||||
@@ -1588,6 +1588,12 @@ static int bnx2x_set_pauseparam(struct net_device *dev,
|
||||
bp->link_params.req_flow_ctrl[cfg_idx] =
|
||||
BNX2X_FLOW_CTRL_AUTO;
|
||||
}
|
||||
bp->link_params.req_fc_auto_adv = BNX2X_FLOW_CTRL_NONE;
|
||||
if (epause->rx_pause)
|
||||
bp->link_params.req_fc_auto_adv |= BNX2X_FLOW_CTRL_RX;
|
||||
|
||||
if (epause->tx_pause)
|
||||
bp->link_params.req_fc_auto_adv |= BNX2X_FLOW_CTRL_TX;
|
||||
}
|
||||
|
||||
DP(BNX2X_MSG_ETHTOOL,
|
||||
|
@@ -2714,9 +2714,11 @@ int bnx2x_update_pfc(struct link_params *params,
|
||||
return bnx2x_status;
|
||||
|
||||
DP(NETIF_MSG_LINK, "About to update PFC in BMAC\n");
|
||||
if (CHIP_IS_E3(bp))
|
||||
bnx2x_update_pfc_xmac(params, vars, 0);
|
||||
else {
|
||||
|
||||
if (CHIP_IS_E3(bp)) {
|
||||
if (vars->mac_type == MAC_TYPE_XMAC)
|
||||
bnx2x_update_pfc_xmac(params, vars, 0);
|
||||
} else {
|
||||
val = REG_RD(bp, MISC_REG_RESET_REG_2);
|
||||
if ((val &
|
||||
(MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << params->port))
|
||||
@@ -5724,7 +5726,7 @@ static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy,
|
||||
switch (speed_mask) {
|
||||
case GP_STATUS_10M:
|
||||
vars->line_speed = SPEED_10;
|
||||
if (vars->duplex == DUPLEX_FULL)
|
||||
if (is_duplex == DUPLEX_FULL)
|
||||
vars->link_status |= LINK_10TFD;
|
||||
else
|
||||
vars->link_status |= LINK_10THD;
|
||||
@@ -5732,7 +5734,7 @@ static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy,
|
||||
|
||||
case GP_STATUS_100M:
|
||||
vars->line_speed = SPEED_100;
|
||||
if (vars->duplex == DUPLEX_FULL)
|
||||
if (is_duplex == DUPLEX_FULL)
|
||||
vars->link_status |= LINK_100TXFD;
|
||||
else
|
||||
vars->link_status |= LINK_100TXHD;
|
||||
@@ -5741,7 +5743,7 @@ static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy,
|
||||
case GP_STATUS_1G:
|
||||
case GP_STATUS_1G_KX:
|
||||
vars->line_speed = SPEED_1000;
|
||||
if (vars->duplex == DUPLEX_FULL)
|
||||
if (is_duplex == DUPLEX_FULL)
|
||||
vars->link_status |= LINK_1000TFD;
|
||||
else
|
||||
vars->link_status |= LINK_1000THD;
|
||||
@@ -5749,7 +5751,7 @@ static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy,
|
||||
|
||||
case GP_STATUS_2_5G:
|
||||
vars->line_speed = SPEED_2500;
|
||||
if (vars->duplex == DUPLEX_FULL)
|
||||
if (is_duplex == DUPLEX_FULL)
|
||||
vars->link_status |= LINK_2500TFD;
|
||||
else
|
||||
vars->link_status |= LINK_2500THD;
|
||||
@@ -5823,6 +5825,7 @@ static int bnx2x_link_settings_status(struct bnx2x_phy *phy,
|
||||
|
||||
if (gp_status & MDIO_GP_STATUS_TOP_AN_STATUS1_LINK_STATUS) {
|
||||
if (SINGLE_MEDIA_DIRECT(params)) {
|
||||
vars->duplex = duplex;
|
||||
bnx2x_flow_ctrl_resolve(phy, params, vars, gp_status);
|
||||
if (phy->req_line_speed == SPEED_AUTO_NEG)
|
||||
bnx2x_xgxs_an_resolve(phy, params, vars,
|
||||
@@ -5917,6 +5920,7 @@ static int bnx2x_warpcore_read_status(struct bnx2x_phy *phy,
|
||||
LINK_STATUS_PARALLEL_DETECTION_USED;
|
||||
}
|
||||
bnx2x_ext_phy_resolve_fc(phy, params, vars);
|
||||
vars->duplex = duplex;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -7566,8 +7566,14 @@ int bnx2x_set_mac_one(struct bnx2x *bp, u8 *mac,
|
||||
}
|
||||
|
||||
rc = bnx2x_config_vlan_mac(bp, &ramrod_param);
|
||||
if (rc < 0)
|
||||
|
||||
if (rc == -EEXIST) {
|
||||
DP(BNX2X_MSG_SP, "Failed to schedule ADD operations: %d\n", rc);
|
||||
/* do not treat adding same MAC as error */
|
||||
rc = 0;
|
||||
} else if (rc < 0)
|
||||
BNX2X_ERR("%s MAC failed\n", (set ? "Set" : "Del"));
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -10304,13 +10310,11 @@ static void __devinit bnx2x_get_fcoe_info(struct bnx2x *bp)
|
||||
dev_info.port_hw_config[port].
|
||||
fcoe_wwn_node_name_lower);
|
||||
} else if (!IS_MF_SD(bp)) {
|
||||
u32 cfg = MF_CFG_RD(bp, func_ext_config[func].func_cfg);
|
||||
|
||||
/*
|
||||
* Read the WWN info only if the FCoE feature is enabled for
|
||||
* this function.
|
||||
*/
|
||||
if (cfg & MACP_FUNC_CFG_FLAGS_FCOE_OFFLOAD)
|
||||
if (BNX2X_MF_EXT_PROTOCOL_FCOE(bp) && !CHIP_IS_E1x(bp))
|
||||
bnx2x_get_ext_wwn_info(bp, func);
|
||||
|
||||
} else if (IS_MF_FCOE_SD(bp))
|
||||
@@ -11083,7 +11087,14 @@ static int bnx2x_set_uc_list(struct bnx2x *bp)
|
||||
netdev_for_each_uc_addr(ha, dev) {
|
||||
rc = bnx2x_set_mac_one(bp, bnx2x_uc_addr(ha), mac_obj, true,
|
||||
BNX2X_UC_LIST_MAC, &ramrod_flags);
|
||||
if (rc < 0) {
|
||||
if (rc == -EEXIST) {
|
||||
DP(BNX2X_MSG_SP,
|
||||
"Failed to schedule ADD operations: %d\n", rc);
|
||||
/* do not treat adding same MAC as error */
|
||||
rc = 0;
|
||||
|
||||
} else if (rc < 0) {
|
||||
|
||||
BNX2X_ERR("Failed to schedule ADD operations: %d\n",
|
||||
rc);
|
||||
return rc;
|
||||
|
@@ -126,6 +126,11 @@ static void bnx2x_hw_stats_post(struct bnx2x *bp)
|
||||
if (CHIP_REV_IS_SLOW(bp))
|
||||
return;
|
||||
|
||||
/* Update MCP's statistics if possible */
|
||||
if (bp->func_stx)
|
||||
memcpy(bnx2x_sp(bp, func_stats), &bp->func_stats,
|
||||
sizeof(bp->func_stats));
|
||||
|
||||
/* loader */
|
||||
if (bp->executer_idx) {
|
||||
int loader_idx = PMF_DMAE_C(bp);
|
||||
@@ -153,8 +158,6 @@ static void bnx2x_hw_stats_post(struct bnx2x *bp)
|
||||
|
||||
} else if (bp->func_stx) {
|
||||
*stats_comp = 0;
|
||||
memcpy(bnx2x_sp(bp, func_stats), &bp->func_stats,
|
||||
sizeof(bp->func_stats));
|
||||
bnx2x_post_dmae(bp, dmae, INIT_DMAE_C(bp));
|
||||
}
|
||||
}
|
||||
@@ -1176,9 +1179,11 @@ static void bnx2x_stats_update(struct bnx2x *bp)
|
||||
if (bp->port.pmf)
|
||||
bnx2x_hw_stats_update(bp);
|
||||
|
||||
if (bnx2x_storm_stats_update(bp) && (bp->stats_pending++ == 3)) {
|
||||
BNX2X_ERR("storm stats were not updated for 3 times\n");
|
||||
bnx2x_panic();
|
||||
if (bnx2x_storm_stats_update(bp)) {
|
||||
if (bp->stats_pending++ == 3) {
|
||||
BNX2X_ERR("storm stats were not updated for 3 times\n");
|
||||
bnx2x_panic();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户