Add three modifications. 1.RSS initialization process optimization 2.Attribute negotiation and optimization. 3.The reset command flags modification.
Yanling Song (3): net/spnic:RSS initialization process optimization net/spnic:Attribute negotiation and optimization. net/spnic:The reset command flags modification.
.../net/ethernet/ramaxel/spnic/hw/sphw_hw.h | 28 ++++----- .../ethernet/ramaxel/spnic/hw/sphw_hwdev.c | 9 ++- .../ethernet/ramaxel/spnic/hw/sphw_hwdev.h | 2 + .../net/ethernet/ramaxel/spnic/spnic_main.c | 22 +++---- .../ramaxel/spnic/spnic_mgmt_interface.h | 12 ---- .../ethernet/ramaxel/spnic/spnic_nic_cfg.c | 57 ++++++++++++------- .../ethernet/ramaxel/spnic/spnic_nic_cfg.h | 19 +------ .../ethernet/ramaxel/spnic/spnic_nic_dev.h | 2 + .../net/ethernet/ramaxel/spnic/spnic_rss.c | 16 +----- .../ethernet/ramaxel/spnic/spnic_rss_cfg.c | 57 ------------------- 10 files changed, 70 insertions(+), 154 deletions(-)
Ramaxel inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I4OENF CVE: NA
Firmware is responsible for the application and release of RSS module ID. And the driver no longer perceives it .
Signed-off-by: Yanling Song songyl@ramaxel.com Reviewed-by: Yang Gan yanggan@ramaxel.com --- .../net/ethernet/ramaxel/spnic/spnic_main.c | 6 -- .../ramaxel/spnic/spnic_mgmt_interface.h | 12 ---- .../ethernet/ramaxel/spnic/spnic_nic_cfg.c | 16 +++--- .../ethernet/ramaxel/spnic/spnic_nic_cfg.h | 16 ------ .../net/ethernet/ramaxel/spnic/spnic_rss.c | 16 +----- .../ethernet/ramaxel/spnic/spnic_rss_cfg.c | 57 ------------------- 6 files changed, 8 insertions(+), 115 deletions(-)
diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_main.c b/drivers/net/ethernet/ramaxel/spnic/spnic_main.c index f09f11488042..3670d92eaf2a 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_main.c +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_main.c @@ -350,9 +350,6 @@ static void spnic_sw_deinit(struct spnic_nic_dev *nic_dev) spnic_del_mac(nic_dev->hwdev, nic_dev->netdev->dev_addr, 0, sphw_global_func_id(nic_dev->hwdev), SPHW_CHANNEL_NIC);
- if (test_bit(SPNIC_RSS_ENABLE, &nic_dev->flags)) - spnic_rss_template_free(nic_dev->hwdev); - spnic_clear_rss_config(nic_dev); }
@@ -423,9 +420,6 @@ static int spnic_sw_init(struct spnic_nic_dev *nic_dev) set_mac_err: err_mac: get_mac_err: - - if (test_bit(SPNIC_RSS_ENABLE, &nic_dev->flags)) - spnic_rss_template_free(nic_dev->hwdev); spnic_clear_rss_config(nic_dev);
return err; diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_mgmt_interface.h b/drivers/net/ethernet/ramaxel/spnic/spnic_mgmt_interface.h index 58ab35c18057..720f6fcf5f0a 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_mgmt_interface.h +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_mgmt_interface.h @@ -350,18 +350,6 @@ struct spnic_rss_indir_table { u8 indir[SPNIC_RSS_INDIR_SIZE]; };
-#define NIC_RSS_CMD_TEMP_ALLOC 0x01 -#define NIC_RSS_CMD_TEMP_FREE 0x02 - -struct spnic_rss_template_mgmt { - struct mgmt_msg_head msg_head; - - u16 func_id; - u8 cmd; - u8 template_id; - u8 rsvd1[4]; -}; - #define SPNIC_DCB_UP_MAX 0x8 #define SPNIC_DCB_COS_MAX 0x8 #define SPNIC_DCB_TC_MAX 0x8 diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.c b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.c index 5bde91f35cca..24e55c087da5 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.c +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.c @@ -844,6 +844,12 @@ int spnic_init_nic_hwdev(void *hwdev, void *pcidev_hdl, void *dev_hdl, u16 rx_bu goto register_sa_err; }
+ err = spnic_init_function_table(nic_cfg); + if (err) { + nic_err(nic_cfg->dev_hdl, "Failed to init function table\n"); + goto init_func_tbl_err; + } + err = spnic_get_nic_feature(hwdev, &nic_cfg->feature_cap, 1); if (err) { nic_err(nic_cfg->dev_hdl, "Failed to get nic features\n"); @@ -867,22 +873,14 @@ int spnic_init_nic_hwdev(void *hwdev, void *pcidev_hdl, void *dev_hdl, u16 rx_bu
nic_cfg->rx_buff_len = rx_buff_len;
- err = spnic_init_function_table(nic_cfg); - if (err) { - nic_err(nic_cfg->dev_hdl, "Failed to init function table\n"); - goto init_func_tbl_err; - } - return 0;
-init_func_tbl_err: - spnic_vf_func_free(nic_cfg); - vf_init_err: sphw_aeq_unregister_swe_cb(hwdev, SPHW_STATELESS_EVENT);
register_sw_aeqe_err: get_feature_err: +init_func_tbl_err: sphw_unregister_service_adapter(hwdev, SERVICE_T_NIC);
register_sa_err: diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.h b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.h index 0872a2f94655..8be8f5334f72 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.h +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.h @@ -403,22 +403,6 @@ int spnic_set_vf_link_state(void *hwdev, u16 vf_id, int link); */ int spnic_get_port_info(void *hwdev, struct nic_port_info *port_info, u16 channel);
-/* * - * @brief spnic_rss_template_alloc - alloc rss template table - * @param hwdev: device pointer to hwdev - * @retval zero: success - * @retval non-zero: failure - */ -int spnic_rss_template_alloc(void *hwdev); - -/* * - * @brief spnic_rss_template_free - free rss template table - * @param hwdev: device pointer to hwdev - * @retval zero: success - * @retval non-zero: failure - */ -int spnic_rss_template_free(void *hwdev); - /* * * @brief spnic_set_rss_type - set rss type * @param hwdev: device pointer to hwdev diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_rss.c b/drivers/net/ethernet/ramaxel/spnic/spnic_rss.c index 86f6f92f669b..956d868df5b5 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_rss.c +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_rss.c @@ -224,7 +224,7 @@ void spnic_try_to_enable_rss(struct spnic_nic_dev *nic_dev) return;
nic_dev->max_qps = sphw_func_max_nic_qnum(nic_dev->hwdev); - if (nic_dev->max_qps <= 1) + if (nic_dev->max_qps <= 1 || !SPNIC_SUPPORT_RSS(nic_dev->hwdev)) goto set_q_params;
err = alloc_rss_resource(nic_dev); @@ -233,17 +233,6 @@ void spnic_try_to_enable_rss(struct spnic_nic_dev *nic_dev) goto set_q_params; }
- err = spnic_rss_template_alloc(nic_dev->hwdev); - if (err) { - if (err == -ENOSPC) - nic_err(&nic_dev->pdev->dev, "Failed to alloc template for rss, table is full\n"); - else - nic_err(&nic_dev->pdev->dev, "Failed to alloc template for rss, can't enable rss for this function\n"); - spnic_clear_rss_config(nic_dev); - nic_dev->max_qps = 1; - goto set_q_params; - } - set_bit(SPNIC_RSS_ENABLE, &nic_dev->flags); nic_dev->max_qps = sphw_func_max_nic_qnum(nic_dev->hwdev);
@@ -258,9 +247,6 @@ void spnic_try_to_enable_rss(struct spnic_nic_dev *nic_dev) nic_err(&nic_dev->pdev->dev, "Failed to set hardware rss parameters\n");
spnic_clear_rss_config(nic_dev); - err = spnic_rss_template_free(nic_dev->hwdev); - if (err) - return; nic_dev->max_qps = 1; goto set_q_params; } diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_rss_cfg.c b/drivers/net/ethernet/ramaxel/spnic/spnic_rss_cfg.c index b5be80cc304f..12da3aa59400 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_rss_cfg.c +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_rss_cfg.c @@ -18,63 +18,6 @@ #include "spnic_nic.h" #include "sphw_common.h"
-int spnic_rss_template_alloc(void *hwdev) -{ - struct spnic_rss_template_mgmt template_mgmt; - struct spnic_nic_cfg *nic_cfg = NULL; - u16 out_size = sizeof(template_mgmt); - int err; - - if (!hwdev) - return -EINVAL; - - nic_cfg = sphw_get_service_adapter(hwdev, SERVICE_T_NIC); - - memset(&template_mgmt, 0, sizeof(struct spnic_rss_template_mgmt)); - - template_mgmt.func_id = sphw_global_func_id(hwdev); - template_mgmt.cmd = NIC_RSS_CMD_TEMP_ALLOC; - - err = l2nic_msg_to_mgmt_sync(hwdev, SPNIC_NIC_CMD_RSS_TEMP_MGR, - &template_mgmt, sizeof(template_mgmt), - &template_mgmt, &out_size); - if (err || !out_size || template_mgmt.msg_head.status) { - nic_err(nic_cfg->dev_hdl, "Failed to alloc rss template, err: %d, status: 0x%x, out size: 0x%x\n", - err, template_mgmt.msg_head.status, out_size); - return -EINVAL; - } - - return 0; -} - -int spnic_rss_template_free(void *hwdev) -{ - struct spnic_rss_template_mgmt template_mgmt; - struct spnic_nic_cfg *nic_cfg = NULL; - u16 out_size = sizeof(template_mgmt); - int err; - - if (!hwdev) - return -EINVAL; - - nic_cfg = sphw_get_service_adapter(hwdev, SERVICE_T_NIC); - memset(&template_mgmt, 0, sizeof(struct spnic_rss_template_mgmt)); - - template_mgmt.func_id = sphw_global_func_id(hwdev); - template_mgmt.cmd = NIC_RSS_CMD_TEMP_FREE; - - err = l2nic_msg_to_mgmt_sync(hwdev, SPNIC_NIC_CMD_RSS_TEMP_MGR, - &template_mgmt, sizeof(template_mgmt), - &template_mgmt, &out_size); - if (err || !out_size || template_mgmt.msg_head.status) { - nic_err(nic_cfg->dev_hdl, "Failed to free rss template, err: %d, status: 0x%x, out size: 0x%x\n", - err, template_mgmt.msg_head.status, out_size); - return -EINVAL; - } - - return 0; -} - static int spnic_rss_cfg_hash_key(struct spnic_nic_cfg *nic_cfg, u8 opcode, u8 *key) { struct spnic_cmd_rss_hash_key hash_key;
Ramaxel inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I4OENF CVE: NA
Driver and firmware properties negotiate optimization. After obtaining the attributes from the firmware. It intersects with the attributes supported by the driver.
Signed-off-by: Yanling Song songyl@ramaxel.com Reviewed-by: Yang Gan yanggan@ramaxel.com --- .../ethernet/ramaxel/spnic/hw/sphw_hwdev.c | 9 +++- .../ethernet/ramaxel/spnic/hw/sphw_hwdev.h | 2 + .../net/ethernet/ramaxel/spnic/spnic_main.c | 16 ++++---- .../ethernet/ramaxel/spnic/spnic_nic_cfg.c | 41 +++++++++++++------ .../ethernet/ramaxel/spnic/spnic_nic_cfg.h | 3 +- .../ethernet/ramaxel/spnic/spnic_nic_dev.h | 2 + 6 files changed, 50 insertions(+), 23 deletions(-)
diff --git a/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hwdev.c b/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hwdev.c index c88799bcda98..fc7d101a7fe3 100644 --- a/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hwdev.c +++ b/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hwdev.c @@ -699,7 +699,8 @@ static void sphw_unsync_mgmt_func_state(struct sphw_hwdev *hwdev)
static int init_basic_attributes(struct sphw_hwdev *hwdev) { - int err; + u64 drv_feature[COMM_MAX_FEATURE_QWORD] = {SPHW_DRV_FEATURE_QW0}; + int err, i;
err = sphw_get_board_info(hwdev, &hwdev->board_info, SPHW_CHANNEL_COMM); if (err) @@ -711,7 +712,11 @@ static int init_basic_attributes(struct sphw_hwdev *hwdev) return err; }
- sdk_info(hwdev->dev_hdl, "Comm features: 0x%llx\n", hwdev->features[0]); + sdk_info(hwdev->dev_hdl, "Comm hw features: 0x%llx, drv features: 0x%llx\n", + hwdev->features[0], drv_feature[0]); + + for (i = 0; i < COMM_MAX_FEATURE_QWORD; i++) + hwdev->features[i] &= drv_feature[i];
err = sphw_get_global_attr(hwdev, &hwdev->glb_attr); if (err) { diff --git a/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hwdev.h b/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hwdev.h index 451df0306e6c..bf0b93d9a4d2 100644 --- a/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hwdev.h +++ b/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hwdev.h @@ -90,4 +90,6 @@ struct sphw_hwdev { #define COMM_FEATURE_QW0(hwdev, feature) ((hwdev)->features[0] & COMM_F_##feature) #define COMM_SUPPORT_API_CHAIN(hwdev) COMM_FEATURE_QW0(hwdev, API_CHAIN)
+#define SPHW_DRV_FEATURE_QW0 COMM_F_API_CHAIN + #endif diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_main.c b/drivers/net/ethernet/ramaxel/spnic/spnic_main.c index 3670d92eaf2a..5b9822ebd806 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_main.c +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_main.c @@ -356,9 +356,13 @@ static void spnic_sw_deinit(struct spnic_nic_dev *nic_dev) static int spnic_sw_init(struct spnic_nic_dev *nic_dev) { struct net_device *netdev = nic_dev->netdev; - + u64 nic_feature; int err = 0;
+ nic_feature = spnic_get_feature_cap(nic_dev->hwdev); + nic_feature &= SPNIC_DRV_FEATURE; + spnic_update_nic_feature(nic_dev->hwdev, nic_feature); + sema_init(&nic_dev->port_state_sem, 1);
err = spnic_dcb_init(nic_dev); @@ -652,7 +656,6 @@ static int setup_nic_dev(struct net_device *netdev, struct spnic_lld_dev *lld_de
static int spnic_set_default_hw_feature(struct spnic_nic_dev *nic_dev) { - u64 nic_features; int err;
if (!SPNIC_FUNC_IS_VF(nic_dev->hwdev)) { @@ -663,8 +666,7 @@ static int spnic_set_default_hw_feature(struct spnic_nic_dev *nic_dev) } }
- nic_features = spnic_get_feature_cap(nic_dev->hwdev); - err = spnic_set_nic_feature(nic_dev->hwdev, &nic_features, 1); + err = spnic_set_nic_feature_to_hw(nic_dev->hwdev); if (err) { nic_err(&nic_dev->pdev->dev, "Failed to set nic features\n"); return err; @@ -729,13 +731,13 @@ static int nic_probe(struct spnic_lld_dev *lld_dev, void **uld_dev, char *uld_de goto init_nic_hwdev_err; }
- spnic_assign_netdev_ops(nic_dev); - netdev_feature_init(netdev); - err = spnic_sw_init(nic_dev); if (err) goto sw_init_err;
+ spnic_assign_netdev_ops(nic_dev); + netdev_feature_init(netdev); + err = spnic_set_default_hw_feature(nic_dev); if (err) goto set_features_err; diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.c b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.c index 24e55c087da5..d241f6a7947d 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.c +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.c @@ -795,14 +795,38 @@ static int nic_feature_nego(void *hwdev, u8 opcode, u64 *s_feature, u16 size) return 0; }
-int spnic_get_nic_feature(void *hwdev, u64 *s_feature, u16 size) +static int spnic_get_nic_feature_from_hw(void *hwdev, u64 *s_feature, u16 size) { return nic_feature_nego(hwdev, SPNIC_CMD_OP_GET, s_feature, size); }
-int spnic_set_nic_feature(void *hwdev, u64 *s_feature, u16 size) +int spnic_set_nic_feature_to_hw(void *hwdev) { - return nic_feature_nego(hwdev, SPNIC_CMD_OP_SET, s_feature, size); + struct spnic_nic_cfg *nic_cfg = NULL; + + nic_cfg = sphw_get_service_adapter(hwdev, SERVICE_T_NIC); + + return nic_feature_nego(hwdev, SPNIC_CMD_OP_SET, &nic_cfg->feature_cap, 1); +} + +u64 spnic_get_feature_cap(void *hwdev) +{ + struct spnic_nic_cfg *nic_cfg = NULL; + + nic_cfg = sphw_get_service_adapter(hwdev, SERVICE_T_NIC); + + return nic_cfg->feature_cap; +} + +void spnic_update_nic_feature(void *hwdev, u64 feature) +{ + struct spnic_nic_cfg *nic_cfg = NULL; + + nic_cfg = sphw_get_service_adapter(hwdev, SERVICE_T_NIC); + + nic_cfg->feature_cap = feature; + + nic_info(nic_cfg->dev_hdl, "Update nic feature to 0x%llx\n", nic_cfg->feature_cap); }
static inline int init_nic_hwdev_param_valid(void *hwdev, void *pcidev_hdl, void *dev_hdl) @@ -850,7 +874,7 @@ int spnic_init_nic_hwdev(void *hwdev, void *pcidev_hdl, void *dev_hdl, u16 rx_bu goto init_func_tbl_err; }
- err = spnic_get_nic_feature(hwdev, &nic_cfg->feature_cap, 1); + err = spnic_get_nic_feature_from_hw(hwdev, &nic_cfg->feature_cap, 1); if (err) { nic_err(nic_cfg->dev_hdl, "Failed to get nic features\n"); goto get_feature_err; @@ -1128,15 +1152,6 @@ int spnic_set_vlan_fliter(void *hwdev, u32 vlan_filter_ctrl) return 0; }
-u64 spnic_get_feature_cap(void *hwdev) -{ - struct spnic_nic_cfg *nic_cfg = NULL; - - nic_cfg = sphw_get_service_adapter(hwdev, SERVICE_T_NIC); - - return nic_cfg->feature_cap; -} - int spnic_add_tcam_rule(void *hwdev, struct nic_tcam_cfg_rule *tcam_rule) { u16 out_size = sizeof(struct nic_cmd_fdir_add_rule); diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.h b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.h index 8be8f5334f72..f280b41fe362 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.h +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_cfg.h @@ -703,6 +703,7 @@ int spnic_set_autoneg(void *hwdev, bool enable); int spnic_get_sfp_type(void *hwdev, u8 *sfp_type, u8 *sfp_type_ext); int spnic_get_sfp_eeprom(void *hwdev, u8 *data, u32 len);
-int spnic_set_nic_feature(void *hwdev, u64 *s_feature, u16 size); +int spnic_set_nic_feature_to_hw(void *hwdeve); +void spnic_update_nic_feature(void *hwdev, u64 feature);
#endif diff --git a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_dev.h b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_dev.h index 37068f1b48f2..8a0708fda19a 100644 --- a/drivers/net/ethernet/ramaxel/spnic/spnic_nic_dev.h +++ b/drivers/net/ethernet/ramaxel/spnic/spnic_nic_dev.h @@ -54,6 +54,8 @@ enum spnic_flags { #define VID_LINE(nic_dev, vid) ((vid) / VLAN_BITMAP_BITS_SIZE(nic_dev)) #define VID_COL(nic_dev, vid) ((vid) & (VLAN_BITMAP_BITS_SIZE(nic_dev) - 1))
+#define SPNIC_DRV_FEATURE NIC_F_ALL_MASK + enum spnic_event_work_flags { EVENT_WORK_TX_TIMEOUT, };
Ramaxel inclusion category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I4OENF CVE: NA
Rearragne the order and add some flag bits for future use.
Signed-off-by: Yanling Song songyl@ramaxel.com Reviewed-by: Yang Gan yanggan@ramaxel.com --- .../net/ethernet/ramaxel/spnic/hw/sphw_hw.h | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hw.h b/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hw.h index 2fc99c5f6096..74607ff24f09 100644 --- a/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hw.h +++ b/drivers/net/ethernet/ramaxel/spnic/hw/sphw_hw.h @@ -605,28 +605,24 @@ void sphw_event_callback(void *hwdev, struct sphw_event_info *event); void sphw_link_event_stats(void *dev, u8 link);
enum func_reset_flag { - RES_TYPE_COMM = 0, - RES_TYPE_NIC = 1, - RES_TYPE_OVS = 2, - RES_TYPE_VBS = 3, - RES_TYPE_ROCE = 4, - RES_TYPE_FC = 5, - RES_TYPE_TOE = 6, - - RES_TYPE_FLUSH_BIT = 7, + RES_TYPE_FLUSH_BIT = 0, RES_TYPE_MQM, RES_TYPE_SMF, - RES_TYPE_CMDQ_ROOTCTX, - RES_TYPE_SQ_CI_TABLE, - RES_TYPE_PF_BW_CFG, - RES_TYPE_CEQ, - RES_TYPE_MBOX, - RES_TYPE_AEQ, + + RES_TYPE_COMM = 10, + RES_TYPE_COMM_MGMT_CH, + RES_TYPE_COMM_CMD_CH, + RES_TYPE_NIC, + RES_TYPE_OVS, + RES_TYPE_VBS, + RES_TYPE_ROCE, + RES_TYPE_FC, + RES_TYPE_TOE, RES_TYPE_IPSEC, };
#define SPHW_COMM_RES (BIT(RES_TYPE_COMM) | BIT(RES_TYPE_FLUSH_BIT) | BIT(RES_TYPE_MQM) | \ - BIT(RES_TYPE_SMF) | BIT(RES_TYPE_CMDQ_ROOTCTX)) + BIT(RES_TYPE_SMF) | BIT(RES_TYPE_COMM_CMD_CH))
#define SPHW_NIC_RES BIT(RES_TYPE_NIC) #define SPHW_FC_RES BIT(RES_TYPE_FC)