This source file includes following definitions.
- rfcomm_dlc_hold
- rfcomm_dlc_put
- rfcomm_dlc_throttle
- rfcomm_dlc_unthrottle
- rfcomm_init_ttys
- rfcomm_cleanup_ttys
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 #include <linux/refcount.h>
  25 
  26 #ifndef __RFCOMM_H
  27 #define __RFCOMM_H
  28 
  29 #define RFCOMM_CONN_TIMEOUT (HZ * 30)
  30 #define RFCOMM_DISC_TIMEOUT (HZ * 20)
  31 #define RFCOMM_AUTH_TIMEOUT (HZ * 25)
  32 #define RFCOMM_IDLE_TIMEOUT (HZ * 2)
  33 
  34 #define RFCOMM_DEFAULT_MTU      127
  35 #define RFCOMM_DEFAULT_CREDITS  7
  36 
  37 #define RFCOMM_MAX_L2CAP_MTU    1013
  38 #define RFCOMM_MAX_CREDITS      40
  39 
  40 #define RFCOMM_SKB_HEAD_RESERVE 8
  41 #define RFCOMM_SKB_TAIL_RESERVE 2
  42 #define RFCOMM_SKB_RESERVE  (RFCOMM_SKB_HEAD_RESERVE + RFCOMM_SKB_TAIL_RESERVE)
  43 
  44 #define RFCOMM_SABM     0x2f
  45 #define RFCOMM_DISC     0x43
  46 #define RFCOMM_UA       0x63
  47 #define RFCOMM_DM       0x0f
  48 #define RFCOMM_UIH      0xef
  49 
  50 #define RFCOMM_TEST     0x08
  51 #define RFCOMM_FCON     0x28
  52 #define RFCOMM_FCOFF    0x18
  53 #define RFCOMM_MSC      0x38
  54 #define RFCOMM_RPN      0x24
  55 #define RFCOMM_RLS      0x14
  56 #define RFCOMM_PN       0x20
  57 #define RFCOMM_NSC      0x04
  58 
  59 #define RFCOMM_V24_FC   0x02
  60 #define RFCOMM_V24_RTC  0x04
  61 #define RFCOMM_V24_RTR  0x08
  62 #define RFCOMM_V24_IC   0x40
  63 #define RFCOMM_V24_DV   0x80
  64 
  65 #define RFCOMM_RPN_BR_2400      0x0
  66 #define RFCOMM_RPN_BR_4800      0x1
  67 #define RFCOMM_RPN_BR_7200      0x2
  68 #define RFCOMM_RPN_BR_9600      0x3
  69 #define RFCOMM_RPN_BR_19200     0x4
  70 #define RFCOMM_RPN_BR_38400     0x5
  71 #define RFCOMM_RPN_BR_57600     0x6
  72 #define RFCOMM_RPN_BR_115200    0x7
  73 #define RFCOMM_RPN_BR_230400    0x8
  74 
  75 #define RFCOMM_RPN_DATA_5       0x0
  76 #define RFCOMM_RPN_DATA_6       0x1
  77 #define RFCOMM_RPN_DATA_7       0x2
  78 #define RFCOMM_RPN_DATA_8       0x3
  79 
  80 #define RFCOMM_RPN_STOP_1       0
  81 #define RFCOMM_RPN_STOP_15      1
  82 
  83 #define RFCOMM_RPN_PARITY_NONE  0x0
  84 #define RFCOMM_RPN_PARITY_ODD   0x1
  85 #define RFCOMM_RPN_PARITY_EVEN  0x3
  86 #define RFCOMM_RPN_PARITY_MARK  0x5
  87 #define RFCOMM_RPN_PARITY_SPACE 0x7
  88 
  89 #define RFCOMM_RPN_FLOW_NONE    0x00
  90 
  91 #define RFCOMM_RPN_XON_CHAR     0x11
  92 #define RFCOMM_RPN_XOFF_CHAR    0x13
  93 
  94 #define RFCOMM_RPN_PM_BITRATE           0x0001
  95 #define RFCOMM_RPN_PM_DATA              0x0002
  96 #define RFCOMM_RPN_PM_STOP              0x0004
  97 #define RFCOMM_RPN_PM_PARITY            0x0008
  98 #define RFCOMM_RPN_PM_PARITY_TYPE       0x0010
  99 #define RFCOMM_RPN_PM_XON               0x0020
 100 #define RFCOMM_RPN_PM_XOFF              0x0040
 101 #define RFCOMM_RPN_PM_FLOW              0x3F00
 102 
 103 #define RFCOMM_RPN_PM_ALL               0x3F7F
 104 
 105 struct rfcomm_hdr {
 106         u8 addr;
 107         u8 ctrl;
 108         u8 len;    
 109 } __packed;
 110 
 111 struct rfcomm_cmd {
 112         u8 addr;
 113         u8 ctrl;
 114         u8 len;
 115         u8 fcs;
 116 } __packed;
 117 
 118 struct rfcomm_mcc {
 119         u8 type;
 120         u8 len;
 121 } __packed;
 122 
 123 struct rfcomm_pn {
 124         u8  dlci;
 125         u8  flow_ctrl;
 126         u8  priority;
 127         u8  ack_timer;
 128         __le16 mtu;
 129         u8  max_retrans;
 130         u8  credits;
 131 } __packed;
 132 
 133 struct rfcomm_rpn {
 134         u8  dlci;
 135         u8  bit_rate;
 136         u8  line_settings;
 137         u8  flow_ctrl;
 138         u8  xon_char;
 139         u8  xoff_char;
 140         __le16 param_mask;
 141 } __packed;
 142 
 143 struct rfcomm_rls {
 144         u8  dlci;
 145         u8  status;
 146 } __packed;
 147 
 148 struct rfcomm_msc {
 149         u8  dlci;
 150         u8  v24_sig;
 151 } __packed;
 152 
 153 
 154 
 155 struct rfcomm_session {
 156         struct list_head list;
 157         struct socket   *sock;
 158         struct timer_list timer;
 159         unsigned long    state;
 160         unsigned long    flags;
 161         int              initiator;
 162 
 163         
 164         int    cfc;
 165         uint   mtu;
 166 
 167         struct list_head dlcs;
 168 };
 169 
 170 struct rfcomm_dlc {
 171         struct list_head      list;
 172         struct rfcomm_session *session;
 173         struct sk_buff_head   tx_queue;
 174         struct timer_list     timer;
 175 
 176         struct mutex  lock;
 177         unsigned long state;
 178         unsigned long flags;
 179         refcount_t    refcnt;
 180         u8            dlci;
 181         u8            addr;
 182         u8            priority;
 183         u8            v24_sig;
 184         u8            remote_v24_sig;
 185         u8            mscex;
 186         u8            out;
 187         u8            sec_level;
 188         u8            role_switch;
 189         u32           defer_setup;
 190 
 191         uint          mtu;
 192         uint          cfc;
 193         uint          rx_credits;
 194         uint          tx_credits;
 195 
 196         void          *owner;
 197 
 198         void (*data_ready)(struct rfcomm_dlc *d, struct sk_buff *skb);
 199         void (*state_change)(struct rfcomm_dlc *d, int err);
 200         void (*modem_status)(struct rfcomm_dlc *d, u8 v24_sig);
 201 };
 202 
 203 
 204 #define RFCOMM_RX_THROTTLED 0
 205 #define RFCOMM_TX_THROTTLED 1
 206 #define RFCOMM_TIMED_OUT    2
 207 #define RFCOMM_MSC_PENDING  3
 208 #define RFCOMM_SEC_PENDING  4
 209 #define RFCOMM_AUTH_PENDING 5
 210 #define RFCOMM_AUTH_ACCEPT  6
 211 #define RFCOMM_AUTH_REJECT  7
 212 #define RFCOMM_DEFER_SETUP  8
 213 #define RFCOMM_ENC_DROP     9
 214 
 215 
 216 #define RFCOMM_SCHED_WAKEUP 31
 217 
 218 
 219 #define RFCOMM_MSCEX_TX     1
 220 #define RFCOMM_MSCEX_RX     2
 221 #define RFCOMM_MSCEX_OK     (RFCOMM_MSCEX_TX + RFCOMM_MSCEX_RX)
 222 
 223 
 224 #define RFCOMM_CFC_UNKNOWN  -1
 225 #define RFCOMM_CFC_DISABLED 0
 226 #define RFCOMM_CFC_ENABLED  RFCOMM_MAX_CREDITS
 227 
 228 
 229 int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci,
 230                         u8 bit_rate, u8 data_bits, u8 stop_bits,
 231                         u8 parity, u8 flow_ctrl_settings,
 232                         u8 xon_char, u8 xoff_char, u16 param_mask);
 233 
 234 
 235 struct rfcomm_dlc *rfcomm_dlc_alloc(gfp_t prio);
 236 void rfcomm_dlc_free(struct rfcomm_dlc *d);
 237 int  rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst,
 238                                                                 u8 channel);
 239 int  rfcomm_dlc_close(struct rfcomm_dlc *d, int reason);
 240 int  rfcomm_dlc_send(struct rfcomm_dlc *d, struct sk_buff *skb);
 241 void rfcomm_dlc_send_noerror(struct rfcomm_dlc *d, struct sk_buff *skb);
 242 int  rfcomm_dlc_set_modem_status(struct rfcomm_dlc *d, u8 v24_sig);
 243 int  rfcomm_dlc_get_modem_status(struct rfcomm_dlc *d, u8 *v24_sig);
 244 void rfcomm_dlc_accept(struct rfcomm_dlc *d);
 245 struct rfcomm_dlc *rfcomm_dlc_exists(bdaddr_t *src, bdaddr_t *dst, u8 channel);
 246 
 247 #define rfcomm_dlc_lock(d)     mutex_lock(&d->lock)
 248 #define rfcomm_dlc_unlock(d)   mutex_unlock(&d->lock)
 249 
 250 static inline void rfcomm_dlc_hold(struct rfcomm_dlc *d)
 251 {
 252         refcount_inc(&d->refcnt);
 253 }
 254 
 255 static inline void rfcomm_dlc_put(struct rfcomm_dlc *d)
 256 {
 257         if (refcount_dec_and_test(&d->refcnt))
 258                 rfcomm_dlc_free(d);
 259 }
 260 
 261 void __rfcomm_dlc_throttle(struct rfcomm_dlc *d);
 262 void __rfcomm_dlc_unthrottle(struct rfcomm_dlc *d);
 263 
 264 static inline void rfcomm_dlc_throttle(struct rfcomm_dlc *d)
 265 {
 266         if (!test_and_set_bit(RFCOMM_RX_THROTTLED, &d->flags))
 267                 __rfcomm_dlc_throttle(d);
 268 }
 269 
 270 static inline void rfcomm_dlc_unthrottle(struct rfcomm_dlc *d)
 271 {
 272         if (test_and_clear_bit(RFCOMM_RX_THROTTLED, &d->flags))
 273                 __rfcomm_dlc_unthrottle(d);
 274 }
 275 
 276 
 277 void   rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src,
 278                                                                 bdaddr_t *dst);
 279 
 280 
 281 struct sockaddr_rc {
 282         sa_family_t     rc_family;
 283         bdaddr_t        rc_bdaddr;
 284         u8              rc_channel;
 285 };
 286 
 287 #define RFCOMM_CONNINFO 0x02
 288 struct rfcomm_conninfo {
 289         __u16 hci_handle;
 290         __u8  dev_class[3];
 291 };
 292 
 293 #define RFCOMM_LM       0x03
 294 #define RFCOMM_LM_MASTER        0x0001
 295 #define RFCOMM_LM_AUTH          0x0002
 296 #define RFCOMM_LM_ENCRYPT       0x0004
 297 #define RFCOMM_LM_TRUSTED       0x0008
 298 #define RFCOMM_LM_RELIABLE      0x0010
 299 #define RFCOMM_LM_SECURE        0x0020
 300 #define RFCOMM_LM_FIPS          0x0040
 301 
 302 #define rfcomm_pi(sk) ((struct rfcomm_pinfo *) sk)
 303 
 304 struct rfcomm_pinfo {
 305         struct bt_sock bt;
 306         bdaddr_t src;
 307         bdaddr_t dst;
 308         struct rfcomm_dlc   *dlc;
 309         u8     channel;
 310         u8     sec_level;
 311         u8     role_switch;
 312 };
 313 
 314 int  rfcomm_init_sockets(void);
 315 void rfcomm_cleanup_sockets(void);
 316 
 317 int  rfcomm_connect_ind(struct rfcomm_session *s, u8 channel,
 318                                                         struct rfcomm_dlc **d);
 319 
 320 
 321 #define RFCOMM_MAX_DEV  256
 322 
 323 #define RFCOMMCREATEDEV         _IOW('R', 200, int)
 324 #define RFCOMMRELEASEDEV        _IOW('R', 201, int)
 325 #define RFCOMMGETDEVLIST        _IOR('R', 210, int)
 326 #define RFCOMMGETDEVINFO        _IOR('R', 211, int)
 327 #define RFCOMMSTEALDLC          _IOW('R', 220, int)
 328 
 329 
 330 #define RFCOMM_REUSE_DLC      0
 331 #define RFCOMM_RELEASE_ONHUP  1
 332 #define RFCOMM_HANGUP_NOW     2
 333 #define RFCOMM_TTY_ATTACHED   3
 334 #define RFCOMM_DEFUNCT_BIT4   4   
 335 
 336 
 337 #define RFCOMM_DEV_RELEASED   0
 338 #define RFCOMM_TTY_OWNED      1
 339 
 340 struct rfcomm_dev_req {
 341         s16      dev_id;
 342         u32      flags;
 343         bdaddr_t src;
 344         bdaddr_t dst;
 345         u8       channel;
 346 };
 347 
 348 struct rfcomm_dev_info {
 349         s16      id;
 350         u32      flags;
 351         u16      state;
 352         bdaddr_t src;
 353         bdaddr_t dst;
 354         u8       channel;
 355 };
 356 
 357 struct rfcomm_dev_list_req {
 358         u16      dev_num;
 359         struct   rfcomm_dev_info dev_info[0];
 360 };
 361 
 362 int  rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, void __user *arg);
 363 
 364 #ifdef CONFIG_BT_RFCOMM_TTY
 365 int  rfcomm_init_ttys(void);
 366 void rfcomm_cleanup_ttys(void);
 367 #else
 368 static inline int rfcomm_init_ttys(void)
 369 {
 370         return 0;
 371 }
 372 static inline void rfcomm_cleanup_ttys(void)
 373 {
 374 }
 375 #endif
 376 #endif