hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/net/core/hwbm.c
....@@ -1,13 +1,9 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /* Support for hardware buffer manager.
23 *
34 * Copyright (C) 2016 Marvell
45 *
56 * Gregory CLEMENT <gregory.clement@free-electrons.com>
6
- *
7
- * This program is free software; you can redistribute it and/or modify
8
- * it under the terms of the GNU General Public License as published by
9
- * the Free Software Foundation; either version 2 of the License, or
10
- * (at your option) any later version.
117 */
128 #include <linux/kernel.h>
139 #include <linux/printk.h>
....@@ -47,34 +43,33 @@
4743 }
4844 EXPORT_SYMBOL_GPL(hwbm_pool_refill);
4945
50
-int hwbm_pool_add(struct hwbm_pool *bm_pool, unsigned int buf_num, gfp_t gfp)
46
+int hwbm_pool_add(struct hwbm_pool *bm_pool, unsigned int buf_num)
5147 {
5248 int err, i;
53
- unsigned long flags;
5449
55
- spin_lock_irqsave(&bm_pool->lock, flags);
50
+ mutex_lock(&bm_pool->buf_lock);
5651 if (bm_pool->buf_num == bm_pool->size) {
5752 pr_warn("pool already filled\n");
58
- spin_unlock_irqrestore(&bm_pool->lock, flags);
53
+ mutex_unlock(&bm_pool->buf_lock);
5954 return bm_pool->buf_num;
6055 }
6156
6257 if (buf_num + bm_pool->buf_num > bm_pool->size) {
6358 pr_warn("cannot allocate %d buffers for pool\n",
6459 buf_num);
65
- spin_unlock_irqrestore(&bm_pool->lock, flags);
60
+ mutex_unlock(&bm_pool->buf_lock);
6661 return 0;
6762 }
6863
6964 if ((buf_num + bm_pool->buf_num) < bm_pool->buf_num) {
7065 pr_warn("Adding %d buffers to the %d current buffers will overflow\n",
7166 buf_num, bm_pool->buf_num);
72
- spin_unlock_irqrestore(&bm_pool->lock, flags);
67
+ mutex_unlock(&bm_pool->buf_lock);
7368 return 0;
7469 }
7570
7671 for (i = 0; i < buf_num; i++) {
77
- err = hwbm_pool_refill(bm_pool, gfp);
72
+ err = hwbm_pool_refill(bm_pool, GFP_KERNEL);
7873 if (err < 0)
7974 break;
8075 }
....@@ -83,7 +78,7 @@
8378 bm_pool->buf_num += i;
8479
8580 pr_debug("hwpm pool: %d of %d buffers added\n", i, buf_num);
86
- spin_unlock_irqrestore(&bm_pool->lock, flags);
81
+ mutex_unlock(&bm_pool->buf_lock);
8782
8883 return i;
8984 }