Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Minor overlapping changes in xfrm_device.c, between the double ESP trailing bug fix setting the XFRM_INIT flag and the changes in net-next preparing for bonding encryption support. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -6292,6 +6292,7 @@ int bnxt_hwrm_set_coal(struct bnxt *bp)
|
||||
|
||||
static void bnxt_hwrm_stat_ctx_free(struct bnxt *bp)
|
||||
{
|
||||
struct hwrm_stat_ctx_clr_stats_input req0 = {0};
|
||||
struct hwrm_stat_ctx_free_input req = {0};
|
||||
int i;
|
||||
|
||||
@@ -6301,6 +6302,7 @@ static void bnxt_hwrm_stat_ctx_free(struct bnxt *bp)
|
||||
if (BNXT_CHIP_TYPE_NITRO_A0(bp))
|
||||
return;
|
||||
|
||||
bnxt_hwrm_cmd_hdr_init(bp, &req0, HWRM_STAT_CTX_CLR_STATS, -1, -1);
|
||||
bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_STAT_CTX_FREE, -1, -1);
|
||||
|
||||
mutex_lock(&bp->hwrm_cmd_lock);
|
||||
@@ -6310,7 +6312,11 @@ static void bnxt_hwrm_stat_ctx_free(struct bnxt *bp)
|
||||
|
||||
if (cpr->hw_stats_ctx_id != INVALID_STATS_CTX_ID) {
|
||||
req.stat_ctx_id = cpu_to_le32(cpr->hw_stats_ctx_id);
|
||||
|
||||
if (BNXT_FW_MAJ(bp) <= 20) {
|
||||
req0.stat_ctx_id = req.stat_ctx_id;
|
||||
_hwrm_send_message(bp, &req0, sizeof(req0),
|
||||
HWRM_CMD_TIMEOUT);
|
||||
}
|
||||
_hwrm_send_message(bp, &req, sizeof(req),
|
||||
HWRM_CMD_TIMEOUT);
|
||||
|
||||
@@ -6976,7 +6982,8 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
|
||||
bp->fw_cap |= BNXT_FW_CAP_ERR_RECOVER_RELOAD;
|
||||
|
||||
bp->tx_push_thresh = 0;
|
||||
if (flags & FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED)
|
||||
if ((flags & FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED) &&
|
||||
BNXT_FW_MAJ(bp) > 217)
|
||||
bp->tx_push_thresh = BNXT_TX_PUSH_THRESH;
|
||||
|
||||
hw_resc->max_rsscos_ctxs = le16_to_cpu(resp->max_rsscos_ctx);
|
||||
@@ -7240,8 +7247,9 @@ static int __bnxt_hwrm_ver_get(struct bnxt *bp, bool silent)
|
||||
static int bnxt_hwrm_ver_get(struct bnxt *bp)
|
||||
{
|
||||
struct hwrm_ver_get_output *resp = bp->hwrm_cmd_resp_addr;
|
||||
u16 fw_maj, fw_min, fw_bld, fw_rsv;
|
||||
u32 dev_caps_cfg, hwrm_ver;
|
||||
int rc;
|
||||
int rc, len;
|
||||
|
||||
bp->hwrm_max_req_len = HWRM_MAX_REQ_LEN;
|
||||
mutex_lock(&bp->hwrm_cmd_lock);
|
||||
@@ -7273,9 +7281,22 @@ static int bnxt_hwrm_ver_get(struct bnxt *bp)
|
||||
resp->hwrm_intf_maj_8b, resp->hwrm_intf_min_8b,
|
||||
resp->hwrm_intf_upd_8b);
|
||||
|
||||
snprintf(bp->fw_ver_str, BC_HWRM_STR_LEN, "%d.%d.%d.%d",
|
||||
resp->hwrm_fw_maj_8b, resp->hwrm_fw_min_8b,
|
||||
resp->hwrm_fw_bld_8b, resp->hwrm_fw_rsvd_8b);
|
||||
fw_maj = le16_to_cpu(resp->hwrm_fw_major);
|
||||
if (bp->hwrm_spec_code > 0x10803 && fw_maj) {
|
||||
fw_min = le16_to_cpu(resp->hwrm_fw_minor);
|
||||
fw_bld = le16_to_cpu(resp->hwrm_fw_build);
|
||||
fw_rsv = le16_to_cpu(resp->hwrm_fw_patch);
|
||||
len = FW_VER_STR_LEN;
|
||||
} else {
|
||||
fw_maj = resp->hwrm_fw_maj_8b;
|
||||
fw_min = resp->hwrm_fw_min_8b;
|
||||
fw_bld = resp->hwrm_fw_bld_8b;
|
||||
fw_rsv = resp->hwrm_fw_rsvd_8b;
|
||||
len = BC_HWRM_STR_LEN;
|
||||
}
|
||||
bp->fw_ver_code = BNXT_FW_VER_CODE(fw_maj, fw_min, fw_bld, fw_rsv);
|
||||
snprintf(bp->fw_ver_str, len, "%d.%d.%d.%d", fw_maj, fw_min, fw_bld,
|
||||
fw_rsv);
|
||||
|
||||
if (strlen(resp->active_pkg_name)) {
|
||||
int fw_ver_len = strlen(bp->fw_ver_str);
|
||||
@@ -11892,7 +11913,8 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
dev->ethtool_ops = &bnxt_ethtool_ops;
|
||||
pci_set_drvdata(pdev, dev);
|
||||
|
||||
bnxt_vpd_read_info(bp);
|
||||
if (BNXT_PF(bp))
|
||||
bnxt_vpd_read_info(bp);
|
||||
|
||||
rc = bnxt_alloc_hwrm_resources(bp);
|
||||
if (rc)
|
||||
|
@@ -1746,6 +1746,11 @@ struct bnxt {
|
||||
#define PHY_VER_STR_LEN (FW_VER_STR_LEN - BC_HWRM_STR_LEN)
|
||||
char fw_ver_str[FW_VER_STR_LEN];
|
||||
char hwrm_ver_supp[FW_VER_STR_LEN];
|
||||
u64 fw_ver_code;
|
||||
#define BNXT_FW_VER_CODE(maj, min, bld, rsv) \
|
||||
((u64)(maj) << 48 | (u64)(min) << 32 | (u64)(bld) << 16 | (rsv))
|
||||
#define BNXT_FW_MAJ(bp) ((bp)->fw_ver_code >> 48)
|
||||
|
||||
__be16 vxlan_port;
|
||||
u8 vxlan_port_cnt;
|
||||
__le16 vxlan_fw_dst_port_id;
|
||||
|
@@ -1889,7 +1889,8 @@ static void bnxt_tc_setup_indr_rel(void *cb_priv)
|
||||
}
|
||||
|
||||
static int bnxt_tc_setup_indr_block(struct net_device *netdev, struct bnxt *bp,
|
||||
struct flow_block_offload *f)
|
||||
struct flow_block_offload *f, void *data,
|
||||
void (*cleanup)(struct flow_block_cb *block_cb))
|
||||
{
|
||||
struct bnxt_flower_indr_block_cb_priv *cb_priv;
|
||||
struct flow_block_cb *block_cb;
|
||||
@@ -1907,9 +1908,10 @@ static int bnxt_tc_setup_indr_block(struct net_device *netdev, struct bnxt *bp,
|
||||
cb_priv->bp = bp;
|
||||
list_add(&cb_priv->list, &bp->tc_indr_block_list);
|
||||
|
||||
block_cb = flow_block_cb_alloc(bnxt_tc_setup_indr_block_cb,
|
||||
cb_priv, cb_priv,
|
||||
bnxt_tc_setup_indr_rel);
|
||||
block_cb = flow_indr_block_cb_alloc(bnxt_tc_setup_indr_block_cb,
|
||||
cb_priv, cb_priv,
|
||||
bnxt_tc_setup_indr_rel, f,
|
||||
netdev, data, bp, cleanup);
|
||||
if (IS_ERR(block_cb)) {
|
||||
list_del(&cb_priv->list);
|
||||
kfree(cb_priv);
|
||||
@@ -1930,7 +1932,7 @@ static int bnxt_tc_setup_indr_block(struct net_device *netdev, struct bnxt *bp,
|
||||
if (!block_cb)
|
||||
return -ENOENT;
|
||||
|
||||
flow_block_cb_remove(block_cb, f);
|
||||
flow_indr_block_cb_remove(block_cb, f);
|
||||
list_del(&block_cb->driver_list);
|
||||
break;
|
||||
default:
|
||||
@@ -1945,14 +1947,17 @@ static bool bnxt_is_netdev_indr_offload(struct net_device *netdev)
|
||||
}
|
||||
|
||||
static int bnxt_tc_setup_indr_cb(struct net_device *netdev, void *cb_priv,
|
||||
enum tc_setup_type type, void *type_data)
|
||||
enum tc_setup_type type, void *type_data,
|
||||
void *data,
|
||||
void (*cleanup)(struct flow_block_cb *block_cb))
|
||||
{
|
||||
if (!bnxt_is_netdev_indr_offload(netdev))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
switch (type) {
|
||||
case TC_SETUP_BLOCK:
|
||||
return bnxt_tc_setup_indr_block(netdev, cb_priv, type_data);
|
||||
return bnxt_tc_setup_indr_block(netdev, cb_priv, type_data, data,
|
||||
cleanup);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -2074,7 +2079,7 @@ void bnxt_shutdown_tc(struct bnxt *bp)
|
||||
return;
|
||||
|
||||
flow_indr_dev_unregister(bnxt_tc_setup_indr_cb, bp,
|
||||
bnxt_tc_setup_indr_block_cb);
|
||||
bnxt_tc_setup_indr_rel);
|
||||
rhashtable_destroy(&tc_info->flow_table);
|
||||
rhashtable_destroy(&tc_info->l2_table);
|
||||
rhashtable_destroy(&tc_info->decap_l2_table);
|
||||
|
Reference in New Issue
Block a user