diff --git a/src/mme/mme_context.c b/src/mme/mme_context.c index a3c9fbc2b9..dc9459a4f9 100644 --- a/src/mme/mme_context.c +++ b/src/mme/mme_context.c @@ -1425,6 +1425,7 @@ mme_bearer_t *mme_sess_add(mme_ue_t *mme_ue, c_uint8_t pti) list_append(&mme_ue->sess_list, sess); sess->mme_ue = mme_ue; + sess->sgw = mme_sgw_first(); bearer = mme_bearer_add(sess, pti); d_assert(bearer, mme_sess_remove(sess); return NULL, diff --git a/src/mme/mme_s11_handler.c b/src/mme/mme_s11_handler.c index 4bac982a9c..a32fe95291 100644 --- a/src/mme/mme_s11_handler.c +++ b/src/mme/mme_s11_handler.c @@ -18,9 +18,11 @@ void mme_s11_handle_create_session_request(mme_sess_t *sess) status_t rv; pkbuf_t *pkbuf = NULL; - /* FIXME : SGW Selection */ + /* Use round-robin for selecting SGW */ d_assert(sess, return, "Null param"); - sess->sgw = mme_sgw_first(); + d_assert(sess->sgw, return, "Null param"); + sess->sgw = mme_sgw_next(sess->sgw); + if (!sess->sgw) sess->sgw = mme_sgw_first(); rv = mme_s11_build_create_session_request(&pkbuf, sess); d_assert(rv == CORE_OK, return,