summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAjit Khaparde2010-03-31 04:00:32 +0200
committerDavid S. Miller2010-04-02 02:25:59 +0200
commit9cae9e4f8b5887d8ef46fc56c7ca97814ae741ce (patch)
tree67e03e75d3f520ab65ef50bf0d9dc088ac385584
parentbe2net: fix flashing on big endian architectures (diff)
downloadkernel-qcow2-linux-9cae9e4f8b5887d8ef46fc56c7ca97814ae741ce.tar.gz
kernel-qcow2-linux-9cae9e4f8b5887d8ef46fc56c7ca97814ae741ce.tar.xz
kernel-qcow2-linux-9cae9e4f8b5887d8ef46fc56c7ca97814ae741ce.zip
be2net: fix bug in vlan rx path for big endian architecture
vlan traffic on big endian architecture is broken. Need to swap the vid before giving packet to stack. This patch fixes it. Signed-off-by: Ajit Khaparde <ajitk@serverengines.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/benet/be_main.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index b0faaa204c7c..ec6ace802256 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -807,7 +807,7 @@ static void be_rx_compl_process(struct be_adapter *adapter,
return;
}
vid = AMAP_GET_BITS(struct amap_eth_rx_compl, vlan_tag, rxcp);
- vid = be16_to_cpu(vid);
+ vid = swab16(vid);
vlan_hwaccel_receive_skb(skb, adapter->vlan_grp, vid);
} else {
netif_receive_skb(skb);
@@ -884,7 +884,7 @@ static void be_rx_compl_process_gro(struct be_adapter *adapter,
napi_gro_frags(&eq_obj->napi);
} else {
vid = AMAP_GET_BITS(struct amap_eth_rx_compl, vlan_tag, rxcp);
- vid = be16_to_cpu(vid);
+ vid = swab16(vid);
if (!adapter->vlan_grp || adapter->vlans_added == 0)
return;