X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnx2x%2Fecore_sp.c;h=b9bca9115e600678b118246dc745621fed273001;hb=e484e40323327aa4c51f22d59a38bde40327743d;hp=6d2bb815c47d061ae259fcb9057c73e61f8af9ce;hpb=4dd60a7a935257f66e8a29cf11e7ca404041c013;p=dpdk.git diff --git a/drivers/net/bnx2x/ecore_sp.c b/drivers/net/bnx2x/ecore_sp.c index 6d2bb815c4..b9bca9115e 100644 --- a/drivers/net/bnx2x/ecore_sp.c +++ b/drivers/net/bnx2x/ecore_sp.c @@ -294,22 +294,26 @@ static int ecore_state_wait(struct bnx2x_softc *sc, int state, ECORE_MIGHT_SLEEP(); while (cnt--) { - bnx2x_intr_legacy(sc, 1); + bnx2x_intr_legacy(sc); if (!ECORE_TEST_BIT(state, pstate)) { #ifdef ECORE_STOP_ON_ERROR ECORE_MSG(sc, "exit (cnt %d)", 5000 - cnt); #endif + rte_atomic32_set(&sc->scan_fp, 0); return ECORE_SUCCESS; } ECORE_WAIT(sc, delay_us); - if (sc->panic) + if (sc->panic) { + rte_atomic32_set(&sc->scan_fp, 0); return ECORE_IO; + } } /* timeout! */ PMD_DRV_LOG(ERR, sc, "timeout waiting for state %d", state); + rte_atomic32_set(&sc->scan_fp, 0); #ifdef ECORE_STOP_ON_ERROR ecore_panic(); #endif @@ -497,7 +501,7 @@ static int __ecore_vlan_mac_h_read_lock(struct bnx2x_softc *sc __rte_unused, * * @details May sleep. Claims and releases execution queue lock during its run. */ -static int ecore_vlan_mac_h_read_lock(struct bnx2x_softc *sc, +int ecore_vlan_mac_h_read_lock(struct bnx2x_softc *sc, struct ecore_vlan_mac_obj *o) { int rc; @@ -708,7 +712,7 @@ static uint8_t ecore_vlan_mac_get_rx_tx_flag(struct ecore_vlan_mac_obj return rx_tx_flag; } -static void ecore_set_mac_in_nig(struct bnx2x_softc *sc, +void ecore_set_mac_in_nig(struct bnx2x_softc *sc, int add, unsigned char *dev_addr, int index) { uint32_t wb_data[2]; @@ -2760,12 +2764,16 @@ static int ecore_mcast_validate_e2(__rte_unused struct bnx2x_softc *sc, static void ecore_mcast_revert_e2(__rte_unused struct bnx2x_softc *sc, struct ecore_mcast_ramrod_params *p, - int old_num_bins) + int old_num_bins, + enum ecore_mcast_cmd cmd) { struct ecore_mcast_obj *o = p->mcast_obj; o->set_registry_size(o, old_num_bins); o->total_pending_num -= p->mcast_list_len; + + if (cmd == ECORE_MCAST_CMD_SET) + o->total_pending_num -= o->max_cmd_len; } /** @@ -2911,7 +2919,8 @@ static int ecore_mcast_validate_e1h(__rte_unused struct bnx2x_softc *sc, static void ecore_mcast_revert_e1h(__rte_unused struct bnx2x_softc *sc, __rte_unused struct ecore_mcast_ramrod_params - *p, __rte_unused int old_num_bins) + *p, __rte_unused int old_num_bins, + __rte_unused enum ecore_mcast_cmd cmd) { /* Do nothing */ } @@ -3089,7 +3098,7 @@ error_exit2: r->clear_pending(r); error_exit1: - o->revert(sc, p, old_reg_size); + o->revert(sc, p, old_reg_size, cmd); return rc; } @@ -3346,7 +3355,7 @@ static int ecore_credit_pool_get_entry_always_TRUE(__rte_unused struct * If credit is negative pool operations will always succeed (unlimited pool). * */ -static void ecore_init_credit_pool(struct ecore_credit_pool_obj *p, +void ecore_init_credit_pool(struct ecore_credit_pool_obj *p, int base, int credit) { /* Zero the object first */ @@ -3520,13 +3529,6 @@ static int ecore_setup_rss(struct bnx2x_softc *sc, data->capabilities |= ETH_RSS_UPDATE_RAMROD_DATA_IPV6_UDP_CAPABILITY; - if (ECORE_TEST_BIT(ECORE_RSS_TUNNELING, &p->rss_flags)) { - data->udp_4tuple_dst_port_mask = - ECORE_CPU_TO_LE16(p->tunnel_mask); - data->udp_4tuple_dst_port_value = - ECORE_CPU_TO_LE16(p->tunnel_value); - } - /* Hashing mask */ data->rss_result_mask = p->rss_result_mask; @@ -3591,11 +3593,13 @@ int ecore_config_rss(struct bnx2x_softc *sc, struct ecore_config_rss_params *p) return rc; } -void ecore_init_rss_config_obj(struct ecore_rss_config_obj *rss_obj, +void ecore_init_rss_config_obj(struct bnx2x_softc *sc __rte_unused, + struct ecore_rss_config_obj *rss_obj, uint8_t cl_id, uint32_t cid, uint8_t func_id, - uint8_t engine_id, void *rdata, - ecore_dma_addr_t rdata_mapping, int state, - unsigned long *pstate, ecore_obj_type type) + uint8_t engine_id, + void *rdata, ecore_dma_addr_t rdata_mapping, + int state, unsigned long *pstate, + ecore_obj_type type) { ecore_init_raw_obj(&rss_obj->raw, cl_id, cid, func_id, rdata, rdata_mapping, state, pstate, type); @@ -5084,8 +5088,6 @@ static int ecore_func_send_start(struct bnx2x_softc *sc, rdata->sd_vlan_tag = ECORE_CPU_TO_LE16(start_params->sd_vlan_tag); rdata->path_id = ECORE_PATH_ID(sc); rdata->network_cos_mode = start_params->network_cos_mode; - rdata->gre_tunnel_mode = start_params->gre_tunnel_mode; - rdata->gre_tunnel_rss = start_params->gre_tunnel_rss; /* * No need for an explicit memory barrier here as long we would @@ -5112,8 +5114,14 @@ static int ecore_func_send_switch_update(struct bnx2x_softc *sc, struct ecore_fu ECORE_MEMSET(rdata, 0, sizeof(*rdata)); /* Fill the ramrod data with provided parameters */ - rdata->tx_switch_suspend_change_flg = 1; - rdata->tx_switch_suspend = switch_update_params->suspend; + if (ECORE_TEST_BIT(ECORE_F_UPDATE_TX_SWITCH_SUSPEND_CHNG, + &switch_update_params->changes)) { + rdata->tx_switch_suspend_change_flg = 1; + rdata->tx_switch_suspend = + ECORE_TEST_BIT(ECORE_F_UPDATE_TX_SWITCH_SUSPEND, + &switch_update_params->changes); + } + rdata->echo = SWITCH_UPDATE; return ecore_sp_post(sc, RAMROD_CMD_ID_COMMON_FUNCTION_UPDATE, 0, @@ -5225,7 +5233,7 @@ static int ecore_func_send_tx_start(struct bnx2x_softc *sc, struct ecore_func_st rdata->dcb_enabled = tx_start_params->dcb_enabled; rdata->dcb_version = tx_start_params->dcb_version; - rdata->dont_add_pri_0 = tx_start_params->dont_add_pri_0; + rdata->dont_add_pri_0_en = tx_start_params->dont_add_pri_0_en; for (i = 0; i < ARRAY_SIZE(rdata->traffic_type_to_priority_cos); i++) rdata->traffic_type_to_priority_cos[i] =