linux/include/net/caif/cfcnfg.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) ST-Ericsson AB 2010
   3 * Author:      Sjur Brendeland
   4 * License terms: GNU General Public License (GPL) version 2
   5 */
   6
   7#ifndef CFCNFG_H_
   8#define CFCNFG_H_
   9#include <linux/spinlock.h>
  10#include <linux/netdevice.h>
  11#include <net/caif/caif_layer.h>
  12#include <net/caif/cfctrl.h>
  13
  14struct cfcnfg;
  15
  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 */
  29enum cfcnfg_phy_preference {
  30        CFPHYPREF_UNSPECIFIED,
  31        CFPHYPREF_LOW_LAT,
  32        CFPHYPREF_HIGH_BW,
  33        CFPHYPREF_LOOP
  34};
  35
  36/**
  37 * cfcnfg_create() - Get the CAIF configuration object given network.
  38 * @net:        Network for the CAIF configuration object.
  39 */
  40struct cfcnfg *get_cfcnfg(struct net *net);
  41
  42/**
  43 * cfcnfg_create() - Create the CAIF configuration object.
  44 */
  45struct cfcnfg *cfcnfg_create(void);
  46
  47/**
  48 * cfcnfg_remove() -  Remove the CFCNFG object
  49 * @cfg: config object
  50 */
  51void 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().
  57 * @dev:        Pointer to link layer device
  58 * @phy_layer:  Specify the physical layer. The transmit function
  59 *              MUST be set in the structure.
  60 * @pref:       The phy (link layer) preference.
  61 * @link_support: Protocol implementation for link layer specific protocol.
  62 * @fcs:        Specify if checksum is used in CAIF Framing Layer.
  63 * @head_room:  Head space needed by link specific protocol.
  64 */
  65void
  66cfcnfg_add_phy_layer(struct cfcnfg *cnfg,
  67                     struct net_device *dev, struct cflayer *phy_layer,
  68                     enum cfcnfg_phy_preference pref,
  69                     struct cflayer *link_support,
  70                     bool fcs, int head_room);
  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 */
  79int cfcnfg_del_phy_layer(struct cfcnfg *cnfg, struct cflayer *phy_layer);
  80
  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 */
  87int cfcnfg_set_phy_state(struct cfcnfg *cnfg, struct cflayer *phy_layer,
  88                                bool up);
  89
  90#endif                          /* CFCNFG_H_ */
  91