浏览代码

rmnet_core: Rmnet_mem dlkm dependency

Incorporate rmnet_mem dlkm dependency into rmnet_core
page allocation static pool for UL agg.
Creates a new compile time and runtime  dependency on rmnet_mem.ko.

CRs-Fixed: 3566750
Change-Id: Id4a7d5cd2a187877e6e2c73098ac4b20f73f8c5b
Signed-off-by: Raul Martinez <[email protected]>
Raul Martinez 2 年之前
父节点
当前提交
4699ee5e86
共有 3 个文件被更改,包括 15 次插入3 次删除
  1. 1 0
      core/Kconfig
  2. 12 3
      core/rmnet_map_data.c
  3. 2 0
      define_modules.bzl

+ 1 - 0
core/Kconfig

@@ -4,6 +4,7 @@
 
 config RMNET_CORE
 	default m
+	depends on RMNET_MEM
 	select GRO_CELLS
 	help
 	  If you select this, you will enable the RMNET module which is used

+ 12 - 3
core/rmnet_map_data.c

@@ -23,6 +23,7 @@
 #include "rmnet_private.h"
 #include "rmnet_handlers.h"
 #include "rmnet_ll.h"
+#include "rmnet_mem.h"
 
 #define RMNET_MAP_PKT_COPY_THRESHOLD 64
 #define RMNET_MAP_DEAGGR_SPACING  64
@@ -1333,7 +1334,7 @@ static void rmnet_free_agg_pages(struct rmnet_aggregation_state *state)
 
 	list_for_each_entry_safe(agg_page, idx, &state->agg_list, list) {
 		list_del(&agg_page->list);
-		put_page(agg_page->page);
+		rmnet_mem_put_page_entry(agg_page->page);
 		kfree(agg_page);
 	}
 
@@ -1345,6 +1346,8 @@ static struct page *rmnet_get_agg_pages(struct rmnet_aggregation_state *state)
 	struct rmnet_agg_page *agg_page;
 	struct page *page = NULL;
 	int i = 0;
+	int rc;
+	int pageorder = 2;
 
 	if (!(state->params.agg_features & RMNET_PAGE_RECYCLE))
 		goto alloc;
@@ -1369,7 +1372,9 @@ static struct page *rmnet_get_agg_pages(struct rmnet_aggregation_state *state)
 
 alloc:
 	if (!page) {
-		page =  __dev_alloc_pages(GFP_ATOMIC, state->agg_size_order);
+		page = rmnet_mem_get_pages_entry(GFP_ATOMIC, state->agg_size_order, &rc,
+						 &pageorder, RMNET_CORE_ID);
+
 		state->stats->ul_agg_alloc++;
 	}
 
@@ -1381,12 +1386,16 @@ __rmnet_alloc_agg_pages(struct rmnet_aggregation_state *state)
 {
 	struct rmnet_agg_page *agg_page;
 	struct page *page;
+	int rc;
+	int pageorder = 2;
 
 	agg_page = kzalloc(sizeof(*agg_page), GFP_ATOMIC);
 	if (!agg_page)
 		return NULL;
 
-	page = __dev_alloc_pages(GFP_ATOMIC, state->agg_size_order);
+	page = rmnet_mem_get_pages_entry(GFP_ATOMIC, state->agg_size_order, &rc,
+					 &pageorder, RMNET_CORE_ID);
+
 	if (!page) {
 		kfree(agg_page);
 		return NULL;

+ 2 - 0
define_modules.bzl

@@ -61,8 +61,10 @@ def define_modules(target, variant):
             ":rmnet_core_headers",
             ":{}_rmnet_ctl".format(kernel_build_variant),
             "//vendor/qcom/opensource/dataipa:{}_ipam".format(kernel_build_variant),
+            "//vendor/qcom/opensource/datarmnet-ext/mem:{}_rmnet_mem".format(kernel_build_variant),
             "//msm-kernel:all_headers",
             "//vendor/qcom/opensource/dataipa:include_headers",
+            "//vendor/qcom/opensource/datarmnet-ext/mem:rmnet_mem_headers",
         ],
     )