staging: et131x: In et131x_tx(), don't return NETDEV_TX_BUSY, just drop the packet
Memory allocation errors do not denote NETDEV_TX_BUSY, simply drop the packet silently with kfree_skb() and return NETDEV_TX_OK. Also remove this item from the TODO list. Signed-off-by: Mark Einon <mark.einon@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
4792e6d136
commit
701b943e5c
|
@ -10,7 +10,6 @@ driver as they did not build properly at the time.
|
|||
TODO:
|
||||
- Look at reducing the number of spinlocks
|
||||
- Simplify code in nic_rx_pkts(), when determining multicast_pkts_rcvd
|
||||
- In et131x_tx(), don't return NETDEV_TX_BUSY, just drop the packet with kfree_skb().
|
||||
- Reduce the number of split lines by careful consideration of variable names etc.
|
||||
|
||||
Please send patches to:
|
||||
|
|
|
@ -4212,7 +4212,6 @@ static void et131x_multicast(struct net_device *netdev)
|
|||
/* et131x_tx - The handler to tx a packet on the device */
|
||||
static netdev_tx_t et131x_tx(struct sk_buff *skb, struct net_device *netdev)
|
||||
{
|
||||
int status = 0;
|
||||
struct et131x_adapter *adapter = netdev_priv(netdev);
|
||||
struct tx_ring *tx_ring = &adapter->tx_ring;
|
||||
|
||||
|
@ -4224,43 +4223,23 @@ static netdev_tx_t et131x_tx(struct sk_buff *skb, struct net_device *netdev)
|
|||
netdev->trans_start = jiffies;
|
||||
|
||||
/* TCB is not available */
|
||||
if (tx_ring->used >= NUM_TCB) {
|
||||
/* NOTE: If there's an error on send, no need to queue the
|
||||
* packet under Linux; if we just send an error up to the
|
||||
* netif layer, it will resend the skb to us.
|
||||
*/
|
||||
status = -ENOMEM;
|
||||
} else {
|
||||
/* We need to see if the link is up; if it's not, make the
|
||||
* netif layer think we're good and drop the packet
|
||||
*/
|
||||
if ((adapter->flags & FMP_ADAPTER_FAIL_SEND_MASK) ||
|
||||
!netif_carrier_ok(netdev)) {
|
||||
dev_kfree_skb_any(skb);
|
||||
skb = NULL;
|
||||
if (tx_ring->used >= NUM_TCB)
|
||||
goto drop_err;
|
||||
|
||||
adapter->netdev->stats.tx_dropped++;
|
||||
} else {
|
||||
status = send_packet(skb, adapter);
|
||||
if (status != 0 && status != -ENOMEM) {
|
||||
/* On any other error, make netif think we're
|
||||
* OK and drop the packet
|
||||
*/
|
||||
dev_kfree_skb_any(skb);
|
||||
skb = NULL;
|
||||
adapter->netdev->stats.tx_dropped++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((adapter->flags & FMP_ADAPTER_FAIL_SEND_MASK) ||
|
||||
!netif_carrier_ok(netdev))
|
||||
goto drop_err;
|
||||
|
||||
/* Check status and manage the netif queue if necessary */
|
||||
if (status != 0) {
|
||||
if (status == -ENOMEM)
|
||||
status = NETDEV_TX_BUSY;
|
||||
else
|
||||
status = NETDEV_TX_OK;
|
||||
}
|
||||
return status;
|
||||
if (send_packet(skb, adapter))
|
||||
goto drop_err;
|
||||
|
||||
return NETDEV_TX_OK;
|
||||
|
||||
drop_err:
|
||||
dev_kfree_skb_any(skb);
|
||||
skb = NULL;
|
||||
adapter->netdev->stats.tx_dropped++;
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
/* et131x_tx_timeout - Timeout handler
|
||||
|
|
Loading…
Reference in a new issue