Commit | Line | Data |
---|---|---|
4fa9c49f | 1 | // SPDX-License-Identifier: GPL-2.0-only |
a7975a2f RL |
2 | /* |
3 | * Copyright (C) 2017 Chelsio Communications. All rights reserved. | |
a7975a2f RL |
4 | */ |
5 | ||
6 | #include "cxgb4.h" | |
7 | #include "cudbg_if.h" | |
8 | #include "cudbg_lib_common.h" | |
9 | ||
56cf2635 RL |
10 | int cudbg_get_buff(struct cudbg_init *pdbg_init, |
11 | struct cudbg_buffer *pdbg_buff, u32 size, | |
a7975a2f RL |
12 | struct cudbg_buffer *pin_buff) |
13 | { | |
14 | u32 offset; | |
15 | ||
16 | offset = pdbg_buff->offset; | |
17 | if (offset + size > pdbg_buff->size) | |
18 | return CUDBG_STATUS_NO_MEM; | |
19 | ||
56cf2635 RL |
20 | if (pdbg_init->compress_type != CUDBG_COMPRESSION_NONE) { |
21 | if (size > pdbg_init->compress_buff_size) | |
22 | return CUDBG_STATUS_NO_MEM; | |
23 | ||
24 | pin_buff->data = (char *)pdbg_init->compress_buff; | |
25 | pin_buff->offset = 0; | |
26 | pin_buff->size = size; | |
27 | return 0; | |
28 | } | |
29 | ||
a7975a2f RL |
30 | pin_buff->data = (char *)pdbg_buff->data + offset; |
31 | pin_buff->offset = offset; | |
32 | pin_buff->size = size; | |
a7975a2f RL |
33 | return 0; |
34 | } | |
35 | ||
56cf2635 RL |
36 | void cudbg_put_buff(struct cudbg_init *pdbg_init, |
37 | struct cudbg_buffer *pin_buff) | |
a7975a2f | 38 | { |
56cf2635 RL |
39 | /* Clear compression buffer for re-use */ |
40 | if (pdbg_init->compress_type != CUDBG_COMPRESSION_NONE) | |
41 | memset(pdbg_init->compress_buff, 0, | |
42 | pdbg_init->compress_buff_size); | |
43 | ||
a7975a2f RL |
44 | pin_buff->data = NULL; |
45 | pin_buff->offset = 0; | |
46 | pin_buff->size = 0; | |
47 | } | |
48 | ||
49 | void cudbg_update_buff(struct cudbg_buffer *pin_buff, | |
50 | struct cudbg_buffer *pout_buff) | |
51 | { | |
52 | /* We already write to buffer provided by ethool, so just | |
53 | * increment offset to next free space. | |
54 | */ | |
55 | pout_buff->offset += pin_buff->size; | |
56 | } |