/** * nps_enet_start_xmit - Starts the data transmission. * @skb: sk_buff pointer that contains data to be Transmitted. * @ndev: Pointer to net_device structure. * * returns: NETDEV_TX_OK, on success * NETDEV_TX_BUSY, if any of the descriptors are not free. * * This function is invoked from upper layers to initiate transmission. */ static netdev_tx_t nps_enet_start_xmit(struct sk_buff *skb, struct net_device *ndev) { struct nps_enet_priv *priv = netdev_priv(ndev); /* This driver handles one frame at a time */ netif_stop_queue(ndev); priv->tx_skb = skb; nps_enet_send_frame(ndev, skb); return NETDEV_TX_OK; }
/** * nps_enet_start_xmit - Starts the data transmission. * @skb: sk_buff pointer that contains data to be Transmitted. * @ndev: Pointer to net_device structure. * * returns: NETDEV_TX_OK, on success * NETDEV_TX_BUSY, if any of the descriptors are not free. * * This function is invoked from upper layers to initiate transmission. */ static netdev_tx_t nps_enet_start_xmit(struct sk_buff *skb, struct net_device *ndev) { struct nps_enet_priv *priv = netdev_priv(ndev); /* This driver handles one frame at a time */ netif_stop_queue(ndev); priv->tx_skb = skb; /* make sure tx_skb is actually written to the memory * before the HW is informed and the IRQ is fired. */ wmb(); nps_enet_send_frame(ndev, skb); return NETDEV_TX_OK; }