Exemplo n.º 1
0
/** 
 *  @brief This function handles packet transmission
 *  
 *  @param skb     A pointer to sk_buff structure
 *  @param dev     A pointer to net_device structure
 *  @return 	   WLAN_STATUS_SUCCESS or WLAN_STATUS_FAILURE
 */
static int
wlan_hard_start_xmit(struct sk_buff *skb, struct eth_drv_sc *sc)
{
    int ret;
    wlan_private *priv = sc->driver_private;

    ENTER();

    if (wlan_tx_packet(priv, skb)) {
        /* Transmit failed */
        ret = WLAN_STATUS_FAILURE;
        goto done;
    } else {
        /* Transmit succeeded */
	#if 0
        if (!priv->adapter->wmm.enabled) {
            if (priv->adapter->TxSkbNum >= MAX_NUM_IN_TX_Q) {
                UpdateTransStart(dev);
                os_stop_queue(priv);
            }
        }
	#endif
    }

    ret = WLAN_STATUS_SUCCESS;
  done:

    LEAVE();
    return ret;
}
/** 
 *  @brief This function handles the timeout of packet
 *  transmission
 *  
 *  @param dev     A pointer to net_device structure
 *  @return        n/a
 */
static void
wlan_tx_timeout(struct net_device *dev)
{
    wlan_private *priv = (wlan_private *) netdev_priv(dev);

    ENTER();

    PRINTM(DATA, "Tx timeout @ %lu\n", os_time_get());
    UpdateTransStart(dev);

    priv->adapter->dbg.num_tx_timeout++;

    priv->adapter->IntCounter++;
    wake_up_interruptible(&priv->MainThread.waitQ);

    LEAVE();
}
Exemplo n.º 3
0
/** 
 *  @brief This function handles the timeout of packet
 *  transmission
 *  
 *  @param dev     A pointer to net_device structure
 *  @return 	   n/a
 */
static void
wlan_tx_timeout(struct net_device *dev)
{
    wlan_private *priv = (wlan_private *) dev->priv;

    ENTER();

    diag_printf("tx watch dog timeout!\n");

    priv->wlan_dev.dnld_sent = DNLD_RES_RECEIVED;
    UpdateTransStart(dev);

    if (priv->adapter->CurrentTxSkb) {
        //wake_up_interruptible(&priv->MainThread.waitQ);

        cyg_flag_setbits( &priv->MainThread.waitQ_flag_q, 1 ); 
		
    } else {
        //os_start_queue(priv);
    }

    LEAVE();
}