Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
net
nfc
hci
llc_nop.c
Go to the documentation of this file.
1
/*
2
* nop (passthrough) Link Layer Control
3
*
4
* Copyright (C) 2012 Intel Corporation. All rights reserved.
5
*
6
* This program is free software; you can redistribute it and/or modify it
7
* under the terms and conditions of the GNU General Public License,
8
* version 2, as published by the Free Software Foundation.
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the
17
* Free Software Foundation, Inc.,
18
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
*/
20
21
#include <linux/types.h>
22
23
#include "
llc.h
"
24
25
struct
llc_nop
{
26
struct
nfc_hci_dev
*
hdev
;
27
xmit_to_drv_t
xmit_to_drv
;
28
rcv_to_hci_t
rcv_to_hci
;
29
int
tx_headroom
;
30
int
tx_tailroom
;
31
llc_failure_t
llc_failure
;
32
};
33
34
static
void
*llc_nop_init(
struct
nfc_hci_dev
*hdev,
xmit_to_drv_t
xmit_to_drv,
35
rcv_to_hci_t
rcv_to_hci,
int
tx_headroom,
36
int
tx_tailroom,
int
*rx_headroom,
int
*rx_tailroom,
37
llc_failure_t
llc_failure)
38
{
39
struct
llc_nop
*
llc_nop
;
40
41
*rx_headroom = 0;
42
*rx_tailroom = 0;
43
44
llc_nop = kzalloc(
sizeof
(
struct
llc_nop),
GFP_KERNEL
);
45
if
(llc_nop ==
NULL
)
46
return
NULL
;
47
48
llc_nop->
hdev
=
hdev
;
49
llc_nop->
xmit_to_drv
=
xmit_to_drv
;
50
llc_nop->
rcv_to_hci
=
rcv_to_hci
;
51
llc_nop->
tx_headroom
=
tx_headroom
;
52
llc_nop->
tx_tailroom
=
tx_tailroom
;
53
llc_nop->
llc_failure
=
llc_failure
;
54
55
return
llc_nop;
56
}
57
58
static
void
llc_nop_deinit(
struct
nfc_llc
*llc)
59
{
60
kfree
(
nfc_llc_get_data
(llc));
61
}
62
63
static
int
llc_nop_start(
struct
nfc_llc
*llc)
64
{
65
return
0;
66
}
67
68
static
int
llc_nop_stop(
struct
nfc_llc
*llc)
69
{
70
return
0;
71
}
72
73
static
void
llc_nop_rcv_from_drv(
struct
nfc_llc
*llc,
struct
sk_buff
*
skb
)
74
{
75
struct
llc_nop
*
llc_nop
=
nfc_llc_get_data
(llc);
76
77
llc_nop->
rcv_to_hci
(llc_nop->
hdev
, skb);
78
}
79
80
static
int
llc_nop_xmit_from_hci(
struct
nfc_llc
*llc,
struct
sk_buff
*skb)
81
{
82
struct
llc_nop *llc_nop =
nfc_llc_get_data
(llc);
83
84
return
llc_nop->
xmit_to_drv
(llc_nop->
hdev
, skb);
85
}
86
87
static
struct
nfc_llc_ops
llc_nop_ops = {
88
.init = llc_nop_init,
89
.deinit = llc_nop_deinit,
90
.start = llc_nop_start,
91
.stop = llc_nop_stop,
92
.rcv_from_drv = llc_nop_rcv_from_drv,
93
.xmit_from_hci = llc_nop_xmit_from_hci,
94
};
95
96
int
nfc_llc_nop_register
(
void
)
97
{
98
return
nfc_llc_register
(
LLC_NOP_NAME
, &llc_nop_ops);
99
}
Generated on Thu Jan 10 2013 15:01:10 for Linux Kernel by
1.8.2