aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid C Somayajulu <davidcs@FreeBSD.org>2015-06-16 21:11:32 +0000
committerDavid C Somayajulu <davidcs@FreeBSD.org>2015-06-16 21:11:32 +0000
commit9987f30536a086bfa46aa3cc6e41ed3151b8893f (patch)
tree7e608eb7d0a80dbbbb314baeaf34f499bdebcd17
parent0b5f5ef2cd0c853a18dad35b21a9ca2e3074c96b (diff)
Notes
-rw-r--r--sys/dev/bxe/bxe.c5
-rw-r--r--sys/dev/bxe/ecore_sp.c2
2 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/bxe/bxe.c b/sys/dev/bxe/bxe.c
index f274016c8630..2a2a81c30b9c 100644
--- a/sys/dev/bxe/bxe.c
+++ b/sys/dev/bxe/bxe.c
@@ -12525,6 +12525,7 @@ bxe_init_mcast_macs_list(struct bxe_softc *sc,
BLOGE(sc, "Failed to allocate temp mcast list\n");
return (-1);
}
+ bzero(mta, (sizeof(unsigned char) * ETHER_ADDR_LEN * mc_count));
mc_mac = malloc(sizeof(*mc_mac) * mc_count, M_DEVBUF,
(M_NOWAIT | M_ZERO));
@@ -12533,12 +12534,13 @@ bxe_init_mcast_macs_list(struct bxe_softc *sc,
BLOGE(sc, "Failed to allocate temp mcast list\n");
return (-1);
}
+ bzero(mc_mac, (sizeof(*mc_mac) * mc_count));
if_multiaddr_array(ifp, mta, &mcnt, mc_count); /* mta and mcnt not expected
to be different */
for(i=0; i< mcnt; i++) {
- bcopy((mta + (i * ETHER_ADDR_LEN)), mc_mac->mac, ETHER_ADDR_LEN);
+ mc_mac->mac = (uint8_t *)(mta + (i * ETHER_ADDR_LEN));
ECORE_LIST_PUSH_TAIL(&mc_mac->link, &p->mcast_list);
BLOGD(sc, DBG_LOAD,
@@ -12583,6 +12585,7 @@ bxe_set_mc_list(struct bxe_softc *sc)
rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL);
if (rc < 0) {
BLOGE(sc, "Failed to clear multicast configuration: %d\n", rc);
+ BXE_MCAST_UNLOCK(sc);
return (rc);
}
diff --git a/sys/dev/bxe/ecore_sp.c b/sys/dev/bxe/ecore_sp.c
index b716085222de..2685453a68c9 100644
--- a/sys/dev/bxe/ecore_sp.c
+++ b/sys/dev/bxe/ecore_sp.c
@@ -474,7 +474,7 @@ static void __ecore_vlan_mac_h_exec_pending(struct bxe_softc *sc,
o->head_exe_request = FALSE;
o->saved_ramrod_flags = 0;
rc = ecore_exe_queue_step(sc, &o->exe_queue, &ramrod_flags);
- if (rc != ECORE_SUCCESS) {
+ if ((rc != ECORE_SUCCESS) && (rc != ECORE_PENDING)) {
ECORE_ERR("execution of pending commands failed with rc %d\n",
rc);
#ifdef ECORE_STOP_ON_ERROR