| |
| /** |
| * @file IxAtmdAcc.h |
| * |
| * @date 07-Nov-2001 |
| * |
| * @brief IxAtmdAcc Public API |
| * |
| * This file contains the public API of IxAtmdAcc, related to the |
| * data functions of the component |
| * |
| * |
| * @par |
| * IXP400 SW Release version 2.0 |
| * |
| * -- Copyright Notice -- |
| * |
| * @par |
| * Copyright 2001-2005, Intel Corporation. |
| * All rights reserved. |
| * |
| * @par |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * 3. Neither the name of the Intel Corporation nor the names of its contributors |
| * may be used to endorse or promote products derived from this software |
| * without specific prior written permission. |
| * |
| * @par |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE |
| * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| * |
| * @par |
| * -- End of Copyright Notice -- |
| */ |
| |
| /* ------------------------------------------------------ |
| Doxygen group definitions |
| ------------------------------------------------------ */ |
| |
| /** |
| * |
| * @defgroup IxAtmdAccAPI IXP400 ATM Driver Access (IxAtmdAcc) API |
| * |
| * @brief The public API for the IXP400 Atm Driver Data component |
| * |
| * IxAtmdAcc is the low level interface by which AAL0/AAL5 and |
| * OAM data gets transmitted to,and received from the Utopia bus. |
| * |
| * For AAL0/AAL5 services transmit and receive connections may |
| * be established independantly for unique combinations of |
| * port,VPI,and VCI. |
| * |
| * Two AAL0 services supporting 48 or 52 byte cell data are provided. |
| * Submitted AAL0 PDUs must be a multiple of the cell data size (48/52). |
| * AAL0_52 is a raw cell service the client must format |
| * the PDU with an ATM cell header (excluding HEC) at the start of |
| * each cell, note that AtmdAcc does not validate the cell headers in |
| * a submitted PDU. |
| * |
| * OAM cells cannot be received over the AAL0 service but instead |
| * are received over a dedicated OAM service. |
| * |
| * For the OAM service an "OAM Tx channel" may be enabled for a port |
| * by establishing a single dedicated OAM Tx connection on that port. |
| * A single "OAM Rx channel" for all ports may be enabled by |
| * establishing a dedicated OAM Rx connection. |
| * |
| * The OAM service allows buffers containing 52 byte OAM F4/F5 cells |
| * to be transmitted and received over the dedicated OAM channels. |
| * HEC is appended/removed, and CRC-10 performed by the NPE. The OAM |
| * service offered by AtmdAcc is a raw cell transport service. |
| * It is assumed that ITU I.610 procedures that make use of this |
| * service are implemented above AtmdAcc. |
| * |
| * Note that the dedicated OAM connections are established on |
| * reserved VPI,VCI, and (in the case of Rx) port values defined below. |
| * These values are used purely to descriminate the dedicated OAM channels |
| * and do not identify a particular OAM F4/F5 flow. F4/F5 flows may be |
| * realised for particluar VPI/VCIs by manipulating the VPI,VCI |
| * fields of the ATM cell headers of cells in the buffers passed |
| * to AtmdAcc. Note that AtmdAcc does not validate the cell headers |
| * in a submitted OAM PDU. |
| * |
| * |
| * |
| * This part is related to the User datapath processing |
| * |
| * @{ |
| */ |
| |
| #ifndef IXATMDACC_H |
| #define IXATMDACC_H |
| |
| #include "IxAtmTypes.h" |
| |
| /* ------------------------------------------------------ |
| AtmdAcc Data Types definition |
| ------------------------------------------------------ */ |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @def IX_ATMDACC_WARNING |
| * |
| * @brief Warning return code |
| * |
| * This constant is used to tell IxAtmDAcc user about a special case. |
| * |
| */ |
| #define IX_ATMDACC_WARNING 2 |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @def IX_ATMDACC_BUSY |
| * |
| * @brief Busy return code |
| * |
| * This constant is used to tell IxAtmDAcc user that the request |
| * is correct, but cannot be processed because the IxAtmAcc resources |
| * are already used. The user has to retry its request later |
| * |
| */ |
| #define IX_ATMDACC_BUSY 3 |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @def IX_ATMDACC_RESOURCES_STILL_ALLOCATED |
| * |
| * @brief Disconnect return code |
| * |
| * This constant is used to tell IxAtmDAcc user that the disconnect |
| * functions are not complete because the resources used by the driver |
| * are not yet released. The user has to retry the disconnect call |
| * later. |
| * |
| */ |
| #define IX_ATMDACC_RESOURCES_STILL_ALLOCATED 4 |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @def IX_ATMDACC_DEFAULT_REPLENISH_COUNT |
| * |
| * @brief Default resources usage for RxVcFree replenish mechanism |
| * |
| * This constant is used to tell IxAtmDAcc to allocate and use |
| * the minimum of resources for rx free replenish. |
| * |
| * @sa ixAtmdAccRxVcConnect |
| */ |
| #define IX_ATMDACC_DEFAULT_REPLENISH_COUNT 0 |
| |
| |
| /** |
| * @ingroup IxAtmdAccAPI |
| * |
| * @def IX_ATMDACC_OAM_TX_VPI |
| * |
| * @brief The reserved value used for the dedicated OAM |
| * Tx connection. This "well known" value is used by atmdAcc and |
| * its clients to dsicriminate the OAM channel, and should be chosen so |
| * that it does not coencide with the VPI value used in an AAL0/AAL5 connection. |
| * Any attempt to connect a service type other than OAM on this VPI will fail. |
| * |
| * |
| */ |
| #define IX_ATMDACC_OAM_TX_VPI 0 |
| |
| /** |
| * @ingroup IxAtmdAccAPI |
| * |
| * @def IX_ATMDACC_OAM_TX_VCI |
| * |
| * @brief The reserved value used for the dedicated OAM |
| * Tx connection. This "well known" value is used by atmdAcc and |
| * its clients to dsicriminate the OAM channel, and should be chosen so |
| * that it does not coencide with the VCI value used in an AAL0/AAL5 connection. |
| * Any attempt to connect a service type other than OAM on this VCI will fail. |
| */ |
| #define IX_ATMDACC_OAM_TX_VCI 0 |
| |
| |
| /** |
| * @ingroup IxAtmdAccAPI |
| * |
| * @def IX_ATMDACC_OAM_RX_PORT |
| * |
| * @brief The reserved dummy PORT used for all dedicated OAM |
| * Rx connections. Note that this is not a real port but must |
| * have a value that lies within the valid range of port values. |
| */ |
| #define IX_ATMDACC_OAM_RX_PORT IX_UTOPIA_PORT_0 |
| |
| /** |
| * @ingroup IxAtmdAccAPI |
| * |
| * @def IX_ATMDACC_OAM_RX_VPI |
| * |
| * @brief The reserved value value used for the dedicated OAM |
| * Rx connection. This value should be chosen so that it does not |
| * coencide with the VPI value used in an AAL0/AAL5 connection. |
| * Any attempt to connect a service type other than OAM on this VPI will fail. |
| */ |
| #define IX_ATMDACC_OAM_RX_VPI 0 |
| |
| /** |
| * @ingroup IxAtmdAccAPI |
| * |
| * @def IX_ATMDACC_OAM_RX_VCI |
| * |
| * @brief The reserved value value used for the dedicated OAM |
| * Rx connection. This value should be chosen so that it does not |
| * coencide with the VCI value used in an AAL0/AAL5 connection. |
| * Any attempt to connect a service type other than OAM on this VCI will fail. |
| */ |
| #define IX_ATMDACC_OAM_RX_VCI 0 |
| |
| |
| /** |
| * @enum IxAtmdAccPduStatus |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @brief IxAtmdAcc Pdu status : |
| * |
| * IxAtmdAccPduStatus is used during a RX operation to indicate |
| * the status of the received PDU |
| * |
| */ |
| |
| typedef enum |
| { |
| IX_ATMDACC_AAL0_VALID = 0, /**< aal0 pdu */ |
| IX_ATMDACC_OAM_VALID, /**< OAM pdu */ |
| IX_ATMDACC_AAL2_VALID, /**< aal2 pdu @b reserved for future use */ |
| IX_ATMDACC_AAL5_VALID, /**< aal5 pdu complete and trailer is valid */ |
| IX_ATMDACC_AAL5_PARTIAL, /**< aal5 pdu not complete, trailer is missing */ |
| IX_ATMDACC_AAL5_CRC_ERROR, /**< aal5 pdu not complete, crc error/length error */ |
| IX_ATMDACC_MBUF_RETURN /**< empty buffer returned to the user */ |
| } IxAtmdAccPduStatus; |
| |
| |
| /** |
| * |
| * @enum IxAtmdAccAalType |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @brief IxAtmdAcc AAL Service Type : |
| * |
| * IxAtmdAccAalType defines the type of traffic to run on this VC |
| * |
| */ |
| typedef enum |
| { |
| IX_ATMDACC_AAL5, /**< ITU-T AAL5 */ |
| IX_ATMDACC_AAL2, /**< ITU-T AAL2 @b reserved for future use */ |
| IX_ATMDACC_AAL0_48, /**< AAL0 48 byte payloads (cell header is added by NPE)*/ |
| IX_ATMDACC_AAL0_52, /**< AAL0 52 byte cell data (HEC is added by NPE) */ |
| IX_ATMDACC_OAM, /**< OAM cell transport service (HEC is added by NPE)*/ |
| IX_ATMDACC_MAX_SERVICE_TYPE /**< not a service, used for parameter validation */ |
| } IxAtmdAccAalType; |
| |
| /** |
| * |
| * @enum IxAtmdAccClpStatus |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @brief IxAtmdAcc CLP indication |
| * |
| * IxAtmdAccClpStatus defines the CLP status of the current PDU |
| * |
| */ |
| typedef enum |
| { |
| IX_ATMDACC_CLP_NOT_SET = 0, /**< CLP indication is not set */ |
| IX_ATMDACC_CLP_SET = 1 /**< CLP indication is set */ |
| } IxAtmdAccClpStatus; |
| |
| /** |
| * @typedef IxAtmdAccUserId |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @brief User-supplied Id |
| * |
| * IxAtmdAccUserId is passed through callbacks and allows the |
| * IxAtmdAcc user to identify the source of a call back. The range of |
| * this user-owned Id is [0...2^32-1)]. |
| * |
| * The user provides this own Ids on a per-channel basis as a parameter |
| * in a call to @a ixAtmdAccRxVcConnect() or @a ixAtmdAccRxVcConnect() |
| * |
| * @sa ixAtmdAccRxVcConnect |
| * @sa ixAtmdAccTxVcConnect |
| * |
| */ |
| typedef unsigned int IxAtmdAccUserId; |
| |
| /* ------------------------------------------------------ |
| Part of the IxAtmdAcc interface related to RX traffic |
| ------------------------------------------------------ */ |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @brief Rx callback prototype |
| * |
| * IxAtmdAccRxVcRxCallback is the prototype of the Rx callback user |
| * function called once per PDU to pass a receive Pdu to a user on a |
| * partilcular connection. The callback is likely to push the mbufs |
| * to a protocol layer, and recycle the mbufs for a further use. |
| * |
| * @note -This function is called ONLY in the context of |
| * the @a ixAtmdAccRxDispatch() function |
| * |
| * @sa ixAtmdAccRxDispatch |
| * @sa ixAtmdAccRxVcConnect |
| * |
| * @param port @ref IxAtmLogicalPort [in] - the port on which this PDU was received |
| * a logical PHY port [@a IX_UTOPIA_PORT_0 .. @a IX_UTOPIA_MAX_PORTS - 1] |
| * @param userId @ref IxAtmdAccUserId [in] - user Id provided in the call |
| * to @a ixAtmdAccRxVcConnect() |
| * @param status @ref IxAtmdAccPduStatus [in] - an indication about the PDU validity. |
| * In the case of AAL0 the only possibile value is |
| * AAL0_VALID, in this case the client may optionally determine |
| * that an rx timeout occured by checking if the mbuf is |
| * compleletly or only partially filled, the later case |
| * indicating a timeout. |
| * In the case of OAM the only possible value is OAM valid. |
| * The status is set to @a IX_ATMDACC_MBUF_RETURN when |
| * the mbuf is released during a disconnect process. |
| * @param clp @ref IxAtmdAccClpStatus [in] - clp indication for this PDU. |
| * For AAL5/AAL0_48 this information |
| * is set if the clp bit of any rx cell is set |
| * For AAL0-52/OAM the client may inspect the CLP in individual |
| * cell headers in the PDU, and this parameter is set to 0. |
| * @param *mbufPtr @ref IX_OSAL_MBUF [in] - depending on the servive type a pointer to |
| * an mbuf (AAL5/AAL0/OAM) or mbuf chain (AAL5 only), |
| * that comprises the complete PDU data. |
| * |
| * This parameter is guaranteed not to be a null pointer. |
| * |
| */ |
| typedef void (*IxAtmdAccRxVcRxCallback) (IxAtmLogicalPort port, |
| IxAtmdAccUserId userId, |
| IxAtmdAccPduStatus status, |
| IxAtmdAccClpStatus clp, |
| IX_OSAL_MBUF * mbufPtr); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @brief Callback prototype for free buffer level is low. |
| * |
| * IxAtmdAccRxVcFreeLowCallback is the prototype of the user function |
| * which get called on a per-VC basis, when more mbufs are needed to |
| * continue the ATM data reception. This function is likely to supply |
| * more available mbufs by one or many calls to the replenish function |
| * @a ixAtmdAccRxVcFreeReplenish() |
| * |
| * This function is called when the number of available buffers for |
| * reception is going under the threshold level as defined |
| * in @a ixAtmdAccRxVcFreeLowCallbackRegister() |
| * |
| * This function is called inside an Qmgr dispatch context. No system |
| * resource or interrupt-unsafe feature should be used inside this |
| * callback. |
| * |
| * @sa ixAtmdAccRxVcFreeLowCallbackRegister |
| * @sa IxAtmdAccRxVcFreeLowCallback |
| * @sa ixAtmdAccRxVcFreeReplenish |
| * @sa ixAtmdAccRxVcFreeEntriesQuery |
| * @sa ixAtmdAccRxVcConnect |
| * |
| * @param userId @ref IxAtmdAccUserId [in] - user Id provided in the call |
| * to @a ixAtmdAccRxVcConnect() |
| * |
| * @return None |
| * |
| */ |
| typedef void (*IxAtmdAccRxVcFreeLowCallback) (IxAtmdAccUserId userId); |
| |
| /* ------------------------------------------------------ |
| Part of the IxAtmdAcc interface related to TX traffic |
| ------------------------------------------------------ */ |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @brief Buffer callback prototype. |
| * |
| * This function is called to relinguish ownership of a transmitted |
| * buffer chain to the user. |
| * |
| * @note -In the case of a chained mbuf the AmtdAcc component can |
| * chain many user buffers together and pass ownership to the user in |
| * one function call. |
| * |
| * @param userId @ref IxAtmdAccUserId [in] - user If provided at registration of this |
| * callback. |
| * @param mbufPtr @ref IX_OSAL_MBUF [in] - a pointer to mbufs or chain of mbufs and is |
| * guaranteed not to be a null pointer. |
| * |
| */ |
| typedef void (*IxAtmdAccTxVcBufferReturnCallback) (IxAtmdAccUserId userId, |
| IX_OSAL_MBUF * mbufPtr); |
| |
| /* ------------------------------------------------------ |
| Part of the IxAtmdAcc interface related to Initialisation |
| ------------------------------------------------------ */ |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccInit (void) |
| * |
| * @brief Initialise the IxAtmdAcc Component |
| * |
| * This function initialise the IxAtmdAcc component. This function shall |
| * be called before any other function of the API. Its role is to |
| * initialise all internal resources of the IxAtmdAcc component. |
| * |
| * The ixQmgr component needs to be initialized prior the use of |
| * @a ixAtmdAccInit() |
| * |
| * @param none |
| * |
| * Failing to initilialize the IxAtmdAcc API before any use of it will |
| * result in a failed status. |
| * If the specified component is not present, a success status will still be |
| * returned, however, a warning indicating the NPE to download to is not |
| * present will be issued. |
| * |
| * @return @li IX_SUCCESS initialisation is complete (in case of component not |
| * being present, a warning is clearly indicated) |
| * @return @li IX_FAIL unable to process this request either |
| * because this IxAtmdAcc is already initialised |
| * or some unspecified error has occrred. |
| */ |
| PUBLIC IX_STATUS ixAtmdAccInit (void); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccShow (void) |
| * |
| * @brief Show IxAtmdAcc configuration on a per port basis |
| * |
| * @param none |
| * |
| * @return none |
| * |
| * @note - Display use printf() and are redirected to stdout |
| */ |
| PUBLIC void |
| ixAtmdAccShow (void); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccStatsShow (void) |
| * |
| * @brief Show all IxAtmdAcc stats |
| * |
| * @param none |
| * |
| * @return none |
| * |
| * @note - Stats display use printf() and are redirected to stdout |
| */ |
| PUBLIC void |
| ixAtmdAccStatsShow (void); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccStatsReset (void) |
| * |
| * @brief Reset all IxAtmdAcc stats |
| * |
| * @param none |
| * |
| * @return none |
| * |
| */ |
| PUBLIC void |
| ixAtmdAccStatsReset (void); |
| |
| /* ------------------------------------------------------ |
| Part of the IxAtmdAcc interface related to RX traffic |
| ------------------------------------------------------ */ |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccRxVcConnect (IxAtmLogicalPort port, |
| unsigned int vpi, |
| unsigned int vci, |
| IxAtmdAccAalType aalServiceType, |
| IxAtmRxQueueId rxQueueId, |
| IxAtmdAccUserId userCallbackId, |
| IxAtmdAccRxVcRxCallback rxCallback, |
| unsigned int minimumReplenishCount, |
| IxAtmConnId * connIdPtr, |
| IxAtmNpeRxVcId * npeVcIdPtr ) |
| * |
| * @brief Connect to a Aal Pdu receive service for a particular |
| * port/vpi/vci, and service type. |
| * |
| * This function allows a user to connect to an Aal5/Aal0/OAM Pdu receive service |
| * for a particular port/vpi/vci. It registers the callback and allocates |
| * internal resources and a Connection Id to be used in further API calls |
| * related to this VCC. |
| * |
| * The function will setup VC receive service on the specified rx queue. |
| * |
| * This function is blocking and makes use internal locks, and hence |
| * should not be called from an interrupt context. |
| * |
| * On return from @a ixAtmdAccRxVcConnect() with a failure status, the |
| * connection Id parameter is unspecified. Its value cannot be used. |
| * A connId is the reference by which IxAtmdAcc refers to a |
| * connected VC. This identifier is the result of a succesful call |
| * to a connect function. This identifier is invalid after a |
| * sucessful call to a disconnect function. |
| * |
| * Calling this function for the same combination of Vpi, Vci and more |
| * than once without calling @a ixAtmdAccRxVcTryDisconnect() will result in a |
| * failure status. |
| * |
| * If this function returns success the user should supply receive |
| * buffers by calling @a ixAtmdAccRxVcFreeReplenish() and then call |
| * @a ixAtmdAccRxVcEnable() to begin receiving pdus. |
| * |
| * There is a choice of two receive Qs on which the VC pdus could be |
| * receive. The user must associate the VC with one of these. Essentially |
| * having two qs allows more flexible system configuration such as have |
| * high prioriy traffic on one q (e.g. voice) and low priority traffic on |
| * the other (e.g. data). The high priority Q could be serviced in |
| * preference to the low priority Q. One queue may be configured to be |
| * serviced as soon as there is traffic, the other queue may be configured |
| * to be serviced by a polling mechanism running at idle time. |
| * |
| * Two AAL0 services supporting 48 or 52 byte cell data are provided. |
| * Received AAL0 PDUs will be be a multiple of the cell data size (48/52). |
| * AAL0_52 is a raw cell service and includes an ATM cell header |
| * (excluding HEC) at the start of each cell. |
| * |
| * A single "OAM Rx channel" for all ports may be enabled by |
| * establishing a dedicated OAM Rx connection. |
| * |
| * The OAM service allows buffers containing 52 byte OAM F4/F5 cells |
| * to be transmitted and received over the dedicated OAM channels. |
| * HEC is appended/removed, and CRC-10 performed by the NPE. The OAM |
| * service offered by AtmdAcc is a raw cell transport service. |
| * It is assumed that ITU I.610 procedures that make use of this |
| * service are implemented above AtmdAcc. |
| * |
| * Note that the dedicated OAM connections are established on |
| * reserved VPI,VCI, and (in the case of Rx) port values. |
| * These values are used purely to descriminate the dedicated OAM channels |
| * and do not identify a particular OAM F4/F5 flow. F4/F5 flows may be |
| * realised for particluar VPI/VCIs by manipulating the VPI,VCI |
| * fields of the ATM cell headers of cells in the buffers passed |
| * to AtmdAcc. |
| * |
| * Calling this function prior to enable the port will fail. |
| * |
| * @sa ixAtmdAccRxDispatch |
| * @sa ixAtmdAccRxVcEnable |
| * @sa ixAtmdAccRxVcDisable |
| * @sa ixAtmdAccRxVcTryDisconnect |
| * @sa ixAtmdAccPortEnable |
| * |
| * @param port @ref IxAtmLogicalPort [in] - VC identification : logical PHY port |
| * [@a IX_UTOPIA_PORT_0 .. @a IX_UTOPIA_MAX_PORTS - 1] |
| * @param vpi unsigned int [in] - VC identification : ATM Vpi [0..255] or IX_ATMDACC_OAM_VPI |
| * @param vci unsigned int [in] - VC identification : ATM Vci [0..65535] or IX_ATMDACC_OAM_VCI |
| * @param aalServiceType @ref IxAtmdAccAalType [in] - type of service: AAL5, AAL0_48, AAL0_52, or OAM |
| * @param rxQueueId @ref IxAtmRxQueueId [in] - this identifieds which of two Qs the VC |
| * should use.when icoming traffic is processed |
| * @param userCallbackId @ref IxAtmdAccUserId [in] - user Id used later as a parameter to |
| * the supplied rxCallback. |
| * @param rxCallback [in] @ref IxAtmdAccRxVxRxCallback - function called when mbufs are received. |
| * This parameter cannot be a null pointer. |
| * @param bufferFreeCallback [in] - function to be called to return |
| * ownership of buffers to IxAtmdAcc user. |
| * @param minimumReplenishCount unsigned int [in] - For AAL5/AAL0 the number of free mbufs |
| * to be used with this channel. Use a high number when the expected traffic |
| * rate on this channel is high, or when the user's mbufs are small, or when |
| * the RxVcFreeLow Notification has to be invoked less often. When this |
| * value is IX_ATMDACC_DEFAULT_REPLENISH_COUNT, the minimum of |
| * resources will be used. Depending on traffic rate, pdu |
| * size and mbuf size, rxfree queue size, polling/interrupt rate, this value may |
| * require to be replaced by a different value in the range 1-128 |
| * For OAM the rxFree queue size is fixed by atmdAcc and this parameter is ignored. |
| * @param connIdPtr @ref IxAtmConnId [out] - pointer to a connection Id |
| * This parameter cannot be a null pointer. |
| * @param npeVcIdPtr @ref IxAtmNpeRxVcId [out] - pointer to an npe Vc Id |
| * This parameter cannot be a null pointer. |
| * |
| * @return @li IX_SUCCESS successful call to IxAtmdAccRxVcConnect |
| * @return @li IX_ATMDACC_BUSY cannot process this request : |
| * no VC is available |
| * @return @li IX_FAIL |
| * parameter error, |
| * VC already in use, |
| * attempt to connect AAL service on reserved OAM VPI/VCI, |
| * attempt to connect OAM service on VPI/VCI other than the reserved OAM VPI/VCI, |
| * port is not initialised, |
| * or some other error occurs during processing. |
| * |
| */ |
| PUBLIC IX_STATUS ixAtmdAccRxVcConnect (IxAtmLogicalPort port, |
| unsigned int vpi, |
| unsigned int vci, |
| IxAtmdAccAalType aalServiceType, |
| IxAtmRxQueueId rxQueueId, |
| IxAtmdAccUserId userCallbackId, |
| IxAtmdAccRxVcRxCallback rxCallback, |
| unsigned int minimumReplenishCount, |
| IxAtmConnId * connIdPtr, |
| IxAtmNpeRxVcId * npeVcIdPtr ); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccRxVcFreeReplenish (IxAtmConnId connId, |
| IX_OSAL_MBUF * mbufPtr) |
| * |
| * @brief Provide free mbufs for data reception on a connection. |
| * |
| * This function provides mbufs for data reception by the hardware. This |
| * function needs to be called by the user on a regular basis to ensure |
| * no packet loss. Providing free buffers is a connection-based feature; |
| * each connection can have different requirements in terms of buffer size |
| * number of buffers, recycling rate. This function could be invoked from |
| * within the context of a @a IxAtmdAccRxVcFreeLowCallback() callback |
| * for a particular VC |
| * |
| * Mbufs provided through this function call can be chained. They will be |
| * unchained internally. A call to this function with chained mbufs or |
| * multiple calls with unchained mbufs are equivalent, but calls with |
| * unchained mbufs are more efficients. |
| * |
| * Mbufs provided to this interface need to be able to hold at least one |
| * full cell payload (48/52 bytes, depending on service type). |
| * Chained buffers with a size less than the size supported by the hardware |
| * will be returned through the rx callback provided during the connect step. |
| * |
| * Failing to invoke this function prior to enabling the RX traffic |
| * can result in packet loss. |
| * |
| * This function is not reentrant for the same connId. |
| * |
| * This function does not use system resources and can be |
| * invoked from an interrupt context. |
| * |
| * @note - Over replenish is detected, and extra mbufs are returned through |
| * the rx callback provided during the connect step. |
| * |
| * @note - Mbuf provided to the replenish function should have a length greater or |
| * equal to 48/52 bytes according to service type. |
| * |
| * @note - The memory cache of mMbuf payload should be invalidated prior to Mbuf |
| * submission. Flushing the Mbuf headers is handled by IxAtmdAcc. |
| * |
| * @note - When a chained mbuf is provided, this function process the mbufs |
| * up to the hardware limit and invokes the user-supplied callback |
| * to release extra buffers. |
| * |
| * @sa ixAtmdAccRxVcFreeLowCallbackRegister |
| * @sa IxAtmdAccRxVcFreeLowCallback |
| * @sa ixAtmdAccRxVcConnect |
| * |
| * @param connId @ref IxAtmConnId [in] - connection Id as returned from a succesfull call to |
| * @a IxAtmdAccRxVcConnect() |
| * @param mbufPtr @ref IX_OSAL_MBUF [in] - pointer to a mbuf structure to be used for data |
| * reception. The mbuf pointed to by this parameter can be chained |
| * to an other mbuf. |
| * |
| * @return @li IX_SUCCESS successful call to @a ixAtmdAccRxVcFreeReplenish() |
| * and the mbuf is now ready to use for incoming traffic. |
| * @return @li IX_ATMDACC_BUSY cannot process this request because |
| * the max number of outstanding free buffers has been reached |
| * or the internal resources have exhausted for this VC. |
| * The user is responsible for retrying this request later. |
| * @return @li IX_FAIL cannot process this request because of parameter |
| * errors or some unspecified internal error has occurred. |
| * |
| * @note - It is not always guaranteed the replenish step to be as fast as the |
| * hardware is consuming Rx Free mbufs. There is nothing in IxAtmdAcc to |
| * guarantee that replenish reaches the rxFree threshold level. If the |
| * threshold level is not reached, the next rxFree low notification for |
| * this channel will not be triggered. |
| * The preferred ways to replenish can be as follows (depending on |
| * applications and implementations) : |
| * @li Replenish in a rxFree low notification until the function |
| * ixAtmdAccRxVcFreeReplenish() returns IX_ATMDACC_BUSY |
| * @li Query the queue level using @sa ixAtmdAccRxVcFreeEntriesQuery, then |
| * , replenish using @a ixAtmdAccRxVcFreeReplenish(), then query the queue |
| * level again, and replenish if the threshold is still not reached. |
| * @li Trigger replenish from an other event source and use rxFree starvation |
| * to throttle the Rx traffic. |
| * |
| */ |
| PUBLIC IX_STATUS ixAtmdAccRxVcFreeReplenish (IxAtmConnId connId, |
| IX_OSAL_MBUF * mbufPtr); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccRxVcFreeLowCallbackRegister (IxAtmConnId connId, |
| unsigned int numberOfMbufs, |
| IxAtmdAccRxVcFreeLowCallback callback) |
| * |
| * @brief Configure the RX Free threshold value and register a callback |
| * to handle threshold notifications. |
| * |
| * The function ixAtmdAccRxVcFreeLowCallbackRegister sets the threshold value for |
| * a particular RX VC. When the number of buffers reaches this threshold |
| * the callback is invoked. |
| * |
| * This function should be called once per VC before RX traffic is |
| * enabled.This function will fail if the curent level of the free buffers |
| * is equal or less than the threshold value. |
| * |
| * @sa ixAtmdAccRxVcFreeLowCallbackRegister |
| * @sa IxAtmdAccRxVcFreeLowCallback |
| * @sa ixAtmdAccRxVcFreeReplenish |
| * @sa ixAtmdAccRxVcFreeEntriesQuery |
| * @sa ixAtmdAccRxVcConnect |
| * |
| * @param connId @ref IxAtmConnId [in] - connection Id as resulted from a succesfull call |
| * to @a IxAtmdAccRxVcConnect() |
| * @param numberOfMbufs unsigned int [in] - threshold number of buffers. This number |
| * has to be a power of 2, one of the values 0,1,2,4,8,16,32.... |
| * The maximum value cannot be more than half of the rxFree queue |
| * size (which can be retrieved using @a ixAtmdAccRxVcFreeEntriesQuery() |
| * before any use of the @a ixAtmdAccRxVcFreeReplenish() function) |
| * @param callback @ref IxAtmdAccRxVcFreeLowCallback [in] - function telling the user that the number of |
| * free buffers has reduced to the threshold value. |
| * |
| * @return @li IX_SUCCESS Threshold set successfully. |
| * @return @li IX_FAIL parameter error or the current number of free buffers |
| * is less than or equal to the threshold supplied or some |
| * unspecified error has occrred. |
| * |
| * @note - the callback will be called when the threshold level will drop from |
| * exactly (numberOfMbufs + 1) to (numberOfMbufs). |
| * |
| */ |
| PUBLIC IX_STATUS ixAtmdAccRxVcFreeLowCallbackRegister (IxAtmConnId connId, |
| unsigned int numberOfMbufs, |
| IxAtmdAccRxVcFreeLowCallback callback); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccRxVcFreeEntriesQuery (IxAtmConnId connId, |
| unsigned int *numberOfMbufsPtr) |
| * |
| * @brief Get the number of rx mbufs the system can accept to replenish the |
| * the rx reception mechanism on a particular channel |
| * |
| * The ixAtmdAccRxVcFreeEntriesQuery function is used to retrieve the current |
| * number of available mbuf entries for reception, on a per-VC basis. This |
| * function can be used to know the number of mbufs which can be provided |
| * using @a ixAtmdAccRxVcFreeReplenish(). |
| * |
| * This function can be used from a timer context, or can be associated |
| * with a threshold event, or can be used inside an active polling |
| * mechanism which is under user control. |
| * |
| * This function is reentrant and does not use system resources and can |
| * be invoked from an interrupt context. |
| * |
| * @param connId @ref IxAtmConnId [in] - connection Id as resulted from a succesfull call |
| * to @a IxAtmdAccRxVcConnect() |
| * @param numberOfMbufsPtr unsigned int [out] - Pointer to the number of available entries. |
| * . This parameter cannot be a null pointer. |
| * |
| * @return @li IX_SUCCESS the current number of mbufs not yet used for incoming traffic |
| * @return @li IX_FAIL invalid parameter |
| * |
| * @sa ixAtmdAccRxVcFreeReplenish |
| * |
| */ |
| PUBLIC IX_STATUS ixAtmdAccRxVcFreeEntriesQuery (IxAtmConnId connId, |
| unsigned int *numberOfMbufsPtr); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccRxVcEnable (IxAtmConnId connId) |
| * |
| * @brief Start the RX service on a VC. |
| * |
| * This functions kicks-off the traffic reception for a particular VC. |
| * Once invoked, incoming PDUs will be made available by the hardware |
| * and are eventually directed to the @a IxAtmdAccRxVcRxCallback() callback |
| * registered for the connection. |
| * |
| * If the traffic is already running, this function returns IX_SUCCESS. |
| * This function can be invoked many times. |
| * |
| * IxAtmdAccRxVcFreeLowCallback event will occur only after |
| * @a ixAtmdAccRxVcEnable() function is invoked. |
| * |
| * Before using this function, the @a ixAtmdAccRxVcFreeReplenish() function |
| * has to be used to replenish the RX Free queue. If not, incoming traffic |
| * may be discarded.and in the case of interrupt driven reception the |
| * @a IxAtmdAccRxVcFreeLowCallback() callback may be invoked as a side effect |
| * during a replenish action. |
| * |
| * This function is not reentrant and should not be used inside an |
| * interrupt context. |
| * |
| * For an VC connection this function can be called after a call to |
| * @a ixAtmdAccRxVcDisable() and should not be called after |
| * @a ixAtmdAccRxVcTryDisconnect() |
| * |
| * @sa ixAtmdAccRxVcDisable |
| * @sa ixAtmdAccRxVcConnect |
| * @sa ixAtmdAccRxVcFreeReplenish |
| * |
| * @param connId @ref IxAtmConnId [in] - connection Id as resulted from a succesfull call |
| * to @a IxAtmdAccRxVcConnect() |
| * |
| * @return @li IX_SUCCESS successful call to ixAtmdAccRxVcEnable |
| * @return @li IX_ATMDACC_WARNING the channel is already enabled |
| * @return @li IX_FAIL invalid parameters or some unspecified internal |
| * error occured. |
| * |
| */ |
| PUBLIC IX_STATUS ixAtmdAccRxVcEnable (IxAtmConnId connId); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccRxVcDisable (IxAtmConnId connId) |
| * |
| * @brief Stop the RX service on a VC. |
| * |
| * This functions stops the traffic reception for a particular VC connection. |
| * |
| * Once invoked, incoming Pdus are discarded by the hardware. Any Pdus |
| * pending will be freed to the user |
| * |
| * Hence once this function returns no more receive callbacks will be |
| * called for that VC. However, buffer free callbacks will be invoked |
| * until such time as all buffers supplied by the user have been freed |
| * back to the user |
| * |
| * Calling this function doe not invalidate the connId. |
| * @a ixAtmdAccRxVcEnable() can be invoked to enable Pdu reception again. |
| * |
| * If the traffic is already stopped, this function returns IX_SUCCESS. |
| * |
| * This function is not reentrant and should not be used inside an |
| * interrupt context. |
| * |
| * @sa ixAtmdAccRxVcConnect |
| * @sa ixAtmdAccRxVcEnable |
| * @sa ixAtmdAccRxVcDisable |
| * |
| * @param connId @ref IxAtmConnId [in] - connection Id as resulted from a succesfull call to @a |
| * IxAtmdAccRxVcConnect() |
| * |
| * @return @li IX_SUCCESS successful call to @a ixAtmdAccRxVcDisable(). |
| * @return @li IX_ATMDACC_WARNING the channel is already disabled |
| * @return @li IX_FAIL invalid parameters or some unspecified internal error occured |
| * |
| */ |
| PUBLIC IX_STATUS ixAtmdAccRxVcDisable (IxAtmConnId connId); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccRxVcTryDisconnect (IxAtmConnId connId) |
| * |
| * @brief Disconnect a VC from the RX service. |
| * |
| * This function deregisters the VC and guarantees that all resources |
| * associated with this VC are free. After its execution, the connection |
| * Id is not available. |
| * |
| * This function will fail until such time as all resources allocated to |
| * the VC connection have been freed. The user is responsible to delay and |
| * call again this function many times until a success status is returned. |
| * |
| * This function needs internal locks and should not be called from an |
| * interrupt context |
| * |
| * @param connId @ref IxAtmConnId [in] - connection Id as resulted from a succesfull call to |
| * @a IxAtmdAccRxVcConnect() |
| * |
| * @return @li IX_SUCCESS successful call to ixAtmdAccRxVcDisable |
| * @return @li IX_ATMDACC_RESOURCES_STILL_ALLOCATED not all resources |
| * associated with the connection have been freed. |
| * @return @li IX_FAIL cannot process this request because of a parameter |
| * error |
| * |
| */ |
| PUBLIC IX_STATUS ixAtmdAccRxVcTryDisconnect (IxAtmConnId connId); |
| |
| /* ------------------------------------------------------ |
| Part of the IxAtmdAcc interface related to TX traffic |
| ------------------------------------------------------ */ |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccTxVcConnect (IxAtmLogicalPort port, |
| unsigned int vpi, |
| unsigned int vci, |
| IxAtmdAccAalType aalServiceType, |
| IxAtmdAccUserId userId, |
| IxAtmdAccTxVcBufferReturnCallback bufferFreeCallback, |
| IxAtmConnId * connIdPtr) |
| * |
| * @brief Connect to a Aal Pdu transmit service for a particular |
| * port/vpi/vci and service type. |
| * |
| * This function allows a user to connect to an Aal5/Aal0/OAM Pdu transmit service |
| * for a particular port/vpi/vci. It registers the callback and allocates |
| * internal resources and a Connection Id to be used in further API calls |
| * related to this VC. |
| * |
| * The function will setup VC transmit service on the specified on the |
| * specified port. A connId is the reference by which IxAtmdAcc refers to a |
| * connected VC. This identifier is the result of a succesful call |
| * to a connect function. This identifier is invalid after a |
| * sucessful call to a disconnect function. |
| * |
| * This function needs internal locks, and hence should not be called |
| * from an interrupt context. |
| * |
| * On return from @a ixAtmdAccTxVcConnect() with a failure status, the |
| * connection Id parameter is unspecified. Its value cannot be used. |
| * |
| * Calling this function for the same combination of port, Vpi, Vci and |
| * more than once without calling @a ixAtmdAccTxVcTryDisconnect() will result |
| * in a failure status. |
| * |
| * Two AAL0 services supporting 48 or 52 byte cell data are provided. |
| * Submitted AAL0 PDUs must be a multiple of the cell data size (48/52). |
| * AAL0_52 is a raw cell service the client must format |
| * the PDU with an ATM cell header (excluding HEC) at the start of |
| * each cell, note that AtmdAcc does not validate the cell headers in |
| * a submitted PDU. |
| * |
| * For the OAM service an "OAM Tx channel" may be enabled for a port |
| * by establishing a single dedicated OAM Tx connection on that port. |
| * |
| * The OAM service allows buffers containing 52 byte OAM F4/F5 cells |
| * to be transmitted and received over the dedicated OAM channels. |
| * HEC is appended/removed, and CRC-10 performed by the NPE. The OAM |
| * service offered by AtmdAcc is a raw cell transport service. |
| * It is assumed that ITU I.610 procedures that make use of this |
| * service are implemented above AtmdAcc. |
| * |
| * Note that the dedicated OAM connections are established on |
| * reserved VPI,VCI, and (in the case of Rx) port values. |
| * These values are used purely to descriminate the dedicated OAM channels |
| * and do not identify a particular OAM F4/F5 flow. F4/F5 flows may be |
| * realised for particluar VPI/VCIs by manipulating the VPI,VCI |
| * fields of the ATM cell headers of cells in the buffers passed |
| * to AtmdAcc. |
| * |
| * Calling this function before enabling the port will fail. |
| * |
| * @sa ixAtmdAccTxVcTryDisconnect |
| * @sa ixAtmdAccPortTxScheduledModeEnable |
| * @sa ixAtmdAccPortEnable |
| * |
| * @param port @ref IxAtmLogicalPort [in] - VC identification : logical PHY port |
| * [@a IX_UTOPIA_PORT_0 .. @a IX_UTOPIA_MAX_PORTS - 1] |
| * @param vpi unsigned int [in] - VC identification : ATM Vpi [0..255] or IX_ATMDACC_OAM_VPI |
| * @param vci unsigned int [in] - VC identification : ATM Vci [0..65535] or IX_ATMDACC_OAM_VCI |
| * @param aalServiceType @ref IxAtmdAccAalType [in] - type of service AAL5, AAL0_48, AAL0_52, or OAM |
| * @param userId @ref IxAtmdAccUserId [in] - user id to be used later during callbacks related |
| * to this channel |
| * @param bufferFreeCallback @ref IxAtmdAccTxVcBufferReturnCallback [in] - function called when mbufs |
| * transmission is complete. This parameter cannot be a null |
| * pointer. |
| * @param connIdPtr @ref IxAtmConnId [out] - Pointer to a connection Id. |
| * This parameter cannot be a null pointer. |
| * |
| * @return @li IX_SUCCESS successful call to @a IxAtmdAccRxVcConnect(). |
| * @return @li IX_ATMDACC_BUSY cannot process this request |
| * because no VC is available |
| * @return @li IX_FAIL |
| * parameter error, |
| * VC already in use, |
| * attempt to connect AAL service on reserved OAM VPI/VCI, |
| * attempt to connect OAM service on VPI/VCI other than the reserved OAM VPI/VCI, |
| * port is not initialised, |
| * or some other error occurs during processing. |
| * |
| * @note - Unscheduled mode is not supported in ixp425 1.0. Therefore, the |
| * function @a ixAtmdAccPortTxScheduledModeEnable() need to be called |
| * for this port before any establishing a Tx Connection |
| */ |
| PUBLIC IX_STATUS ixAtmdAccTxVcConnect (IxAtmLogicalPort port, |
| unsigned int vpi, |
| unsigned int vci, |
| IxAtmdAccAalType aalServiceType, |
| IxAtmdAccUserId userId, |
| IxAtmdAccTxVcBufferReturnCallback bufferFreeCallback, |
| IxAtmConnId * connIdPtr); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccTxVcPduSubmit (IxAtmConnId connId, |
| IX_OSAL_MBUF * mbufPtr, |
| IxAtmdAccClpStatus clp, |
| unsigned int numberOfCells) |
| * |
| * @brief Submit a Pdu for transmission on connection. |
| * |
| * A data user calls this function to submit an mbufs containing a Pdu |
| * to be transmitted. The buffer supplied can be chained and the Pdu it |
| * contains must be complete. |
| * |
| * The transmission behavior of this call depends on the operational mode |
| * of the port on which the connection is made. |
| * |
| * In unscheduled mode the mbuf will be submitted to the hardware |
| * immediately if sufficent resource is available. Otherwise the function |
| * will return failure. |
| * |
| * In scheduled mode the buffer is queued internally in IxAtmdAcc. The cell |
| * demand is made known to the traffic shaping entity. Cells from the |
| * buffers are MUXed onto the port some time later as dictated by the |
| * traffic shaping entity. The traffic shaping entity does this by sending |
| * transmit schedules to IxAtmdAcc via @a ixAtmdAccPortTxProcess() function call. |
| * |
| * Note that the dedicated OAM channel is scheduled just like any |
| * other channel. This means that any OAM traffic relating to an |
| * active AAL0/AAL5 connection will be scheduled independantly of the |
| * AAL0/AAL5 traffic for that connection. |
| * |
| * When transmission is complete, the TX Done mechanism will give the |
| * owmnership of these buffers back to the customer. The tx done mechanism |
| * must be in operation before transmission is attempted. |
| * |
| * For AAL0/OAM submitted AAL0 PDUs must be a multiple of the cell data |
| * size (48/52). AAL0_52 and OAM are raw cell services, and the client |
| * must format the PDU with an ATM cell header (excluding HEC) at the |
| * start of each cell, note that AtmdAcc does not validate the cell headers in |
| * a submitted PDU. |
| * |
| * |
| * @sa IxAtmdAccTxVcBufferReturnCallback |
| * @sa ixAtmdAccTxDoneDispatch |
| * |
| * @param connId @ref IxAtmConnId [in] - connection Id as resulted from a succesfull call to |
| * @a ixAtmdAccTxVcConnect() |
| * @param mbufPtr @ref IX_OSAL_MBUF [in] - pointer to a chained structure of mbufs to transmit. |
| * This parameter cannot be a null pointer. |
| * @param clp @ref IxAtmdAccClpStatus [in] - clp indication for this PDU. All cells of this pdu |
| * will be sent with the clp bit set |
| * @param numberOfCells unsigned int [in] - number of cells in the PDU. |
| * |
| * @return @li IX_SUCCESS successful call to @a ixAtmdAccTxVcPduSubmit() |
| * The pdu pointed by the mbufPtr parameter will be |
| * transmitted |
| * @return @li IX_ATMDACC_BUSY unable to process this request because |
| * internal resources are all used. The caller is responsible |
| * for retrying this request later. |
| * @return @li IX_FAIL unable to process this request because of error |
| * in the parameters (wrong connId supplied, |
| * or wrong mbuf pointer supplied), the total length of all buffers |
| * in the chain should be a multiple of the cell size |
| * ( 48/52 depending on the service type ), |
| * or unspecified error during processing |
| * |
| * @note - This function in not re-entrant for the same VC (e.g. : two |
| * thread cannot send PDUs for the same VC). But two threads can |
| * safely call this function with a different connection Id |
| * |
| * @note - In unscheduled mode, this function is not re-entrant on a per |
| * port basis. The size of pdus is limited to 8Kb. |
| * |
| * @note - 0-length mbufs should be removed from the chain before submission. |
| * The total length of the pdu (sdu + padding +trailer) has to be |
| * updated in the header of the first mbuf of a chain of mbufs. |
| * |
| * @note - Aal5 trailer information (UUI, CPI, SDU length) has to be supplied |
| * before submission. |
| * |
| * @note - The payload memory cache should be flushed, if needed, prior to |
| * transmission. Mbuf headers are flushed by IxAtmdAcc |
| * |
| * @note - This function does not use system resources and can be used |
| * inside an interrupt context |
| */ |
| PUBLIC IX_STATUS ixAtmdAccTxVcPduSubmit (IxAtmConnId connId, |
| IX_OSAL_MBUF * mbufPtr, |
| IxAtmdAccClpStatus clp, |
| unsigned int numberOfCells); |
| |
| /** |
| * |
| * @ingroup IxAtmdAccAPI |
| * |
| * @fn ixAtmdAccTxVcTryDisconnect (IxAtmConnId connId) |
| * |
| * @brief Disconnect from a Aal Pdu transmit service for a particular |
| * port/vpi/vci. |
| * |
| * This function deregisters the VC and guarantees that all resources |
| * associated with this VC are free. After its execution, the connection |
| * Id is not available. |
| * |
| * This function will fail until such time as all resources allocated to |
| * the VC connection have been freed. The user is responsible to delay |
| * and call again this function many times until a success status is |
| * returned. |
| * |
| * After its execution, the connection Id is not available. |
| * |
| * @param connId @ref IxAtmConnId [in] - connection Id as resulted from a succesfull call to |
| * @a ixAtmdAccTxVcConnect() |
| * |
| * @return @li IX_SUCCESS successful call to @a ixAtmdAccTxVcTryDisconnect() |
| * @return @li IX_ATMDACC_RESOURCES_STILL_ALLOCATED not all resources |
| * associated with the connection have been freed. This condition will |
| * disappear after Tx and TxDone is complete for this channel. |
| * @return @li IX_FAIL unable to process this request because of errors |
| * in the parameters (wrong connId supplied) |
| * |
| * @note - This function needs internal locks and should not be called |
| * from an interrupt context |
| * |
| * @note - If the @a IX_ATMDACC_RESOURCES_STILL_ALLOCATED error does not |
| * clear after a while, this may be linked to a previous problem |
| * of cell overscheduling. Diabling the port and retry a disconnect |
| * will free the resources associated with this channel. |
| * |
| * @sa ixAtmdAccPortTxProcess |
| * |
| */ |
| PUBLIC IX_STATUS ixAtmdAccTxVcTryDisconnect (IxAtmConnId connId); |
| |
| #endif /* IXATMDACC_H */ |
| |
| /** |
| * @} defgroup IxAtmdAccAPI |
| */ |
| |
| |