|
@@ -2900,10 +2900,8 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
int data_offset = -1;
|
|
|
int nr_frags;
|
|
|
|
|
|
- if ((card->info.type == QETH_CARD_TYPE_IQD) &&
|
|
|
- (((skb->protocol != htons(ETH_P_IPV6)) &&
|
|
|
- (skb->protocol != htons(ETH_P_IP))) ||
|
|
|
- card->options.sniffer))
|
|
|
+ if (((card->info.type == QETH_CARD_TYPE_IQD) && (!ipv)) ||
|
|
|
+ card->options.sniffer)
|
|
|
goto tx_drop;
|
|
|
|
|
|
if ((card->state != CARD_STATE_UP) || !card->lan_online) {
|
|
@@ -2949,14 +2947,14 @@ static int qeth_l3_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
if (data_offset < 0)
|
|
|
skb_pull(new_skb, ETH_HLEN);
|
|
|
} else {
|
|
|
- if (new_skb->protocol == htons(ETH_P_IP)) {
|
|
|
+ if (ipv == 4) {
|
|
|
if (card->dev->type == ARPHRD_IEEE802_TR)
|
|
|
skb_pull(new_skb, TR_HLEN);
|
|
|
else
|
|
|
skb_pull(new_skb, ETH_HLEN);
|
|
|
}
|
|
|
|
|
|
- if (new_skb->protocol == ETH_P_IPV6 && card->vlangrp &&
|
|
|
+ if (ipv == 6 && card->vlangrp &&
|
|
|
vlan_tx_tag_present(new_skb)) {
|
|
|
skb_push(new_skb, VLAN_HLEN);
|
|
|
skb_copy_to_linear_data(new_skb, new_skb->data + 4, 4);
|