2019-05-31 01:09:57 -07:00
/* SPDX-License-Identifier: GPL-2.0-only */
2012-09-13 17:10:00 +02:00
/*
* Link Layer Control manager
*
* Copyright ( C ) 2012 Intel Corporation . All rights reserved .
*/
# ifndef __LOCAL_LLC_H_
# define __LOCAL_LLC_H_
# include <net/nfc/hci.h>
# include <net/nfc/llc.h>
# include <linux/skbuff.h>
struct nfc_llc_ops {
void * ( * init ) ( struct nfc_hci_dev * hdev , xmit_to_drv_t xmit_to_drv ,
rcv_to_hci_t rcv_to_hci , int tx_headroom ,
int tx_tailroom , int * rx_headroom , int * rx_tailroom ,
llc_failure_t llc_failure ) ;
void ( * deinit ) ( struct nfc_llc * llc ) ;
int ( * start ) ( struct nfc_llc * llc ) ;
int ( * stop ) ( struct nfc_llc * llc ) ;
void ( * rcv_from_drv ) ( struct nfc_llc * llc , struct sk_buff * skb ) ;
int ( * xmit_from_hci ) ( struct nfc_llc * llc , struct sk_buff * skb ) ;
} ;
struct nfc_llc_engine {
const char * name ;
2021-07-24 23:49:27 +02:00
const struct nfc_llc_ops * ops ;
2012-09-13 17:10:00 +02:00
struct list_head entry ;
} ;
struct nfc_llc {
void * data ;
2021-07-24 23:49:27 +02:00
const struct nfc_llc_ops * ops ;
2012-09-13 17:10:00 +02:00
int rx_headroom ;
int rx_tailroom ;
} ;
void * nfc_llc_get_data ( struct nfc_llc * llc ) ;
2021-07-24 23:49:27 +02:00
int nfc_llc_register ( const char * name , const struct nfc_llc_ops * ops ) ;
2012-09-13 17:10:00 +02:00
void nfc_llc_unregister ( const char * name ) ;
2012-09-13 17:10:48 +02:00
int nfc_llc_nop_register ( void ) ;
2012-09-26 13:30:16 -04:00
# if defined(CONFIG_NFC_SHDLC)
2012-09-13 17:11:37 +02:00
int nfc_llc_shdlc_register ( void ) ;
2012-09-26 13:30:16 -04:00
# else
static inline int nfc_llc_shdlc_register ( void )
{
return 0 ;
}
# endif
2012-09-13 17:10:48 +02:00
2012-09-13 17:10:00 +02:00
# endif /* __LOCAL_LLC_H_ */