Skip to content

Commit dc1f8bf

Browse files
Stephen Hemmingerdavem330
authored andcommitted
netdev: change transmit to limited range type
The transmit function should only return one of three possible values, some drivers got confused and returned errno's or other values. This changes the definition so that this can be caught at compile time. Signed-off-by: Stephen Hemminger <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 9e39f7c commit dc1f8bf

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

include/linux/netdevice.h

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,19 @@ struct wireless_dev;
7979
#define net_xmit_eval(e) ((e) == NET_XMIT_CN? 0 : (e))
8080
#define net_xmit_errno(e) ((e) != NET_XMIT_CN ? -ENOBUFS : 0)
8181

82+
/* Driver transmit return codes */
83+
enum netdev_tx {
84+
NETDEV_TX_OK = 0, /* driver took care of packet */
85+
NETDEV_TX_BUSY, /* driver tx path was busy*/
86+
NETDEV_TX_LOCKED = -1, /* driver tx lock was already taken */
87+
};
88+
typedef enum netdev_tx netdev_tx_t;
89+
8290
#endif
8391

8492
#define MAX_ADDR_LEN 32 /* Largest hardware address length */
8593

86-
/* Driver transmit return codes */
87-
#define NETDEV_TX_OK 0 /* driver took care of packet */
88-
#define NETDEV_TX_BUSY 1 /* driver tx path was busy*/
89-
#define NETDEV_TX_LOCKED -1 /* driver tx lock was already taken */
90-
9194
#ifdef __KERNEL__
92-
9395
/*
9496
* Compute the worst case header length according to the protocols
9597
* used.
@@ -507,9 +509,11 @@ struct netdev_queue {
507509
* This function is called when network device transistions to the down
508510
* state.
509511
*
510-
* int (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev);
512+
* netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb,
513+
* struct net_device *dev);
511514
* Called when a packet needs to be transmitted.
512-
* Must return NETDEV_TX_OK , NETDEV_TX_BUSY, or NETDEV_TX_LOCKED,
515+
* Must return NETDEV_TX_OK , NETDEV_TX_BUSY.
516+
* (can also return NETDEV_TX_LOCKED iff NETIF_F_LLTX)
513517
* Required can not be NULL.
514518
*
515519
* u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb);
@@ -580,7 +584,7 @@ struct net_device_ops {
580584
void (*ndo_uninit)(struct net_device *dev);
581585
int (*ndo_open)(struct net_device *dev);
582586
int (*ndo_stop)(struct net_device *dev);
583-
int (*ndo_start_xmit) (struct sk_buff *skb,
587+
netdev_tx_t (*ndo_start_xmit) (struct sk_buff *skb,
584588
struct net_device *dev);
585589
u16 (*ndo_select_queue)(struct net_device *dev,
586590
struct sk_buff *skb);

0 commit comments

Comments
 (0)