aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Chan <michael.chan@broadcom.com>2016-04-05 14:08:55 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-05 16:20:45 -0400
commit11f15ed394782dd018d60a0bb550616a8571b43c (patch)
treebb5ce431a3e0416deb8434972b00e8221538eb5a
parent04c85bfb4f75d1dd02bc6e82698db701dd5ea8a9 (diff)
bnxt_en: Update to Firmware 1.2.2 spec.
Use new field names in API structs and stop using deprecated fields auto_link_speed and auto_duplex in phy_cfg/phy_qcfg structs. Update copyright year to 2016. Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.c20
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.h8
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c4
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h2
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_fw_hdr.h2
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h433
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_nvm_defs.h2
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c14
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h2
9 files changed, 431 insertions, 56 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 12a009d720cd..bfe98cbcefca 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -1,6 +1,6 @@
1/* Broadcom NetXtreme-C/E network driver. 1/* Broadcom NetXtreme-C/E network driver.
2 * 2 *
3 * Copyright (c) 2014-2015 Broadcom Corporation 3 * Copyright (c) 2014-2016 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
@@ -2763,7 +2763,7 @@ static int bnxt_hwrm_func_drv_rgtr(struct bnxt *bp)
2763 * only checks if it is non-zero to enable async event forwarding 2763 * only checks if it is non-zero to enable async event forwarding
2764 */ 2764 */
2765 req.async_event_fwd[0] |= cpu_to_le32(1); 2765 req.async_event_fwd[0] |= cpu_to_le32(1);
2766 req.os_type = cpu_to_le16(1); 2766 req.os_type = cpu_to_le16(FUNC_DRV_RGTR_REQ_OS_TYPE_LINUX);
2767 req.ver_maj = DRV_VER_MAJ; 2767 req.ver_maj = DRV_VER_MAJ;
2768 req.ver_min = DRV_VER_MIN; 2768 req.ver_min = DRV_VER_MIN;
2769 req.ver_upd = DRV_VER_UPD; 2769 req.ver_upd = DRV_VER_UPD;
@@ -3726,7 +3726,7 @@ int bnxt_hwrm_func_qcaps(struct bnxt *bp)
3726 3726
3727 pf->fw_fid = le16_to_cpu(resp->fid); 3727 pf->fw_fid = le16_to_cpu(resp->fid);
3728 pf->port_id = le16_to_cpu(resp->port_id); 3728 pf->port_id = le16_to_cpu(resp->port_id);
3729 memcpy(pf->mac_addr, resp->perm_mac_address, ETH_ALEN); 3729 memcpy(pf->mac_addr, resp->mac_address, ETH_ALEN);
3730 memcpy(bp->dev->dev_addr, pf->mac_addr, ETH_ALEN); 3730 memcpy(bp->dev->dev_addr, pf->mac_addr, ETH_ALEN);
3731 pf->max_rsscos_ctxs = le16_to_cpu(resp->max_rsscos_ctx); 3731 pf->max_rsscos_ctxs = le16_to_cpu(resp->max_rsscos_ctx);
3732 pf->max_cp_rings = le16_to_cpu(resp->max_cmpl_rings); 3732 pf->max_cp_rings = le16_to_cpu(resp->max_cmpl_rings);
@@ -3751,7 +3751,7 @@ int bnxt_hwrm_func_qcaps(struct bnxt *bp)
3751 struct bnxt_vf_info *vf = &bp->vf; 3751 struct bnxt_vf_info *vf = &bp->vf;
3752 3752
3753 vf->fw_fid = le16_to_cpu(resp->fid); 3753 vf->fw_fid = le16_to_cpu(resp->fid);
3754 memcpy(vf->mac_addr, resp->perm_mac_address, ETH_ALEN); 3754 memcpy(vf->mac_addr, resp->mac_address, ETH_ALEN);
3755 if (is_valid_ether_addr(vf->mac_addr)) 3755 if (is_valid_ether_addr(vf->mac_addr))
3756 /* overwrite netdev dev_adr with admin VF MAC */ 3756 /* overwrite netdev dev_adr with admin VF MAC */
3757 memcpy(bp->dev->dev_addr, vf->mac_addr, ETH_ALEN); 3757 memcpy(bp->dev->dev_addr, vf->mac_addr, ETH_ALEN);
@@ -3842,6 +3842,8 @@ static int bnxt_hwrm_ver_get(struct bnxt *bp)
3842 3842
3843 memcpy(&bp->ver_resp, resp, sizeof(struct hwrm_ver_get_output)); 3843 memcpy(&bp->ver_resp, resp, sizeof(struct hwrm_ver_get_output));
3844 3844
3845 bp->hwrm_spec_code = resp->hwrm_intf_maj << 16 |
3846 resp->hwrm_intf_min << 8 | resp->hwrm_intf_upd;
3845 if (resp->hwrm_intf_maj < 1) { 3847 if (resp->hwrm_intf_maj < 1) {
3846 netdev_warn(bp->dev, "HWRM interface %d.%d.%d is older than 1.0.0.\n", 3848 netdev_warn(bp->dev, "HWRM interface %d.%d.%d is older than 1.0.0.\n",
3847 resp->hwrm_intf_maj, resp->hwrm_intf_min, 3849 resp->hwrm_intf_maj, resp->hwrm_intf_min,
@@ -4523,7 +4525,6 @@ static int bnxt_update_link(struct bnxt *bp, bool chng_link_state)
4523 else 4525 else
4524 link_info->link_speed = 0; 4526 link_info->link_speed = 0;
4525 link_info->force_link_speed = le16_to_cpu(resp->force_link_speed); 4527 link_info->force_link_speed = le16_to_cpu(resp->force_link_speed);
4526 link_info->auto_link_speed = le16_to_cpu(resp->auto_link_speed);
4527 link_info->support_speeds = le16_to_cpu(resp->support_speeds); 4528 link_info->support_speeds = le16_to_cpu(resp->support_speeds);
4528 link_info->auto_link_speeds = le16_to_cpu(resp->auto_link_speed_mask); 4529 link_info->auto_link_speeds = le16_to_cpu(resp->auto_link_speed_mask);
4529 link_info->lp_auto_link_speeds = 4530 link_info->lp_auto_link_speeds =
@@ -4533,8 +4534,8 @@ static int bnxt_update_link(struct bnxt *bp, bool chng_link_state)
4533 link_info->phy_ver[1] = resp->phy_min; 4534 link_info->phy_ver[1] = resp->phy_min;
4534 link_info->phy_ver[2] = resp->phy_bld; 4535 link_info->phy_ver[2] = resp->phy_bld;
4535 link_info->media_type = resp->media_type; 4536 link_info->media_type = resp->media_type;
4536 link_info->transceiver = resp->transceiver_type; 4537 link_info->transceiver = resp->xcvr_pkg_type;
4537 link_info->phy_addr = resp->phy_addr; 4538 link_info->phy_addr = resp->eee_config_phy_addr;
4538 4539
4539 /* TODO: need to add more logic to report VF link */ 4540 /* TODO: need to add more logic to report VF link */
4540 if (chng_link_state) { 4541 if (chng_link_state) {
@@ -4581,7 +4582,7 @@ static void bnxt_hwrm_set_link_common(struct bnxt *bp,
4581 4582
4582 if (autoneg & BNXT_AUTONEG_SPEED) { 4583 if (autoneg & BNXT_AUTONEG_SPEED) {
4583 req->auto_mode |= 4584 req->auto_mode |=
4584 PORT_PHY_CFG_REQ_AUTO_MODE_MASK; 4585 PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK;
4585 4586
4586 req->enables |= cpu_to_le32( 4587 req->enables |= cpu_to_le32(
4587 PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED_MASK); 4588 PORT_PHY_CFG_REQ_ENABLES_AUTO_LINK_SPEED_MASK);
@@ -4595,9 +4596,6 @@ static void bnxt_hwrm_set_link_common(struct bnxt *bp,
4595 req->flags |= cpu_to_le32(PORT_PHY_CFG_REQ_FLAGS_FORCE); 4596 req->flags |= cpu_to_le32(PORT_PHY_CFG_REQ_FLAGS_FORCE);
4596 } 4597 }
4597 4598
4598 /* currently don't support half duplex */
4599 req->auto_duplex = PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL;
4600 req->enables |= cpu_to_le32(PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX);
4601 /* tell chimp that the setting takes effect immediately */ 4599 /* tell chimp that the setting takes effect immediately */
4602 req->flags |= cpu_to_le32(PORT_PHY_CFG_REQ_FLAGS_RESET_PHY); 4600 req->flags |= cpu_to_le32(PORT_PHY_CFG_REQ_FLAGS_RESET_PHY);
4603} 4601}
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
index 709b95b8fcba..e98c37ae81f2 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h
@@ -1,6 +1,6 @@
1/* Broadcom NetXtreme-C/E network driver. 1/* Broadcom NetXtreme-C/E network driver.
2 * 2 *
3 * Copyright (c) 2014-2015 Broadcom Corporation 3 * Copyright (c) 2014-2016 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
@@ -11,7 +11,7 @@
11#define BNXT_H 11#define BNXT_H
12 12
13#define DRV_MODULE_NAME "bnxt_en" 13#define DRV_MODULE_NAME "bnxt_en"
14#define DRV_MODULE_VERSION "1.0.0" 14#define DRV_MODULE_VERSION "1.2.0"
15 15
16#define DRV_VER_MAJ 1 16#define DRV_VER_MAJ 1
17#define DRV_VER_MIN 0 17#define DRV_VER_MIN 0
@@ -788,7 +788,7 @@ struct bnxt_link_info {
788#define BNXT_LINK_AUTO_ALLSPDS PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS 788#define BNXT_LINK_AUTO_ALLSPDS PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS
789#define BNXT_LINK_AUTO_ONESPD PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED 789#define BNXT_LINK_AUTO_ONESPD PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED
790#define BNXT_LINK_AUTO_ONEORBELOW PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW 790#define BNXT_LINK_AUTO_ONEORBELOW PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW
791#define BNXT_LINK_AUTO_MSK PORT_PHY_QCFG_RESP_AUTO_MODE_MASK 791#define BNXT_LINK_AUTO_MSK PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK
792#define PHY_VER_LEN 3 792#define PHY_VER_LEN 3
793 u8 phy_ver[PHY_VER_LEN]; 793 u8 phy_ver[PHY_VER_LEN];
794 u16 link_speed; 794 u16 link_speed;
@@ -813,7 +813,6 @@ struct bnxt_link_info {
813#define BNXT_LINK_SPEED_MSK_40GB PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB 813#define BNXT_LINK_SPEED_MSK_40GB PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB
814#define BNXT_LINK_SPEED_MSK_50GB PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB 814#define BNXT_LINK_SPEED_MSK_50GB PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB
815 u16 lp_auto_link_speeds; 815 u16 lp_auto_link_speeds;
816 u16 auto_link_speed;
817 u16 force_link_speed; 816 u16 force_link_speed;
818 u32 preemphasis; 817 u32 preemphasis;
819 818
@@ -940,6 +939,7 @@ struct bnxt {
940 939
941 u32 msg_enable; 940 u32 msg_enable;
942 941
942 u32 hwrm_spec_code;
943 u16 hwrm_cmd_seq; 943 u16 hwrm_cmd_seq;
944 u32 hwrm_intr_seq_id; 944 u32 hwrm_intr_seq_id;
945 void *hwrm_cmd_resp_addr; 945 void *hwrm_cmd_resp_addr;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
index 2e472f6dbf2d..f103f9b06e6d 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
@@ -1,6 +1,6 @@
1/* Broadcom NetXtreme-C/E network driver. 1/* Broadcom NetXtreme-C/E network driver.
2 * 2 *
3 * Copyright (c) 2014-2015 Broadcom Corporation 3 * Copyright (c) 2014-2016 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
@@ -728,7 +728,7 @@ static int bnxt_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
728 ethtool_speed = bnxt_fw_to_ethtool_speed(link_info->link_speed); 728 ethtool_speed = bnxt_fw_to_ethtool_speed(link_info->link_speed);
729 ethtool_cmd_speed_set(cmd, ethtool_speed); 729 ethtool_cmd_speed_set(cmd, ethtool_speed);
730 if (link_info->transceiver == 730 if (link_info->transceiver ==
731 PORT_PHY_QCFG_RESP_TRANSCEIVER_TYPE_XCVR_INTERNAL) 731 PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL)
732 cmd->transceiver = XCVR_INTERNAL; 732 cmd->transceiver = XCVR_INTERNAL;
733 else 733 else
734 cmd->transceiver = XCVR_EXTERNAL; 734 cmd->transceiver = XCVR_EXTERNAL;
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h
index 98fa81e08b58..b2d8bd3a37fb 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.h
@@ -1,6 +1,6 @@
1/* Broadcom NetXtreme-C/E network driver. 1/* Broadcom NetXtreme-C/E network driver.
2 * 2 *
3 * Copyright (c) 2014-2015 Broadcom Corporation 3 * Copyright (c) 2014-2016 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_fw_hdr.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_fw_hdr.h
index e0aac65c6d82..461675caaacd 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_fw_hdr.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_fw_hdr.h
@@ -1,6 +1,6 @@
1/* Broadcom NetXtreme-C/E network driver. 1/* Broadcom NetXtreme-C/E network driver.
2 * 2 *
3 * Copyright (c) 2014-2015 Broadcom Corporation 3 * Copyright (c) 2014-2016 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h
index 4badbedcb421..80f95560086d 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h
@@ -1,6 +1,6 @@
1/* Broadcom NetXtreme-C/E network driver. 1/* Broadcom NetXtreme-C/E network driver.
2 * 2 *
3 * Copyright (c) 2014-2015 Broadcom Corporation 3 * Copyright (c) 2014-2016 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
@@ -104,6 +104,7 @@ struct hwrm_async_event_cmpl {
104 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_DCB_CONFIG_CHANGE (0x3UL << 0) 104 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_DCB_CONFIG_CHANGE (0x3UL << 0)
105 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED (0x4UL << 0) 105 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED (0x4UL << 0)
106 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED (0x5UL << 0) 106 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED (0x5UL << 0)
107 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE (0x6UL << 0)
107 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_UNLOAD (0x10UL << 0) 108 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_UNLOAD (0x10UL << 0)
108 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_LOAD (0x11UL << 0) 109 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_FUNC_DRVR_LOAD (0x11UL << 0)
109 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD (0x20UL << 0) 110 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD (0x20UL << 0)
@@ -111,6 +112,7 @@ struct hwrm_async_event_cmpl {
111 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_FLR (0x30UL << 0) 112 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_FLR (0x30UL << 0)
112 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_MAC_ADDR_CHANGE (0x31UL << 0) 113 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_MAC_ADDR_CHANGE (0x31UL << 0)
113 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_VF_COMM_STATUS_CHANGE (0x32UL << 0) 114 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_VF_COMM_STATUS_CHANGE (0x32UL << 0)
115 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE (0x33UL << 0)
114 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR (0xffUL << 0) 116 #define HWRM_ASYNC_EVENT_CMPL_EVENT_ID_HWRM_ERROR (0xffUL << 0)
115 __le32 event_data2; 117 __le32 event_data2;
116 u8 opaque_v; 118 u8 opaque_v;
@@ -141,6 +143,7 @@ struct hwrm_async_event_cmpl_link_status_change {
141 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE 0x1UL 143 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE 0x1UL
142 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_DOWN (0x0UL << 0) 144 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_DOWN (0x0UL << 0)
143 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP (0x1UL << 0) 145 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP (0x1UL << 0)
146 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_LAST HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_LINK_CHANGE_UP
144 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_MASK 0xeUL 147 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_MASK 0xeUL
145 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_SFT 1 148 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_SFT 1
146 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffff0UL 149 #define HWRM_ASYNC_EVENT_CMPL_LINK_STATUS_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffff0UL
@@ -195,6 +198,9 @@ struct hwrm_async_event_cmpl_link_speed_change {
195 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_25GB (0xfaUL << 1) 198 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_25GB (0xfaUL << 1)
196 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_40GB (0x190UL << 1) 199 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_40GB (0x190UL << 1)
197 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_50GB (0x1f4UL << 1) 200 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_50GB (0x1f4UL << 1)
201 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_100GB (0x3e8UL << 1)
202 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_10MB (0xffffUL << 1)
203 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_LAST HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_NEW_LINK_SPEED_100MBPS_10MB
198 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffff0000UL 204 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffff0000UL
199 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_SFT 16 205 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CHANGE_EVENT_DATA1_PORT_ID_SFT 16
200}; 206};
@@ -237,6 +243,55 @@ struct hwrm_async_event_cmpl_port_conn_not_allowed {
237 __le32 event_data1; 243 __le32 event_data1;
238 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK 0xffffUL 244 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK 0xffffUL
239 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT 0 245 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT 0
246 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_MASK 0xff0000UL
247 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_SFT 16
248 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_NONE (0x0UL << 16)
249 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_DISABLETX (0x1UL << 16)
250 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_WARNINGMSG (0x2UL << 16)
251 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_PWRDOWN (0x3UL << 16)
252 #define HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_LAST HWRM_ASYNC_EVENT_CMPL_PORT_CONN_NOT_ALLOWED_EVENT_DATA1_ENFORCEMENT_POLICY_PWRDOWN
253};
254
255/* HWRM Asynchronous Event Completion Record for link speed config not allowed (16 bytes) */
256struct hwrm_async_event_cmpl_link_speed_cfg_not_allowed {
257 __le16 type;
258 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_MASK 0x3fUL
259 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_SFT 0
260 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_TYPE_HWRM_ASYNC_EVENT (0x2eUL << 0)
261 __le16 event_id;
262 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_ID_LINK_SPEED_CFG_NOT_ALLOWED (0x5UL << 0)
263 __le32 event_data2;
264 u8 opaque_v;
265 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_V 0x1UL
266 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_OPAQUE_MASK 0xfeUL
267 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_OPAQUE_SFT 1
268 u8 timestamp_lo;
269 __le16 timestamp_hi;
270 __le32 event_data1;
271 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_DATA1_PORT_ID_MASK 0xffffUL
272 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_NOT_ALLOWED_EVENT_DATA1_PORT_ID_SFT 0
273};
274
275/* HWRM Asynchronous Event Completion Record for link speed configuration change (16 bytes) */
276struct hwrm_async_event_cmpl_link_speed_cfg_change {
277 __le16 type;
278 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_MASK 0x3fUL
279 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_SFT 0
280 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT (0x2eUL << 0)
281 __le16 event_id;
282 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_ID_LINK_SPEED_CFG_CHANGE (0x6UL << 0)
283 __le32 event_data2;
284 u8 opaque_v;
285 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_V 0x1UL
286 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_MASK 0xfeUL
287 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_OPAQUE_SFT 1
288 u8 timestamp_lo;
289 __le16 timestamp_hi;
290 __le32 event_data1;
291 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_MASK 0xffffUL
292 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_PORT_ID_SFT 0
293 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_SUPPORTED_LINK_SPEEDS_CHANGE 0x10000UL
294 #define HWRM_ASYNC_EVENT_CMPL_LINK_SPEED_CFG_CHANGE_EVENT_DATA1_ILLEGAL_LINK_SPEED_CFG 0x20000UL
240}; 295};
241 296
242/* HWRM Asynchronous Event Completion Record for Function Driver Unload (16 bytes) */ 297/* HWRM Asynchronous Event Completion Record for Function Driver Unload (16 bytes) */
@@ -363,6 +418,47 @@ struct hwrm_async_event_cmpl_vf_mac_addr_change {
363 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_DATA1_VF_ID_SFT 0 418 #define HWRM_ASYNC_EVENT_CMPL_VF_MAC_ADDR_CHANGE_EVENT_DATA1_VF_ID_SFT 0
364}; 419};
365 420
421/* HWRM Asynchronous Event Completion Record for PF-VF communication status change (16 bytes) */
422struct hwrm_async_event_cmpl_pf_vf_comm_status_change {
423 __le16 type;
424 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_MASK 0x3fUL
425 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_SFT 0
426 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_TYPE_HWRM_ASYNC_EVENT (0x2eUL << 0)
427 __le16 event_id;
428 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_ID_PF_VF_COMM_STATUS_CHANGE (0x32UL << 0)
429 __le32 event_data2;
430 u8 opaque_v;
431 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_V 0x1UL
432 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_OPAQUE_MASK 0xfeUL
433 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_OPAQUE_SFT 1
434 u8 timestamp_lo;
435 __le16 timestamp_hi;
436 __le32 event_data1;
437 #define HWRM_ASYNC_EVENT_CMPL_PF_VF_COMM_STATUS_CHANGE_EVENT_DATA1_COMM_ESTABLISHED 0x1UL
438};
439
440/* HWRM Asynchronous Event Completion Record for VF configuration change (16 bytes) */
441struct hwrm_async_event_cmpl_vf_cfg_change {
442 __le16 type;
443 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_MASK 0x3fUL
444 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_SFT 0
445 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_TYPE_HWRM_ASYNC_EVENT (0x2eUL << 0)
446 __le16 event_id;
447 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_ID_VF_CFG_CHANGE (0x33UL << 0)
448 __le32 event_data2;
449 u8 opaque_v;
450 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_V 0x1UL
451 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_MASK 0xfeUL
452 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_OPAQUE_SFT 1
453 u8 timestamp_lo;
454 __le16 timestamp_hi;
455 __le32 event_data1;
456 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MTU_CHANGE 0x1UL
457 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_MRU_CHANGE 0x2UL
458 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_MAC_ADDR_CHANGE 0x4UL
459 #define HWRM_ASYNC_EVENT_CMPL_VF_CFG_CHANGE_EVENT_DATA1_DFLT_VLAN_CHANGE 0x8UL
460};
461
366/* HWRM Asynchronous Event Completion Record for HWRM Error (16 bytes) */ 462/* HWRM Asynchronous Event Completion Record for HWRM Error (16 bytes) */
367struct hwrm_async_event_cmpl_hwrm_error { 463struct hwrm_async_event_cmpl_hwrm_error {
368 __le16 type; 464 __le16 type;
@@ -377,6 +473,7 @@ struct hwrm_async_event_cmpl_hwrm_error {
377 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_WARNING (0x0UL << 0) 473 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_WARNING (0x0UL << 0)
378 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_NONFATAL (0x1UL << 0) 474 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_NONFATAL (0x1UL << 0)
379 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL (0x2UL << 0) 475 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL (0x2UL << 0)
476 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_LAST HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA2_SEVERITY_FATAL
380 u8 opaque_v; 477 u8 opaque_v;
381 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_V 0x1UL 478 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_V 0x1UL
382 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_MASK 0xfeUL 479 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_OPAQUE_MASK 0xfeUL
@@ -387,12 +484,12 @@ struct hwrm_async_event_cmpl_hwrm_error {
387 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA1_TIMESTAMP 0x1UL 484 #define HWRM_ASYNC_EVENT_CMPL_HWRM_ERROR_EVENT_DATA1_TIMESTAMP 0x1UL
388}; 485};
389 486
390/* HW Resource Manager Specification 1.0.0 */ 487/* HW Resource Manager Specification 1.2.2 */
391#define HWRM_VERSION_MAJOR 1 488#define HWRM_VERSION_MAJOR 1
392#define HWRM_VERSION_MINOR 0 489#define HWRM_VERSION_MINOR 2
393#define HWRM_VERSION_UPDATE 0 490#define HWRM_VERSION_UPDATE 2
394 491
395#define HWRM_VERSION_STR "1.0.0" 492#define HWRM_VERSION_STR "1.2.2"
396/* 493/*
397 * Following is the signature for HWRM message field that indicates not 494 * Following is the signature for HWRM message field that indicates not
398 * applicable (All F's). Need to cast it the size of the field if needed. 495 * applicable (All F's). Need to cast it the size of the field if needed.
@@ -444,7 +541,7 @@ struct cmd_nums {
444 #define HWRM_FUNC_BUF_RGTR (0x1fUL) 541 #define HWRM_FUNC_BUF_RGTR (0x1fUL)
445 #define HWRM_PORT_PHY_CFG (0x20UL) 542 #define HWRM_PORT_PHY_CFG (0x20UL)
446 #define HWRM_PORT_MAC_CFG (0x21UL) 543 #define HWRM_PORT_MAC_CFG (0x21UL)
447 #define RESERVED2 (0x22UL) 544 #define HWRM_PORT_TS_QUERY (0x22UL)
448 #define HWRM_PORT_QSTATS (0x23UL) 545 #define HWRM_PORT_QSTATS (0x23UL)
449 #define HWRM_PORT_LPBK_QSTATS (0x24UL) 546 #define HWRM_PORT_LPBK_QSTATS (0x24UL)
450 #define HWRM_PORT_CLR_STATS (0x25UL) 547 #define HWRM_PORT_CLR_STATS (0x25UL)
@@ -452,6 +549,9 @@ struct cmd_nums {
452 #define HWRM_PORT_PHY_QCFG (0x27UL) 549 #define HWRM_PORT_PHY_QCFG (0x27UL)
453 #define HWRM_PORT_MAC_QCFG (0x28UL) 550 #define HWRM_PORT_MAC_QCFG (0x28UL)
454 #define HWRM_PORT_BLINK_LED (0x29UL) 551 #define HWRM_PORT_BLINK_LED (0x29UL)
552 #define HWRM_PORT_PHY_QCAPS (0x2aUL)
553 #define HWRM_PORT_PHY_I2C_WRITE (0x2bUL)
554 #define HWRM_PORT_PHY_I2C_READ (0x2cUL)
455 #define HWRM_QUEUE_QPORTCFG (0x30UL) 555 #define HWRM_QUEUE_QPORTCFG (0x30UL)
456 #define HWRM_QUEUE_QCFG (0x31UL) 556 #define HWRM_QUEUE_QCFG (0x31UL)
457 #define HWRM_QUEUE_CFG (0x32UL) 557 #define HWRM_QUEUE_CFG (0x32UL)
@@ -531,6 +631,7 @@ struct cmd_nums {
531 __le16 unused_0[3]; 631 __le16 unused_0[3];
532}; 632};
533 633
634/* Return Codes (8 bytes) */
534struct ret_codes { 635struct ret_codes {
535 __le16 error_code; 636 __le16 error_code;
536 #define HWRM_ERR_CODE_SUCCESS (0x0UL) 637 #define HWRM_ERR_CODE_SUCCESS (0x0UL)
@@ -875,10 +976,11 @@ struct hwrm_func_vf_cfg_input {
875 #define FUNC_VF_CFG_REQ_ENABLES_MTU 0x1UL 976 #define FUNC_VF_CFG_REQ_ENABLES_MTU 0x1UL
876 #define FUNC_VF_CFG_REQ_ENABLES_GUEST_VLAN 0x2UL 977 #define FUNC_VF_CFG_REQ_ENABLES_GUEST_VLAN 0x2UL
877 #define FUNC_VF_CFG_REQ_ENABLES_ASYNC_EVENT_CR 0x4UL 978 #define FUNC_VF_CFG_REQ_ENABLES_ASYNC_EVENT_CR 0x4UL
979 #define FUNC_VF_CFG_REQ_ENABLES_DFLT_MAC_ADDR 0x8UL
878 __le16 mtu; 980 __le16 mtu;
879 __le16 guest_vlan; 981 __le16 guest_vlan;
880 __le16 async_event_cr; 982 __le16 async_event_cr;
881 __le16 unused_0[3]; 983 u8 dflt_mac_addr[6];
882}; 984};
883 985
884/* Output (16 bytes) */ 986/* Output (16 bytes) */
@@ -917,7 +1019,8 @@ struct hwrm_func_qcaps_output {
917 __le32 flags; 1019 __le32 flags;
918 #define FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED 0x1UL 1020 #define FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED 0x1UL
919 #define FUNC_QCAPS_RESP_FLAGS_GLOBAL_MSIX_AUTOMASKING 0x2UL 1021 #define FUNC_QCAPS_RESP_FLAGS_GLOBAL_MSIX_AUTOMASKING 0x2UL
920 u8 perm_mac_address[6]; 1022 #define FUNC_QCAPS_RESP_FLAGS_PTP_SUPPORTED 0x4UL
1023 u8 mac_address[6];
921 __le16 max_rsscos_ctx; 1024 __le16 max_rsscos_ctx;
922 __le16 max_cmpl_rings; 1025 __le16 max_cmpl_rings;
923 __le16 max_tx_rings; 1026 __le16 max_tx_rings;
@@ -942,6 +1045,67 @@ struct hwrm_func_qcaps_output {
942 u8 valid; 1045 u8 valid;
943}; 1046};
944 1047
1048/* hwrm_func_qcfg */
1049/* Input (24 bytes) */
1050struct hwrm_func_qcfg_input {
1051 __le16 req_type;
1052 __le16 cmpl_ring;
1053 __le16 seq_id;
1054 __le16 target_id;
1055 __le64 resp_addr;
1056 __le16 fid;
1057 __le16 unused_0[3];
1058};
1059
1060/* Output (72 bytes) */
1061struct hwrm_func_qcfg_output {
1062 __le16 error_code;
1063 __le16 req_type;
1064 __le16 seq_id;
1065 __le16 resp_len;
1066 __le16 fid;
1067 __le16 port_id;
1068 __le16 vlan;
1069 u8 unused_0;
1070 u8 unused_1;
1071 u8 mac_address[6];
1072 __le16 pci_id;
1073 __le16 alloc_rsscos_ctx;
1074 __le16 alloc_cmpl_rings;
1075 __le16 alloc_tx_rings;
1076 __le16 alloc_rx_rings;
1077 __le16 alloc_l2_ctx;
1078 __le16 alloc_vnics;
1079 __le16 mtu;
1080 __le16 mru;
1081 __le16 stat_ctx_id;
1082 u8 port_partition_type;
1083 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_SPF (0x0UL << 0)
1084 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_MPFS (0x1UL << 0)
1085 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0 (0x2UL << 0)
1086 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5 (0x3UL << 0)
1087 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR2_0 (0x4UL << 0)
1088 #define FUNC_QCFG_RESP_PORT_PARTITION_TYPE_UNKNOWN (0xffUL << 0)
1089 u8 unused_2;
1090 __le16 dflt_vnic_id;
1091 u8 unused_3;
1092 u8 unused_4;
1093 __le32 min_bw;
1094 __le32 max_bw;
1095 u8 evb_mode;
1096 #define FUNC_QCFG_RESP_EVB_MODE_NO_EVB (0x0UL << 0)
1097 #define FUNC_QCFG_RESP_EVB_MODE_VEB (0x1UL << 0)
1098 #define FUNC_QCFG_RESP_EVB_MODE_VEPA (0x2UL << 0)
1099 u8 unused_5;
1100 __le16 unused_6;
1101 __le32 alloc_mcast_filters;
1102 __le32 alloc_hw_ring_grps;
1103 u8 unused_7;
1104 u8 unused_8;
1105 u8 unused_9;
1106 u8 valid;
1107};
1108
945/* hwrm_func_cfg */ 1109/* hwrm_func_cfg */
946/* Input (88 bytes) */ 1110/* Input (88 bytes) */
947struct hwrm_func_cfg_input { 1111struct hwrm_func_cfg_input {
@@ -1171,6 +1335,7 @@ struct hwrm_func_drv_rgtr_input {
1171 #define FUNC_DRV_RGTR_REQ_OS_TYPE_UNKNOWN (0x0UL << 0) 1335 #define FUNC_DRV_RGTR_REQ_OS_TYPE_UNKNOWN (0x0UL << 0)
1172 #define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER (0x1UL << 0) 1336 #define FUNC_DRV_RGTR_REQ_OS_TYPE_OTHER (0x1UL << 0)
1173 #define FUNC_DRV_RGTR_REQ_OS_TYPE_MSDOS (0xeUL << 0) 1337 #define FUNC_DRV_RGTR_REQ_OS_TYPE_MSDOS (0xeUL << 0)
1338 #define FUNC_DRV_RGTR_REQ_OS_TYPE_WINDOWS (0x12UL << 0)
1174 #define FUNC_DRV_RGTR_REQ_OS_TYPE_SOLARIS (0x1dUL << 0) 1339 #define FUNC_DRV_RGTR_REQ_OS_TYPE_SOLARIS (0x1dUL << 0)
1175 #define FUNC_DRV_RGTR_REQ_OS_TYPE_LINUX (0x24UL << 0) 1340 #define FUNC_DRV_RGTR_REQ_OS_TYPE_LINUX (0x24UL << 0)
1176 #define FUNC_DRV_RGTR_REQ_OS_TYPE_FREEBSD (0x2aUL << 0) 1341 #define FUNC_DRV_RGTR_REQ_OS_TYPE_FREEBSD (0x2aUL << 0)
@@ -1302,6 +1467,7 @@ struct hwrm_func_drv_qver_output {
1302 #define FUNC_DRV_QVER_RESP_OS_TYPE_UNKNOWN (0x0UL << 0) 1467 #define FUNC_DRV_QVER_RESP_OS_TYPE_UNKNOWN (0x0UL << 0)
1303 #define FUNC_DRV_QVER_RESP_OS_TYPE_OTHER (0x1UL << 0) 1468 #define FUNC_DRV_QVER_RESP_OS_TYPE_OTHER (0x1UL << 0)
1304 #define FUNC_DRV_QVER_RESP_OS_TYPE_MSDOS (0xeUL << 0) 1469 #define FUNC_DRV_QVER_RESP_OS_TYPE_MSDOS (0xeUL << 0)
1470 #define FUNC_DRV_QVER_RESP_OS_TYPE_WINDOWS (0x12UL << 0)
1305 #define FUNC_DRV_QVER_RESP_OS_TYPE_SOLARIS (0x1dUL << 0) 1471 #define FUNC_DRV_QVER_RESP_OS_TYPE_SOLARIS (0x1dUL << 0)
1306 #define FUNC_DRV_QVER_RESP_OS_TYPE_LINUX (0x24UL << 0) 1472 #define FUNC_DRV_QVER_RESP_OS_TYPE_LINUX (0x24UL << 0)
1307 #define FUNC_DRV_QVER_RESP_OS_TYPE_FREEBSD (0x2aUL << 0) 1473 #define FUNC_DRV_QVER_RESP_OS_TYPE_FREEBSD (0x2aUL << 0)
@@ -1317,7 +1483,7 @@ struct hwrm_func_drv_qver_output {
1317}; 1483};
1318 1484
1319/* hwrm_port_phy_cfg */ 1485/* hwrm_port_phy_cfg */
1320/* Input (48 bytes) */ 1486/* Input (56 bytes) */
1321struct hwrm_port_phy_cfg_input { 1487struct hwrm_port_phy_cfg_input {
1322 __le16 req_type; 1488 __le16 req_type;
1323 __le16 cmpl_ring; 1489 __le16 cmpl_ring;
@@ -1329,6 +1495,10 @@ struct hwrm_port_phy_cfg_input {
1329 #define PORT_PHY_CFG_REQ_FLAGS_FORCE_LINK_DOWN 0x2UL 1495 #define PORT_PHY_CFG_REQ_FLAGS_FORCE_LINK_DOWN 0x2UL
1330 #define PORT_PHY_CFG_REQ_FLAGS_FORCE 0x4UL 1496 #define PORT_PHY_CFG_REQ_FLAGS_FORCE 0x4UL
1331 #define PORT_PHY_CFG_REQ_FLAGS_RESTART_AUTONEG 0x8UL 1497 #define PORT_PHY_CFG_REQ_FLAGS_RESTART_AUTONEG 0x8UL
1498 #define PORT_PHY_CFG_REQ_FLAGS_EEE_ENABLE 0x10UL
1499 #define PORT_PHY_CFG_REQ_FLAGS_EEE_DISABLE 0x20UL
1500 #define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_ENABLE 0x40UL
1501 #define PORT_PHY_CFG_REQ_FLAGS_EEE_TX_LPI_DISABLE 0x80UL
1332 __le32 enables; 1502 __le32 enables;
1333 #define PORT_PHY_CFG_REQ_ENABLES_AUTO_MODE 0x1UL 1503 #define PORT_PHY_CFG_REQ_ENABLES_AUTO_MODE 0x1UL
1334 #define PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX 0x2UL 1504 #define PORT_PHY_CFG_REQ_ENABLES_AUTO_DUPLEX 0x2UL
@@ -1339,6 +1509,8 @@ struct hwrm_port_phy_cfg_input {
1339 #define PORT_PHY_CFG_REQ_ENABLES_LPBK 0x40UL 1509 #define PORT_PHY_CFG_REQ_ENABLES_LPBK 0x40UL
1340 #define PORT_PHY_CFG_REQ_ENABLES_PREEMPHASIS 0x80UL 1510 #define PORT_PHY_CFG_REQ_ENABLES_PREEMPHASIS 0x80UL
1341 #define PORT_PHY_CFG_REQ_ENABLES_FORCE_PAUSE 0x100UL 1511 #define PORT_PHY_CFG_REQ_ENABLES_FORCE_PAUSE 0x100UL
1512 #define PORT_PHY_CFG_REQ_ENABLES_EEE_LINK_SPEED_MASK 0x200UL
1513 #define PORT_PHY_CFG_REQ_ENABLES_TX_LPI_TIMER 0x400UL
1342 __le16 port_id; 1514 __le16 port_id;
1343 __le16 force_link_speed; 1515 __le16 force_link_speed;
1344 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100MB (0x1UL << 0) 1516 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100MB (0x1UL << 0)
@@ -1350,12 +1522,14 @@ struct hwrm_port_phy_cfg_input {
1350 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB (0xfaUL << 0) 1522 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_25GB (0xfaUL << 0)
1351 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB (0x190UL << 0) 1523 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_40GB (0x190UL << 0)
1352 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB (0x1f4UL << 0) 1524 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_50GB (0x1f4UL << 0)
1525 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_100GB (0x3e8UL << 0)
1526 #define PORT_PHY_CFG_REQ_FORCE_LINK_SPEED_10MB (0xffffUL << 0)
1353 u8 auto_mode; 1527 u8 auto_mode;
1354 #define PORT_PHY_CFG_REQ_AUTO_MODE_NONE (0x0UL << 0) 1528 #define PORT_PHY_CFG_REQ_AUTO_MODE_NONE (0x0UL << 0)
1355 #define PORT_PHY_CFG_REQ_AUTO_MODE_ALL_SPEEDS (0x1UL << 0) 1529 #define PORT_PHY_CFG_REQ_AUTO_MODE_ALL_SPEEDS (0x1UL << 0)
1356 #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_SPEED (0x2UL << 0) 1530 #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_SPEED (0x2UL << 0)
1357 #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_OR_BELOW (0x3UL << 0) 1531 #define PORT_PHY_CFG_REQ_AUTO_MODE_ONE_OR_BELOW (0x3UL << 0)
1358 #define PORT_PHY_CFG_REQ_AUTO_MODE_MASK (0x4UL << 0) 1532 #define PORT_PHY_CFG_REQ_AUTO_MODE_SPEED_MASK (0x4UL << 0)
1359 u8 auto_duplex; 1533 u8 auto_duplex;
1360 #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_HALF (0x0UL << 0) 1534 #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_HALF (0x0UL << 0)
1361 #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL (0x1UL << 0) 1535 #define PORT_PHY_CFG_REQ_AUTO_DUPLEX_FULL (0x1UL << 0)
@@ -1363,6 +1537,7 @@ struct hwrm_port_phy_cfg_input {
1363 u8 auto_pause; 1537 u8 auto_pause;
1364 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX 0x1UL 1538 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_TX 0x1UL
1365 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX 0x2UL 1539 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_RX 0x2UL
1540 #define PORT_PHY_CFG_REQ_AUTO_PAUSE_AUTONEG_PAUSE 0x4UL
1366 u8 unused_0; 1541 u8 unused_0;
1367 __le16 auto_link_speed; 1542 __le16 auto_link_speed;
1368 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100MB (0x1UL << 0) 1543 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100MB (0x1UL << 0)
@@ -1374,6 +1549,8 @@ struct hwrm_port_phy_cfg_input {
1374 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_25GB (0xfaUL << 0) 1549 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_25GB (0xfaUL << 0)
1375 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_40GB (0x190UL << 0) 1550 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_40GB (0x190UL << 0)
1376 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB (0x1f4UL << 0) 1551 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_50GB (0x1f4UL << 0)
1552 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_100GB (0x3e8UL << 0)
1553 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_10MB (0xffffUL << 0)
1377 __le16 auto_link_speed_mask; 1554 __le16 auto_link_speed_mask;
1378 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MBHD 0x1UL 1555 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MBHD 0x1UL
1379 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MB 0x2UL 1556 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100MB 0x2UL
@@ -1386,6 +1563,9 @@ struct hwrm_port_phy_cfg_input {
1386 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_25GB 0x100UL 1563 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_25GB 0x100UL
1387 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_40GB 0x200UL 1564 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_40GB 0x200UL
1388 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_50GB 0x400UL 1565 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_50GB 0x400UL
1566 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_100GB 0x800UL
1567 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MBHD 0x1000UL
1568 #define PORT_PHY_CFG_REQ_AUTO_LINK_SPEED_MASK_10MB 0x2000UL
1389 u8 wirespeed; 1569 u8 wirespeed;
1390 #define PORT_PHY_CFG_REQ_WIRESPEED_OFF (0x0UL << 0) 1570 #define PORT_PHY_CFG_REQ_WIRESPEED_OFF (0x0UL << 0)
1391 #define PORT_PHY_CFG_REQ_WIRESPEED_ON (0x1UL << 0) 1571 #define PORT_PHY_CFG_REQ_WIRESPEED_ON (0x1UL << 0)
@@ -1398,7 +1578,20 @@ struct hwrm_port_phy_cfg_input {
1398 #define PORT_PHY_CFG_REQ_FORCE_PAUSE_RX 0x2UL 1578 #define PORT_PHY_CFG_REQ_FORCE_PAUSE_RX 0x2UL
1399 u8 unused_1; 1579 u8 unused_1;
1400 __le32 preemphasis; 1580 __le32 preemphasis;
1401 __le32 unused_2; 1581 __le16 eee_link_speed_mask;
1582 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD1 0x1UL
1583 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_100MB 0x2UL
1584 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD2 0x4UL
1585 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_1GB 0x8UL
1586 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD3 0x10UL
1587 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_RSVD4 0x20UL
1588 #define PORT_PHY_CFG_REQ_EEE_LINK_SPEED_MASK_10GB 0x40UL
1589 u8 unused_2;
1590 u8 unused_3;
1591 __le32 tx_lpi_timer;
1592 __le32 unused_4;
1593 #define PORT_PHY_CFG_REQ_TX_LPI_TIMER_MASK 0xffffffUL
1594 #define PORT_PHY_CFG_REQ_TX_LPI_TIMER_SFT 0
1402}; 1595};
1403 1596
1404/* Output (16 bytes) */ 1597/* Output (16 bytes) */
@@ -1426,7 +1619,7 @@ struct hwrm_port_phy_qcfg_input {
1426 __le16 unused_0[3]; 1619 __le16 unused_0[3];
1427}; 1620};
1428 1621
1429/* Output (48 bytes) */ 1622/* Output (96 bytes) */
1430struct hwrm_port_phy_qcfg_output { 1623struct hwrm_port_phy_qcfg_output {
1431 __le16 error_code; 1624 __le16 error_code;
1432 __le16 req_type; 1625 __le16 req_type;
@@ -1447,6 +1640,8 @@ struct hwrm_port_phy_qcfg_output {
1447 #define PORT_PHY_QCFG_RESP_LINK_SPEED_25GB (0xfaUL << 0) 1640 #define PORT_PHY_QCFG_RESP_LINK_SPEED_25GB (0xfaUL << 0)
1448 #define PORT_PHY_QCFG_RESP_LINK_SPEED_40GB (0x190UL << 0) 1641 #define PORT_PHY_QCFG_RESP_LINK_SPEED_40GB (0x190UL << 0)
1449 #define PORT_PHY_QCFG_RESP_LINK_SPEED_50GB (0x1f4UL << 0) 1642 #define PORT_PHY_QCFG_RESP_LINK_SPEED_50GB (0x1f4UL << 0)
1643 #define PORT_PHY_QCFG_RESP_LINK_SPEED_100GB (0x3e8UL << 0)
1644 #define PORT_PHY_QCFG_RESP_LINK_SPEED_10MB (0xffffUL << 0)
1450 u8 duplex; 1645 u8 duplex;
1451 #define PORT_PHY_QCFG_RESP_DUPLEX_HALF (0x0UL << 0) 1646 #define PORT_PHY_QCFG_RESP_DUPLEX_HALF (0x0UL << 0)
1452 #define PORT_PHY_QCFG_RESP_DUPLEX_FULL (0x1UL << 0) 1647 #define PORT_PHY_QCFG_RESP_DUPLEX_FULL (0x1UL << 0)
@@ -1465,6 +1660,9 @@ struct hwrm_port_phy_qcfg_output {
1465 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_25GB 0x100UL 1660 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_25GB 0x100UL
1466 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB 0x200UL 1661 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_40GB 0x200UL
1467 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB 0x400UL 1662 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_50GB 0x400UL
1663 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_100GB 0x800UL
1664 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MBHD 0x1000UL
1665 #define PORT_PHY_QCFG_RESP_SUPPORT_SPEEDS_10MB 0x2000UL
1468 __le16 force_link_speed; 1666 __le16 force_link_speed;
1469 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100MB (0x1UL << 0) 1667 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100MB (0x1UL << 0)
1470 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_1GB (0xaUL << 0) 1668 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_1GB (0xaUL << 0)
@@ -1475,15 +1673,18 @@ struct hwrm_port_phy_qcfg_output {
1475 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_25GB (0xfaUL << 0) 1673 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_25GB (0xfaUL << 0)
1476 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_40GB (0x190UL << 0) 1674 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_40GB (0x190UL << 0)
1477 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_50GB (0x1f4UL << 0) 1675 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_50GB (0x1f4UL << 0)
1676 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_100GB (0x3e8UL << 0)
1677 #define PORT_PHY_QCFG_RESP_FORCE_LINK_SPEED_10MB (0xffffUL << 0)
1478 u8 auto_mode; 1678 u8 auto_mode;
1479 #define PORT_PHY_QCFG_RESP_AUTO_MODE_NONE (0x0UL << 0) 1679 #define PORT_PHY_QCFG_RESP_AUTO_MODE_NONE (0x0UL << 0)
1480 #define PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS (0x1UL << 0) 1680 #define PORT_PHY_QCFG_RESP_AUTO_MODE_ALL_SPEEDS (0x1UL << 0)
1481 #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED (0x2UL << 0) 1681 #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_SPEED (0x2UL << 0)
1482 #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW (0x3UL << 0) 1682 #define PORT_PHY_QCFG_RESP_AUTO_MODE_ONE_OR_BELOW (0x3UL << 0)
1483 #define PORT_PHY_QCFG_RESP_AUTO_MODE_MASK (0x4UL << 0) 1683 #define PORT_PHY_QCFG_RESP_AUTO_MODE_SPEED_MASK (0x4UL << 0)
1484 u8 auto_pause; 1684 u8 auto_pause;
1485 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_TX 0x1UL 1685 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_TX 0x1UL
1486 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_RX 0x2UL 1686 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_RX 0x2UL
1687 #define PORT_PHY_QCFG_RESP_AUTO_PAUSE_AUTONEG_PAUSE 0x4UL
1487 __le16 auto_link_speed; 1688 __le16 auto_link_speed;
1488 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100MB (0x1UL << 0) 1689 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100MB (0x1UL << 0)
1489 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_1GB (0xaUL << 0) 1690 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_1GB (0xaUL << 0)
@@ -1494,6 +1695,8 @@ struct hwrm_port_phy_qcfg_output {
1494 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_25GB (0xfaUL << 0) 1695 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_25GB (0xfaUL << 0)
1495 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_40GB (0x190UL << 0) 1696 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_40GB (0x190UL << 0)
1496 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_50GB (0x1f4UL << 0) 1697 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_50GB (0x1f4UL << 0)
1698 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_100GB (0x3e8UL << 0)
1699 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_10MB (0xffffUL << 0)
1497 __le16 auto_link_speed_mask; 1700 __le16 auto_link_speed_mask;
1498 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MBHD 0x1UL 1701 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MBHD 0x1UL
1499 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MB 0x2UL 1702 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100MB 0x2UL
@@ -1506,6 +1709,9 @@ struct hwrm_port_phy_qcfg_output {
1506 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_25GB 0x100UL 1709 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_25GB 0x100UL
1507 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_40GB 0x200UL 1710 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_40GB 0x200UL
1508 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_50GB 0x400UL 1711 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_50GB 0x400UL
1712 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_100GB 0x800UL
1713 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MBHD 0x1000UL
1714 #define PORT_PHY_QCFG_RESP_AUTO_LINK_SPEED_MASK_10MB 0x2000UL
1509 u8 wirespeed; 1715 u8 wirespeed;
1510 #define PORT_PHY_QCFG_RESP_WIRESPEED_OFF (0x0UL << 0) 1716 #define PORT_PHY_QCFG_RESP_WIRESPEED_OFF (0x0UL << 0)
1511 #define PORT_PHY_QCFG_RESP_WIRESPEED_ON (0x1UL << 0) 1717 #define PORT_PHY_QCFG_RESP_WIRESPEED_ON (0x1UL << 0)
@@ -1516,31 +1722,49 @@ struct hwrm_port_phy_qcfg_output {
1516 u8 force_pause; 1722 u8 force_pause;
1517 #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_TX 0x1UL 1723 #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_TX 0x1UL
1518 #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_RX 0x2UL 1724 #define PORT_PHY_QCFG_RESP_FORCE_PAUSE_RX 0x2UL
1519 u8 reserved1; 1725 u8 module_status;
1726 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NONE (0x0UL << 0)
1727 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_DISABLETX (0x1UL << 0)
1728 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_WARNINGMSG (0x2UL << 0)
1729 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_PWRDOWN (0x3UL << 0)
1730 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTINSERTED (0x4UL << 0)
1731 #define PORT_PHY_QCFG_RESP_MODULE_STATUS_NOTAPPLICABLE (0xffUL << 0)
1520 __le32 preemphasis; 1732 __le32 preemphasis;
1521 u8 phy_maj; 1733 u8 phy_maj;
1522 u8 phy_min; 1734 u8 phy_min;
1523 u8 phy_bld; 1735 u8 phy_bld;
1524 u8 phy_type; 1736 u8 phy_type;
1525 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASECR4 (0x1UL << 0) 1737 #define PORT_PHY_QCFG_RESP_PHY_TYPE_UNKNOWN (0x0UL << 0)
1738 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASECR (0x1UL << 0)
1526 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR4 (0x2UL << 0) 1739 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR4 (0x2UL << 0)
1527 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASELR4 (0x3UL << 0) 1740 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASELR (0x3UL << 0)
1528 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASESR4 (0x4UL << 0) 1741 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASESR (0x4UL << 0)
1529 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR2 (0x5UL << 0) 1742 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR2 (0x5UL << 0)
1530 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKX4 (0x6UL << 0) 1743 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKX (0x6UL << 0)
1531 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR (0x7UL << 0) 1744 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASEKR (0x7UL << 0)
1532 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASET (0x8UL << 0) 1745 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASET (0x8UL << 0)
1746 #define PORT_PHY_QCFG_RESP_PHY_TYPE_BASETE (0x9UL << 0)
1747 #define PORT_PHY_QCFG_RESP_PHY_TYPE_SGMIIEXTPHY (0xaUL << 0)
1533 u8 media_type; 1748 u8 media_type;
1749 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_UNKNOWN (0x0UL << 0)
1534 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP (0x1UL << 0) 1750 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP (0x1UL << 0)
1535 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC (0x2UL << 0) 1751 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC (0x2UL << 0)
1536 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE (0x3UL << 0) 1752 #define PORT_PHY_QCFG_RESP_MEDIA_TYPE_FIBRE (0x3UL << 0)
1537 u8 transceiver_type; 1753 u8 xcvr_pkg_type;
1538 #define PORT_PHY_QCFG_RESP_TRANSCEIVER_TYPE_XCVR_INTERNAL (0x1UL << 0) 1754 #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL (0x1UL << 0)
1539 #define PORT_PHY_QCFG_RESP_TRANSCEIVER_TYPE_XCVR_EXTERNAL (0x2UL << 0) 1755 #define PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_EXTERNAL (0x2UL << 0)
1540 u8 phy_addr; 1756 u8 eee_config_phy_addr;
1541 #define PORT_PHY_QCFG_RESP_PHY_ADDR_MASK 0x1fUL 1757 #define PORT_PHY_QCFG_RESP_PHY_ADDR_MASK 0x1fUL
1542 #define PORT_PHY_QCFG_RESP_PHY_ADDR_SFT 0 1758 #define PORT_PHY_QCFG_RESP_PHY_ADDR_SFT 0
1543 u8 unused_2; 1759 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ENABLED 0x20UL
1760 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_ACTIVE 0x40UL
1761 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_EEE_TX_LPI 0x80UL
1762 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_MASK 0xe0UL
1763 #define PORT_PHY_QCFG_RESP_EEE_CONFIG_SFT 5
1764 u8 parallel_detect;
1765 #define PORT_PHY_QCFG_RESP_PARALLEL_DETECT 0x1UL
1766 #define PORT_PHY_QCFG_RESP_RESERVED_MASK 0xfeUL
1767 #define PORT_PHY_QCFG_RESP_RESERVED_SFT 1
1544 __le16 link_partner_adv_speeds; 1768 __le16 link_partner_adv_speeds;
1545 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MBHD 0x1UL 1769 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MBHD 0x1UL
1546 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MB 0x2UL 1770 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100MB 0x2UL
@@ -1553,15 +1777,48 @@ struct hwrm_port_phy_qcfg_output {
1553 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_25GB 0x100UL 1777 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_25GB 0x100UL
1554 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_40GB 0x200UL 1778 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_40GB 0x200UL
1555 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_50GB 0x400UL 1779 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_50GB 0x400UL
1780 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_100GB 0x800UL
1781 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MBHD 0x1000UL
1782 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_SPEEDS_10MB 0x2000UL
1556 u8 link_partner_adv_auto_mode; 1783 u8 link_partner_adv_auto_mode;
1557 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_NONE (0x0UL << 0) 1784 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_NONE (0x0UL << 0)
1558 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ALL_SPEEDS (0x1UL << 0) 1785 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ALL_SPEEDS (0x1UL << 0)
1559 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_SPEED (0x2UL << 0) 1786 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_SPEED (0x2UL << 0)
1560 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_OR_BELOW (0x3UL << 0) 1787 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_ONE_OR_BELOW (0x3UL << 0)
1561 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_MASK (0x4UL << 0) 1788 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_AUTO_MODE_SPEED_MASK (0x4UL << 0)
1562 u8 link_partner_adv_pause; 1789 u8 link_partner_adv_pause;
1563 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_TX 0x1UL 1790 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_TX 0x1UL
1564 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_RX 0x2UL 1791 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_PAUSE_RX 0x2UL
1792 __le16 adv_eee_link_speed_mask;
1793 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD1 0x1UL
1794 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_100MB 0x2UL
1795 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD2 0x4UL
1796 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_1GB 0x8UL
1797 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD3 0x10UL
1798 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_RSVD4 0x20UL
1799 #define PORT_PHY_QCFG_RESP_ADV_EEE_LINK_SPEED_MASK_10GB 0x40UL
1800 __le16 link_partner_adv_eee_link_speed_mask;
1801 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD1 0x1UL
1802 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_100MB 0x2UL
1803 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD2 0x4UL
1804 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_1GB 0x8UL
1805 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD3 0x10UL
1806 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_RSVD4 0x20UL
1807 #define PORT_PHY_QCFG_RESP_LINK_PARTNER_ADV_EEE_LINK_SPEED_MASK_10GB 0x40UL
1808 __le32 xcvr_identifier_type_tx_lpi_timer;
1809 #define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_MASK 0xffffffUL
1810 #define PORT_PHY_QCFG_RESP_TX_LPI_TIMER_SFT 0
1811 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_MASK 0xff000000UL
1812 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFT 24
1813 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_UNKNOWN (0x0UL << 24)
1814 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_SFP (0x3UL << 24)
1815 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP (0xcUL << 24)
1816 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFPPLUS (0xdUL << 24)
1817 #define PORT_PHY_QCFG_RESP_XCVR_IDENTIFIER_TYPE_QSFP28 (0x11UL << 24)
1818 __le32 unused_1;
1819 char phy_vendor_name[16];
1820 char phy_vendor_partnumber[16];
1821 __le32 unused_2;
1565 u8 unused_3; 1822 u8 unused_3;
1566 u8 unused_4; 1823 u8 unused_4;
1567 u8 unused_5; 1824 u8 unused_5;
@@ -1569,7 +1826,7 @@ struct hwrm_port_phy_qcfg_output {
1569}; 1826};
1570 1827
1571/* hwrm_port_mac_cfg */ 1828/* hwrm_port_mac_cfg */
1572/* Input (32 bytes) */ 1829/* Input (40 bytes) */
1573struct hwrm_port_mac_cfg_input { 1830struct hwrm_port_mac_cfg_input {
1574 __le16 req_type; 1831 __le16 req_type;
1575 __le16 cmpl_ring; 1832 __le16 cmpl_ring;
@@ -1581,6 +1838,10 @@ struct hwrm_port_mac_cfg_input {
1581 #define PORT_MAC_CFG_REQ_FLAGS_COS_ASSIGNMENT_ENABLE 0x2UL 1838 #define PORT_MAC_CFG_REQ_FLAGS_COS_ASSIGNMENT_ENABLE 0x2UL
1582 #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_ENABLE 0x4UL 1839 #define PORT_MAC_CFG_REQ_FLAGS_TUNNEL_PRI2COS_ENABLE 0x4UL
1583 #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_ENABLE 0x8UL 1840 #define PORT_MAC_CFG_REQ_FLAGS_IP_DSCP2COS_ENABLE 0x8UL
1841 #define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_ENABLE 0x10UL
1842 #define PORT_MAC_CFG_REQ_FLAGS_PTP_RX_TS_CAPTURE_DISABLE 0x20UL
1843 #define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_ENABLE 0x40UL
1844 #define PORT_MAC_CFG_REQ_FLAGS_PTP_TX_TS_CAPTURE_DISABLE 0x80UL
1584 __le32 enables; 1845 __le32 enables;
1585 #define PORT_MAC_CFG_REQ_ENABLES_IPG 0x1UL 1846 #define PORT_MAC_CFG_REQ_ENABLES_IPG 0x1UL
1586 #define PORT_MAC_CFG_REQ_ENABLES_LPBK 0x2UL 1847 #define PORT_MAC_CFG_REQ_ENABLES_LPBK 0x2UL
@@ -1588,6 +1849,8 @@ struct hwrm_port_mac_cfg_input {
1588 #define PORT_MAC_CFG_REQ_ENABLES_LCOS_MAP_PRI 0x8UL 1849 #define PORT_MAC_CFG_REQ_ENABLES_LCOS_MAP_PRI 0x8UL
1589 #define PORT_MAC_CFG_REQ_ENABLES_TUNNEL_PRI2COS_MAP_PRI 0x10UL 1850 #define PORT_MAC_CFG_REQ_ENABLES_TUNNEL_PRI2COS_MAP_PRI 0x10UL
1590 #define PORT_MAC_CFG_REQ_ENABLES_DSCP2COS_MAP_PRI 0x20UL 1851 #define PORT_MAC_CFG_REQ_ENABLES_DSCP2COS_MAP_PRI 0x20UL
1852 #define PORT_MAC_CFG_REQ_ENABLES_RX_TS_CAPTURE_PTP_MSG_TYPE 0x40UL
1853 #define PORT_MAC_CFG_REQ_ENABLES_TX_TS_CAPTURE_PTP_MSG_TYPE 0x80UL
1591 __le16 port_id; 1854 __le16 port_id;
1592 u8 ipg; 1855 u8 ipg;
1593 u8 lpbk; 1856 u8 lpbk;
@@ -1598,6 +1861,9 @@ struct hwrm_port_mac_cfg_input {
1598 u8 lcos_map_pri; 1861 u8 lcos_map_pri;
1599 u8 tunnel_pri2cos_map_pri; 1862 u8 tunnel_pri2cos_map_pri;
1600 u8 dscp2pri_map_pri; 1863 u8 dscp2pri_map_pri;
1864 __le16 rx_ts_capture_ptp_msg_type;
1865 __le16 tx_ts_capture_ptp_msg_type;
1866 __le32 unused_0;
1601}; 1867};
1602 1868
1603/* Output (16 bytes) */ 1869/* Output (16 bytes) */
@@ -1754,7 +2020,79 @@ struct hwrm_port_blink_led_output {
1754 u8 valid; 2020 u8 valid;
1755}; 2021};
1756 2022
1757/* hwrm_queue_qportcfg */ 2023/* hwrm_port_phy_qcaps */
2024/* Input (24 bytes) */
2025struct hwrm_port_phy_qcaps_input {
2026 __le16 req_type;
2027 __le16 cmpl_ring;
2028 __le16 seq_id;
2029 __le16 target_id;
2030 __le64 resp_addr;
2031 __le16 port_id;
2032 __le16 unused_0[3];
2033};
2034
2035/* Output (24 bytes) */
2036struct hwrm_port_phy_qcaps_output {
2037 __le16 error_code;
2038 __le16 req_type;
2039 __le16 seq_id;
2040 __le16 resp_len;
2041 u8 eee_supported;
2042 #define PORT_PHY_QCAPS_RESP_EEE_SUPPORTED 0x1UL
2043 #define PORT_PHY_QCAPS_RESP_RSVD1_MASK 0xfeUL
2044 #define PORT_PHY_QCAPS_RESP_RSVD1_SFT 1
2045 u8 unused_0;
2046 __le16 supported_speeds_force_mode;
2047 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MBHD 0x1UL
2048 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100MB 0x2UL
2049 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GBHD 0x4UL
2050 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_1GB 0x8UL
2051 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2GB 0x10UL
2052 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_2_5GB 0x20UL
2053 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10GB 0x40UL
2054 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_20GB 0x80UL
2055 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_25GB 0x100UL
2056 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_40GB 0x200UL
2057 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_50GB 0x400UL
2058 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_100GB 0x800UL
2059 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MBHD 0x1000UL
2060 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_FORCE_MODE_10MB 0x2000UL
2061 __le16 supported_speeds_auto_mode;
2062 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MBHD 0x1UL
2063 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100MB 0x2UL
2064 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GBHD 0x4UL
2065 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_1GB 0x8UL
2066 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2GB 0x10UL
2067 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_2_5GB 0x20UL
2068 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10GB 0x40UL
2069 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_20GB 0x80UL
2070 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_25GB 0x100UL
2071 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_40GB 0x200UL
2072 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_50GB 0x400UL
2073 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_100GB 0x800UL
2074 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MBHD 0x1000UL
2075 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_AUTO_MODE_10MB 0x2000UL
2076 __le16 supported_speeds_eee_mode;
2077 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD1 0x1UL
2078 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_100MB 0x2UL
2079 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD2 0x4UL
2080 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_1GB 0x8UL
2081 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD3 0x10UL
2082 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_RSVD4 0x20UL
2083 #define PORT_PHY_QCAPS_RESP_SUPPORTED_SPEEDS_EEE_MODE_10GB 0x40UL
2084 __le32 tx_lpi_timer_low;
2085 #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_MASK 0xffffffUL
2086 #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_LOW_SFT 0
2087 #define PORT_PHY_QCAPS_RESP_RSVD2_MASK 0xff000000UL
2088 #define PORT_PHY_QCAPS_RESP_RSVD2_SFT 24
2089 __le32 valid_tx_lpi_timer_high;
2090 #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_MASK 0xffffffUL
2091 #define PORT_PHY_QCAPS_RESP_TX_LPI_TIMER_HIGH_SFT 0
2092 #define PORT_PHY_QCAPS_RESP_VALID_MASK 0xff000000UL
2093 #define PORT_PHY_QCAPS_RESP_VALID_SFT 24
2094};
2095
1758/* Input (24 bytes) */ 2096/* Input (24 bytes) */
1759struct hwrm_queue_qportcfg_input { 2097struct hwrm_queue_qportcfg_input {
1760 __le16 req_type; 2098 __le16 req_type;
@@ -1766,6 +2104,7 @@ struct hwrm_queue_qportcfg_input {
1766 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH 0x1UL 2104 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH 0x1UL
1767 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 2105 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_TX (0x0UL << 0)
1768 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 2106 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX (0x1UL << 0)
2107 #define QUEUE_QPORTCFG_REQ_FLAGS_PATH_LAST QUEUE_QPORTCFG_REQ_FLAGS_PATH_RX
1769 __le16 port_id; 2108 __le16 port_id;
1770 __le16 unused_0; 2109 __le16 unused_0;
1771}; 2110};
@@ -1838,6 +2177,7 @@ struct hwrm_queue_cfg_input {
1838 #define QUEUE_CFG_REQ_FLAGS_PATH 0x1UL 2177 #define QUEUE_CFG_REQ_FLAGS_PATH 0x1UL
1839 #define QUEUE_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 2178 #define QUEUE_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0)
1840 #define QUEUE_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 2179 #define QUEUE_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0)
2180 #define QUEUE_CFG_REQ_FLAGS_PATH_LAST QUEUE_CFG_REQ_FLAGS_PATH_RX
1841 __le32 enables; 2181 __le32 enables;
1842 #define QUEUE_CFG_REQ_ENABLES_DFLT_LEN 0x1UL 2182 #define QUEUE_CFG_REQ_ENABLES_DFLT_LEN 0x1UL
1843 #define QUEUE_CFG_REQ_ENABLES_SERVICE_PROFILE 0x2UL 2183 #define QUEUE_CFG_REQ_ENABLES_SERVICE_PROFILE 0x2UL
@@ -1875,6 +2215,7 @@ struct hwrm_queue_buffers_cfg_input {
1875 #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH 0x1UL 2215 #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH 0x1UL
1876 #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 2216 #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0)
1877 #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 2217 #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0)
2218 #define QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_LAST QUEUE_BUFFERS_CFG_REQ_FLAGS_PATH_RX
1878 __le32 enables; 2219 __le32 enables;
1879 #define QUEUE_BUFFERS_CFG_REQ_ENABLES_RESERVED 0x1UL 2220 #define QUEUE_BUFFERS_CFG_REQ_ENABLES_RESERVED 0x1UL
1880 #define QUEUE_BUFFERS_CFG_REQ_ENABLES_SHARED 0x2UL 2221 #define QUEUE_BUFFERS_CFG_REQ_ENABLES_SHARED 0x2UL
@@ -1952,6 +2293,7 @@ struct hwrm_queue_pri2cos_cfg_input {
1952 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH 0x1UL 2293 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH 0x1UL
1953 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 2294 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0)
1954 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 2295 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0)
2296 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_LAST QUEUE_PRI2COS_CFG_REQ_FLAGS_PATH_RX
1955 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_IVLAN 0x2UL 2297 #define QUEUE_PRI2COS_CFG_REQ_FLAGS_IVLAN 0x2UL
1956 __le32 enables; 2298 __le32 enables;
1957 u8 port_id; 2299 u8 port_id;
@@ -2158,6 +2500,8 @@ struct hwrm_vnic_cfg_input {
2158 #define VNIC_CFG_REQ_FLAGS_DEFAULT 0x1UL 2500 #define VNIC_CFG_REQ_FLAGS_DEFAULT 0x1UL
2159 #define VNIC_CFG_REQ_FLAGS_VLAN_STRIP_MODE 0x2UL 2501 #define VNIC_CFG_REQ_FLAGS_VLAN_STRIP_MODE 0x2UL
2160 #define VNIC_CFG_REQ_FLAGS_BD_STALL_MODE 0x4UL 2502 #define VNIC_CFG_REQ_FLAGS_BD_STALL_MODE 0x4UL
2503 #define VNIC_CFG_REQ_FLAGS_ROCE_DUAL_VNIC_MODE 0x8UL
2504 #define VNIC_CFG_REQ_FLAGS_ROCE_ONLY_VNIC_MODE 0x10UL
2161 __le32 enables; 2505 __le32 enables;
2162 #define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP 0x1UL 2506 #define VNIC_CFG_REQ_ENABLES_DFLT_RING_GRP 0x1UL
2163 #define VNIC_CFG_REQ_ENABLES_RSS_RULE 0x2UL 2507 #define VNIC_CFG_REQ_ENABLES_RSS_RULE 0x2UL
@@ -2622,6 +2966,7 @@ struct hwrm_cfa_l2_filter_alloc_input {
2622 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH 0x1UL 2966 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH 0x1UL
2623 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_TX (0x0UL << 0) 2967 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_TX (0x0UL << 0)
2624 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX (0x1UL << 0) 2968 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX (0x1UL << 0)
2969 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_LAST CFA_L2_FILTER_ALLOC_REQ_FLAGS_PATH_RX
2625 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_LOOPBACK 0x2UL 2970 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_LOOPBACK 0x2UL
2626 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_DROP 0x4UL 2971 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_DROP 0x4UL
2627 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_OUTERMOST 0x8UL 2972 #define CFA_L2_FILTER_ALLOC_REQ_FLAGS_OUTERMOST 0x8UL
@@ -2747,6 +3092,7 @@ struct hwrm_cfa_l2_filter_cfg_input {
2747 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH 0x1UL 3092 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH 0x1UL
2748 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0) 3093 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_TX (0x0UL << 0)
2749 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0) 3094 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX (0x1UL << 0)
3095 #define CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_LAST CFA_L2_FILTER_CFG_REQ_FLAGS_PATH_RX
2750 #define CFA_L2_FILTER_CFG_REQ_FLAGS_DROP 0x2UL 3096 #define CFA_L2_FILTER_CFG_REQ_FLAGS_DROP 0x2UL
2751 __le32 enables; 3097 __le32 enables;
2752 #define CFA_L2_FILTER_CFG_REQ_ENABLES_DST_ID 0x1UL 3098 #define CFA_L2_FILTER_CFG_REQ_ENABLES_DST_ID 0x1UL
@@ -3337,6 +3683,41 @@ struct hwrm_fw_reset_output {
3337 u8 valid; 3683 u8 valid;
3338}; 3684};
3339 3685
3686/* hwrm_fw_qstatus */
3687/* Input (24 bytes) */
3688struct hwrm_fw_qstatus_input {
3689 __le16 req_type;
3690 __le16 cmpl_ring;
3691 __le16 seq_id;
3692 __le16 target_id;
3693 __le64 resp_addr;
3694 u8 embedded_proc_type;
3695 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_BOOT (0x0UL << 0)
3696 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_MGMT (0x1UL << 0)
3697 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_NETCTRL (0x2UL << 0)
3698 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_ROCE (0x3UL << 0)
3699 #define FW_QSTATUS_REQ_EMBEDDED_PROC_TYPE_RSVD (0x4UL << 0)
3700 u8 unused_0[7];
3701};
3702
3703/* Output (16 bytes) */
3704struct hwrm_fw_qstatus_output {
3705 __le16 error_code;
3706 __le16 req_type;
3707 __le16 seq_id;
3708 __le16 resp_len;
3709 u8 selfrst_status;
3710 #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTNONE (0x0UL << 0)
3711 #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTASAP (0x1UL << 0)
3712 #define FW_QSTATUS_RESP_SELFRST_STATUS_SELFRSTPCIERST (0x2UL << 0)
3713 u8 unused_0;
3714 __le16 unused_1;
3715 u8 unused_2;
3716 u8 unused_3;
3717 u8 unused_4;
3718 u8 valid;
3719};
3720
3340/* hwrm_exec_fwd_resp */ 3721/* hwrm_exec_fwd_resp */
3341/* Input (128 bytes) */ 3722/* Input (128 bytes) */
3342struct hwrm_exec_fwd_resp_input { 3723struct hwrm_exec_fwd_resp_input {
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_nvm_defs.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_nvm_defs.h
index 43ef392c8588..40a7b0e09612 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_nvm_defs.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_nvm_defs.h
@@ -1,6 +1,6 @@
1/* Broadcom NetXtreme-C/E network driver. 1/* Broadcom NetXtreme-C/E network driver.
2 * 2 *
3 * Copyright (c) 2014-2015 Broadcom Corporation 3 * Copyright (c) 2014-2016 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
index 0c5f510492f1..8457850b0bdd 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
@@ -1,6 +1,6 @@
1/* Broadcom NetXtreme-C/E network driver. 1/* Broadcom NetXtreme-C/E network driver.
2 * 2 *
3 * Copyright (c) 2014-2015 Broadcom Corporation 3 * Copyright (c) 2014-2016 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by
@@ -771,12 +771,8 @@ static int bnxt_vf_set_link(struct bnxt *bp, struct bnxt_vf_info *vf)
771 PORT_PHY_QCFG_RESP_LINK_NO_LINK) { 771 PORT_PHY_QCFG_RESP_LINK_NO_LINK) {
772 phy_qcfg_resp.link = 772 phy_qcfg_resp.link =
773 PORT_PHY_QCFG_RESP_LINK_LINK; 773 PORT_PHY_QCFG_RESP_LINK_LINK;
774 if (phy_qcfg_resp.auto_link_speed) 774 phy_qcfg_resp.link_speed = cpu_to_le16(
775 phy_qcfg_resp.link_speed = 775 PORT_PHY_QCFG_RESP_LINK_SPEED_10GB);
776 phy_qcfg_resp.auto_link_speed;
777 else
778 phy_qcfg_resp.link_speed =
779 phy_qcfg_resp.force_link_speed;
780 phy_qcfg_resp.duplex = 776 phy_qcfg_resp.duplex =
781 PORT_PHY_QCFG_RESP_DUPLEX_FULL; 777 PORT_PHY_QCFG_RESP_DUPLEX_FULL;
782 phy_qcfg_resp.pause = 778 phy_qcfg_resp.pause =
@@ -859,8 +855,8 @@ void bnxt_update_vf_mac(struct bnxt *bp)
859 * default but the stored zero MAC will allow the VF user to change 855 * default but the stored zero MAC will allow the VF user to change
860 * the random MAC address using ndo_set_mac_address() if he wants. 856 * the random MAC address using ndo_set_mac_address() if he wants.
861 */ 857 */
862 if (!ether_addr_equal(resp->perm_mac_address, bp->vf.mac_addr)) 858 if (!ether_addr_equal(resp->mac_address, bp->vf.mac_addr))
863 memcpy(bp->vf.mac_addr, resp->perm_mac_address, ETH_ALEN); 859 memcpy(bp->vf.mac_addr, resp->mac_address, ETH_ALEN);
864 860
865 /* overwrite netdev dev_addr with admin VF MAC */ 861 /* overwrite netdev dev_addr with admin VF MAC */
866 if (is_valid_ether_addr(bp->vf.mac_addr)) 862 if (is_valid_ether_addr(bp->vf.mac_addr))
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h
index c151280e3980..3f08354a247e 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.h
@@ -1,6 +1,6 @@
1/* Broadcom NetXtreme-C/E network driver. 1/* Broadcom NetXtreme-C/E network driver.
2 * 2 *
3 * Copyright (c) 2014-2015 Broadcom Corporation 3 * Copyright (c) 2014-2016 Broadcom Corporation
4 * 4 *
5 * This program is free software; you can redistribute it and/or modify 5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by 6 * it under the terms of the GNU General Public License as published by