diff options
author | Ira W. Snyder <iws@ovro.caltech.edu> | 2009-12-08 16:12:32 -0500 |
---|---|---|
committer | Gregory Haskins <ghaskins@novell.com> | 2009-12-08 16:12:32 -0500 |
commit | e1077ef3b2751766c4437e2f974e3d7372742d0d (patch) | |
tree | 7e9bbdf667fd7731a3c329ed516be5e6e87a1be2 /drivers | |
parent | d8544b0386b7d6a1f70fe3b7a9f71dfd4e2dafc0 (diff) |
ioq: clearly specify endianness
The IOQ code uses structures which are designed to be shared between
disparate systems, such as 32-bit and 64-bit, as well as Linux and Windows.
Since IOQ is primarily intended to be used by qemu/kvm, which support
virtual guests with a different CPU architecture than the host, clearly
define the endianness for the shared structures.
The endianness is defined to be little-endian, to avoid byte swapping in
the most common case: x86.
Note that the cookie member was not changed to have a fixed endianness.
This is because it is only intended for use by one side of the IOQ.
Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/vbus-enet.c | 30 | ||||
-rw-r--r-- | drivers/vbus/bus-proxy.c | 2 | ||||
-rw-r--r-- | drivers/vbus/pci-bridge.c | 6 |
3 files changed, 19 insertions, 19 deletions
diff --git a/drivers/net/vbus-enet.c b/drivers/net/vbus-enet.c index 8232215e62b7..94b86d482cee 100644 --- a/drivers/net/vbus-enet.c +++ b/drivers/net/vbus-enet.c @@ -175,8 +175,8 @@ rxdesc_alloc(struct vbus_enet_priv *priv, struct ioq_ring_desc *desc, size_t len iov->len = len; } else { desc->cookie = (u64)(unsigned long)skb; - desc->ptr = (u64)__pa(skb->data); - desc->len = len; /* total length */ + desc->ptr = cpu_to_le64(__pa(skb->data)); + desc->len = cpu_to_le64(len); /* total length */ } desc->valid = 1; @@ -212,8 +212,8 @@ rx_pageq_refill(struct vbus_enet_priv *priv, gfp_t gfp_mask) added = 1; iter.desc->cookie = (u64)(unsigned long)page; - iter.desc->ptr = (u64)__pa(page_address(page)); - iter.desc->len = PAGE_SIZE; + iter.desc->ptr = cpu_to_le64(__pa(page_address(page))); + iter.desc->len = cpu_to_le64(PAGE_SIZE); ret = ioq_iter_push(&iter, 0); BUG_ON(ret < 0); @@ -257,9 +257,9 @@ rx_setup(struct vbus_enet_priv *priv) size_t offset = (i * SG_DESC_SIZE); void *addr = &priv->l4ro.pool[offset]; - iter.desc->ptr = (u64)offset; + iter.desc->ptr = cpu_to_le64(offset); iter.desc->cookie = (u64)(unsigned long)addr; - iter.desc->len = SG_DESC_SIZE; + iter.desc->len = cpu_to_le64(SG_DESC_SIZE); } rxdesc_alloc(priv, iter.desc, priv->dev->mtu); @@ -428,17 +428,17 @@ tx_setup(struct vbus_enet_priv *priv) size_t offset = (i * SG_DESC_SIZE); vsg = (struct venet_sg *)&priv->pmtd.pool[offset]; - iter.desc->ptr = (u64)offset; + iter.desc->ptr = cpu_to_le64(offset); } else { vsg = kzalloc(SG_DESC_SIZE, GFP_KERNEL); if (!vsg) return -ENOMEM; - iter.desc->ptr = (u64)__pa(vsg); + iter.desc->ptr = cpu_to_le64(__pa(vsg)); } iter.desc->cookie = (u64)(unsigned long)vsg; - iter.desc->len = SG_DESC_SIZE; + iter.desc->len = cpu_to_le64(SG_DESC_SIZE); ret = ioq_iter_seek(&iter, ioq_seek_next, 0, 0); BUG_ON(ret < 0); @@ -708,7 +708,7 @@ vbus_enet_flat_import(struct vbus_enet_priv *priv, struct ioq_ring_desc *desc) return NULL; } - skb_put(skb, desc->len); + skb_put(skb, le64_to_cpu(desc->len)); return skb; } @@ -871,7 +871,7 @@ vbus_enet_tx_start(struct sk_buff *skb, struct net_device *dev) iov->ptr = (u64)sg_phys(sg); } - iter.desc->len = (u64)VSG_DESC_SIZE(vsg->count); + iter.desc->len = cpu_to_le64(VSG_DESC_SIZE(vsg->count)); } else { /* @@ -879,8 +879,8 @@ vbus_enet_tx_start(struct sk_buff *skb, struct net_device *dev) * ring. */ iter.desc->cookie = (u64)(unsigned long)skb; - iter.desc->len = (u64)skb->len; - iter.desc->ptr = (u64)__pa(skb->data); + iter.desc->len = cpu_to_le64(skb->len); + iter.desc->ptr = cpu_to_le64(__pa(skb->data)); } iter.desc->valid = 1; @@ -1258,9 +1258,9 @@ vbus_enet_evq_negcap(struct vbus_enet_priv *priv, unsigned long count) size_t offset = (i * query.evsize); void *addr = &priv->evq.pool[offset]; - iter.desc->ptr = (u64)offset; + iter.desc->ptr = cpu_to_le64(offset); iter.desc->cookie = (u64)(unsigned long)addr; - iter.desc->len = query.evsize; + iter.desc->len = cpu_to_le64(query.evsize); ret = ioq_iter_push(&iter, 0); BUG_ON(ret < 0); diff --git a/drivers/vbus/bus-proxy.c b/drivers/vbus/bus-proxy.c index a318c6754b4b..47928423a050 100644 --- a/drivers/vbus/bus-proxy.c +++ b/drivers/vbus/bus-proxy.c @@ -217,7 +217,7 @@ int vbus_driver_ioq_alloc(struct vbus_device_proxy *dev, const char *name, head->magic = IOQ_RING_MAGIC; head->ver = IOQ_RING_VER; - head->count = count; + head->count = cpu_to_le32(count); ret = dev->ops->shm(dev, name, id, prio, head, len, &head->signal, &signal, 0); diff --git a/drivers/vbus/pci-bridge.c b/drivers/vbus/pci-bridge.c index 078b8f435ab9..0d513248dae6 100644 --- a/drivers/vbus/pci-bridge.c +++ b/drivers/vbus/pci-bridge.c @@ -579,8 +579,8 @@ eventq_init(int qlen) BUG_ON(iter.desc->valid); desc->cookie = (u64)(unsigned long)event; - desc->ptr = (u64)__pa(event); - desc->len = len; /* total length */ + desc->ptr = cpu_to_le64(__pa(event)); + desc->len = cpu_to_le64(len); /* total length */ desc->valid = 1; /* @@ -798,7 +798,7 @@ _ioq_init(size_t ringsize, struct ioq *ioq, struct ioq_ops *ops) head->magic = IOQ_RING_MAGIC; head->ver = IOQ_RING_VER; - head->count = ringsize; + head->count = cpu_to_le32(ringsize); _signal_init(signal, &head->signal, &eventq_signal_ops); |