I've updated my patch to propagate error values (errno and NET_XMIT codes) through ndo_hard_start_xmit() and incorporated the suggestions made last time, namely: - move slightly complicated return value check to inline function and add a few comments - fix error handling while in the middle of transmitting GSO skbs I've also audited the tree once again for invalid return values and found a single remaining instance in a Wimax driver, I'll take care of that later. Two questions remain: - I'm not sure the error handling in dev_hard_start_xmit() for GSO skbs is optimal. When the driver returns an error, it is assumed the current segment has been freed. The patch then frees the entire GSO skb, including all remaining segments. Alternatively it could try to transmit the remaining segments later. - Stephen recently introduced an enum for the netdev_tx codes, with this patch drivers are allowed to return different values. The mainly useful part about Stephen's patch IMO is the netdev_tx typedef to make it easier to locate ndo_start_xmit() functions which are defined in different files than the netdev_ops. So we could remove the enum again and simply typedef an int. Any opinions are welcome :)