Lines 637-655
Link Here
|
637 |
|
637 |
|
638 |
reset_inject_status(&pBinding->recv_stat); |
638 |
reset_inject_status(&pBinding->recv_stat); |
639 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) |
639 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) |
640 |
if (skb->mac_header) |
640 |
/* 2.6.22 added an inline function for 32-/64-bit usage here, so use it. |
|
|
641 |
*/ |
642 |
if (skb_mac_header_was_set(skb)) |
641 |
#else |
643 |
#else |
642 |
if (skb->mac.raw) |
644 |
if (skb->mac.raw) |
643 |
#endif |
645 |
#endif |
644 |
{ |
646 |
{ |
645 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) |
647 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) |
646 |
hard_header_len = skb->data - skb->mac_header; |
648 |
/* 2.6.22 added an inline function for 32-/64-bit usage here, so use it. |
|
|
649 |
*/ |
650 |
hard_header_len = skb->data - skb_mac_header(skb); |
647 |
#else |
651 |
#else |
648 |
hard_header_len = skb->data - skb->mac.raw; |
652 |
hard_header_len = skb->data - skb->mac.raw; |
649 |
#endif |
653 |
#endif |
650 |
if ((hard_header_len < 0) || (hard_header_len > skb_headroom(skb))) |
654 |
if ((hard_header_len < 0) || (hard_header_len > skb_headroom(skb))) |
651 |
{ |
655 |
{ |
652 |
printk(KERN_DEBUG "bad hh len %d\n", hard_header_len); |
656 |
printk(KERN_DEBUG "bad hh len %d\n", hard_header_len); |
|
|
657 |
|
658 |
printk(KERN_DEBUG "bad hh len %d, mac: %d, data: %p, head: %p\n", |
659 |
hard_header_len, |
660 |
skb->mac_header, /* actualy ptr in 32-bit */ |
661 |
skb->data, |
662 |
skb->head); |
663 |
|
653 |
hard_header_len = 0; |
664 |
hard_header_len = 0; |
654 |
} |
665 |
} |
655 |
} |
666 |
} |
Lines 664-670
Link Here
|
664 |
{ |
675 |
{ |
665 |
case ETH_HLEN: |
676 |
case ETH_HLEN: |
666 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) |
677 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) |
667 |
CniNewFragment(ETH_HLEN, skb->mac_header, &MacHdr, CNI_USE_BUFFER); |
678 |
/* 2.6.22 added an inline function for 32-/64-bit usage here, so use it. |
|
|
679 |
*/ |
680 |
CniNewFragment(ETH_HLEN, skb_mac_header(skb), &MacHdr, CNI_USE_BUFFER); |
668 |
#else |
681 |
#else |
669 |
CniNewFragment(ETH_HLEN, skb->mac.raw, &MacHdr, CNI_USE_BUFFER); |
682 |
CniNewFragment(ETH_HLEN, skb->mac.raw, &MacHdr, CNI_USE_BUFFER); |
670 |
#endif |
683 |
#endif |
Lines 782-788
Link Here
|
782 |
#endif //LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) |
795 |
#endif //LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) |
783 |
reset_inject_status(&pBinding->send_stat); |
796 |
reset_inject_status(&pBinding->send_stat); |
784 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) |
797 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22) |
785 |
hard_header_len = skb->network_header - skb->data; |
798 |
/* 2.6.22 added an inline function for 32-/64-bit usage here, so use it. |
|
|
799 |
*/ |
800 |
hard_header_len = skb_network_header(skb) - skb->data; |
786 |
#else |
801 |
#else |
787 |
hard_header_len = skb->nh.raw - skb->data; |
802 |
hard_header_len = skb->nh.raw - skb->data; |
788 |
#endif |
803 |
#endif |