X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc.c;h=4245fb8779d102871c5dd0f6ab3cf0a9bfcf7317;hb=28944ac098aa;hp=8d18def2d14d874b73a958af8bfbcab09f469cd6;hpb=06bc197796e233bacb0d90cc8a56ebd4165077e3;p=dpdk.git diff --git a/drivers/net/sfc/sfc.c b/drivers/net/sfc/sfc.c index 8d18def2d1..4245fb8779 100644 --- a/drivers/net/sfc/sfc.c +++ b/drivers/net/sfc/sfc.c @@ -36,6 +36,8 @@ #include "sfc.h" #include "sfc_log.h" +#include "sfc_ev.h" +#include "sfc_rx.h" int @@ -261,10 +263,31 @@ sfc_start(struct sfc_adapter *sa) if (rc != 0) goto fail_intr_start; + rc = sfc_ev_start(sa); + if (rc != 0) + goto fail_ev_start; + + rc = sfc_port_start(sa); + if (rc != 0) + goto fail_port_start; + + rc = sfc_rx_start(sa); + if (rc != 0) + goto fail_rx_start; + sa->state = SFC_ADAPTER_STARTED; sfc_log_init(sa, "done"); return 0; +fail_rx_start: + sfc_port_stop(sa); + +fail_port_start: + sfc_ev_stop(sa); + +fail_ev_start: + sfc_intr_stop(sa); + fail_intr_start: efx_nic_fini(sa->nic); @@ -297,6 +320,9 @@ sfc_stop(struct sfc_adapter *sa) sa->state = SFC_ADAPTER_STOPPING; + sfc_rx_stop(sa); + sfc_port_stop(sa); + sfc_ev_stop(sa); sfc_intr_stop(sa); efx_nic_fini(sa->nic); @@ -324,10 +350,31 @@ sfc_configure(struct sfc_adapter *sa) if (rc != 0) goto fail_intr_init; + rc = sfc_ev_init(sa); + if (rc != 0) + goto fail_ev_init; + + rc = sfc_port_init(sa); + if (rc != 0) + goto fail_port_init; + + rc = sfc_rx_init(sa); + if (rc != 0) + goto fail_rx_init; + sa->state = SFC_ADAPTER_CONFIGURED; sfc_log_init(sa, "done"); return 0; +fail_rx_init: + sfc_port_fini(sa); + +fail_port_init: + sfc_ev_fini(sa); + +fail_ev_init: + sfc_intr_fini(sa); + fail_intr_init: fail_check_conf: sa->state = SFC_ADAPTER_INITIALIZED; @@ -345,6 +392,9 @@ sfc_close(struct sfc_adapter *sa) SFC_ASSERT(sa->state == SFC_ADAPTER_CONFIGURED); sa->state = SFC_ADAPTER_CLOSING; + sfc_rx_fini(sa); + sfc_port_fini(sa); + sfc_ev_fini(sa); sfc_intr_fini(sa); sa->state = SFC_ADAPTER_INITIALIZED;