packet to an interface which supports scatter-gather but not transmit
checksum offloads.
Signed-off-by: Steven Smith <ssmith@xensource.com>
skb->next = nskb->next;
nskb->next = NULL;
+
+ if (nskb->ip_summed == CHECKSUM_HW &&
+ (!(dev->features & NETIF_F_GEN_CSUM) &&
+ (!(dev->features & NETIF_F_IP_CSUM) ||
+ nskb->protocol != htons(ETH_P_IP)))) {
+ if (skb_checksum_help(nskb, 0)) {
+ nskb->next = skb->next;
+ skb->next = nskb;
+ return NETDEV_TX_BUSY;
+ }
+ }
+
rc = dev->hard_start_xmit(nskb, dev);
if (unlikely(rc)) {
nskb->next = skb->next;