]>
Commit | Line | Data |
---|---|---|
af873fce | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
09009f30 SB |
2 | /* |
3 | * Copyright (C) ST-Ericsson AB 2010 | |
26ee65e6 | 4 | * Author: Sjur Brendeland |
09009f30 SB |
5 | */ |
6 | ||
7 | #ifndef CFCNFG_H_ | |
8 | #define CFCNFG_H_ | |
9 | #include <linux/spinlock.h> | |
2aa40aef | 10 | #include <linux/netdevice.h> |
09009f30 SB |
11 | #include <net/caif/caif_layer.h> |
12 | #include <net/caif/cfctrl.h> | |
13 | ||
14 | struct cfcnfg; | |
15 | ||
09009f30 SB |
16 | /** |
17 | * enum cfcnfg_phy_preference - Physical preference HW Abstraction | |
18 | * | |
19 | * @CFPHYPREF_UNSPECIFIED: Default physical interface | |
20 | * | |
21 | * @CFPHYPREF_LOW_LAT: Default physical interface for low-latency | |
22 | * traffic | |
23 | * @CFPHYPREF_HIGH_BW: Default physical interface for high-bandwidth | |
24 | * traffic | |
25 | * @CFPHYPREF_LOOP: TEST only Loopback interface simulating modem | |
26 | * responses. | |
27 | * | |
28 | */ | |
29 | enum cfcnfg_phy_preference { | |
30 | CFPHYPREF_UNSPECIFIED, | |
31 | CFPHYPREF_LOW_LAT, | |
32 | CFPHYPREF_HIGH_BW, | |
33 | CFPHYPREF_LOOP | |
34 | }; | |
35 | ||
bee925db | 36 | /** |
37 | * cfcnfg_create() - Get the CAIF configuration object given network. | |
38 | * @net: Network for the CAIF configuration object. | |
39 | */ | |
40 | struct cfcnfg *get_cfcnfg(struct net *net); | |
41 | ||
09009f30 SB |
42 | /** |
43 | * cfcnfg_create() - Create the CAIF configuration object. | |
44 | */ | |
45 | struct cfcnfg *cfcnfg_create(void); | |
46 | ||
47 | /** | |
48 | * cfcnfg_remove() - Remove the CFCNFG object | |
49 | * @cfg: config object | |
50 | */ | |
51 | void cfcnfg_remove(struct cfcnfg *cfg); | |
52 | ||
53 | /** | |
54 | * cfcnfg_add_phy_layer() - Adds a physical layer to the CAIF stack. | |
55 | * @cnfg: Pointer to a CAIF configuration object, created by | |
56 | * cfcnfg_create(). | |
09009f30 SB |
57 | * @dev: Pointer to link layer device |
58 | * @phy_layer: Specify the physical layer. The transmit function | |
59 | * MUST be set in the structure. | |
09009f30 | 60 | * @pref: The phy (link layer) preference. |
7c18d220 | 61 | * @link_support: Protocol implementation for link layer specific protocol. |
09009f30 | 62 | * @fcs: Specify if checksum is used in CAIF Framing Layer. |
7c18d220 | 63 | * @head_room: Head space needed by link specific protocol. |
09009f30 | 64 | */ |
09009f30 | 65 | void |
7c18d220 | 66 | cfcnfg_add_phy_layer(struct cfcnfg *cnfg, |
2aa40aef | 67 | struct net_device *dev, struct cflayer *phy_layer, |
bee925db | 68 | enum cfcnfg_phy_preference pref, |
7c18d220 | 69 | struct cflayer *link_support, |
70 | bool fcs, int head_room); | |
09009f30 SB |
71 | |
72 | /** | |
73 | * cfcnfg_del_phy_layer - Deletes an phy layer from the CAIF stack. | |
74 | * | |
75 | * @cnfg: Pointer to a CAIF configuration object, created by | |
76 | * cfcnfg_create(). | |
77 | * @phy_layer: Adaptation layer to be removed. | |
78 | */ | |
79 | int cfcnfg_del_phy_layer(struct cfcnfg *cnfg, struct cflayer *phy_layer); | |
80 | ||
bd30ce4b | 81 | /** |
82 | * cfcnfg_set_phy_state() - Set the state of the physical interface device. | |
83 | * @cnfg: Configuration object | |
84 | * @phy_layer: Physical Layer representation | |
85 | * @up: State of device | |
86 | */ | |
87 | int cfcnfg_set_phy_state(struct cfcnfg *cnfg, struct cflayer *phy_layer, | |
88 | bool up); | |
89 | ||
09009f30 | 90 | #endif /* CFCNFG_H_ */ |