|
@@ -15,7 +15,6 @@ struct cfpktq;
|
|
|
struct caif_payload_info;
|
|
|
struct caif_packet_funcs;
|
|
|
|
|
|
-
|
|
|
#define CAIF_LAYER_NAME_SZ 16
|
|
|
|
|
|
/**
|
|
@@ -33,7 +32,6 @@ do { \
|
|
|
} \
|
|
|
} while (0)
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* enum caif_ctrlcmd - CAIF Stack Control Signaling sent in layer.ctrlcmd().
|
|
|
*
|
|
@@ -141,7 +139,7 @@ enum caif_direction {
|
|
|
* - All layers must use this structure. If embedding it, then place this
|
|
|
* structure first in the layer specific structure.
|
|
|
*
|
|
|
- * - Each layer should not depend on any others layer private data.
|
|
|
+ * - Each layer should not depend on any others layer's private data.
|
|
|
*
|
|
|
* - In order to send data upwards do
|
|
|
* layer->up->receive(layer->up, packet);
|
|
@@ -155,16 +153,23 @@ struct cflayer {
|
|
|
struct list_head node;
|
|
|
|
|
|
/*
|
|
|
- * receive() - Receive Function.
|
|
|
+ * receive() - Receive Function (non-blocking).
|
|
|
* Contract: Each layer must implement a receive function passing the
|
|
|
* CAIF packets upwards in the stack.
|
|
|
* Packet handling rules:
|
|
|
- * - The CAIF packet (cfpkt) cannot be accessed after
|
|
|
- * passing it to the next layer using up->receive().
|
|
|
+ * - The CAIF packet (cfpkt) ownership is passed to the
|
|
|
+ * called receive function. This means that the the
|
|
|
+ * packet cannot be accessed after passing it to the
|
|
|
+ * above layer using up->receive().
|
|
|
+ *
|
|
|
* - If parsing of the packet fails, the packet must be
|
|
|
- * destroyed and -1 returned from the function.
|
|
|
+ * destroyed and negative error code returned
|
|
|
+ * from the function.
|
|
|
+ * EXCEPTION: If the framing layer (cffrml) returns
|
|
|
+ * -EILSEQ, the packet is not freed.
|
|
|
+ *
|
|
|
* - If parsing succeeds (and above layers return OK) then
|
|
|
- * the function must return a value > 0.
|
|
|
+ * the function must return a value >= 0.
|
|
|
*
|
|
|
* Returns result < 0 indicates an error, 0 or positive value
|
|
|
* indicates success.
|
|
@@ -176,7 +181,7 @@ struct cflayer {
|
|
|
int (*receive)(struct cflayer *layr, struct cfpkt *cfpkt);
|
|
|
|
|
|
/*
|
|
|
- * transmit() - Transmit Function.
|
|
|
+ * transmit() - Transmit Function (non-blocking).
|
|
|
* Contract: Each layer must implement a transmit function passing the
|
|
|
* CAIF packet downwards in the stack.
|
|
|
* Packet handling rules:
|
|
@@ -185,15 +190,16 @@ struct cflayer {
|
|
|
* cannot be accessed after passing it to the below
|
|
|
* layer using dn->transmit().
|
|
|
*
|
|
|
- * - If transmit fails, however, the ownership is returned
|
|
|
- * to thecaller. The caller of "dn->transmit()" must
|
|
|
- * destroy or resend packet.
|
|
|
+ * - Upon error the packet ownership is still passed on,
|
|
|
+ * so the packet shall be freed where error is detected.
|
|
|
+ * Callers of the transmit function shall not free packets,
|
|
|
+ * but errors shall be returned.
|
|
|
*
|
|
|
* - Return value less than zero means error, zero or
|
|
|
* greater than zero means OK.
|
|
|
*
|
|
|
- * result < 0 indicates an error, 0 or positive value
|
|
|
- * indicate success.
|
|
|
+ * Returns result < 0 indicates an error, 0 or positive value
|
|
|
+ * indicates success.
|
|
|
*
|
|
|
* @layr: Pointer to the current layer the receive function
|
|
|
* isimplemented for (this pointer).
|
|
@@ -202,7 +208,7 @@ struct cflayer {
|
|
|
int (*transmit) (struct cflayer *layr, struct cfpkt *cfpkt);
|
|
|
|
|
|
/*
|
|
|
- * cttrlcmd() - Control Function upwards in CAIF Stack.
|
|
|
+ * cttrlcmd() - Control Function upwards in CAIF Stack (non-blocking).
|
|
|
* Used for signaling responses (CAIF_CTRLCMD_*_RSP)
|
|
|
* and asynchronous events from the modem (CAIF_CTRLCMD_*_IND)
|
|
|
*
|