Mailing List Archive

Clean up netif messages. Remove bitfields, and create
# HG changeset patch
# User kaf24@firebug.cl.cam.ac.uk
# Node ID a21cbe9a111b58b3092db6c95a068679feba077b
# Parent de95bab19b1880e2645dcc67684560616f13d6af
Clean up netif messages. Remove bitfields, and create
extensible flag fields in tx requests and rx responses, in
place of specific csum_blank/csum_valid bitfields.

Signed-off-by: Keir Fraser <keir@xensource.com>

diff -r de95bab19b18 -r a21cbe9a111b linux-2.6-xen-sparse/drivers/xen/netback/netback.c
--- a/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Fri Dec 2 10:10:01 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/netback/netback.c Fri Dec 2 12:10:25 2005
@@ -25,7 +25,7 @@
s8 st,
u16 offset,
u16 size,
- u16 csum_valid);
+ u16 flags);

static void net_tx_action(unsigned long unused);
static DECLARE_TASKLET(net_tx_tasklet, net_tx_action, 0);
@@ -301,7 +301,8 @@
id = RING_GET_REQUEST(&netif->rx, netif->rx.rsp_prod_pvt)->id;
if (make_rx_response(netif, id, status,
(unsigned long)skb->data & ~PAGE_MASK,
- size, skb->proto_csum_valid) &&
+ size, skb->proto_csum_valid ?
+ NETRXF_csum_valid : 0) &&
(rx_notify[irq] == 0)) {
rx_notify[irq] = 1;
notify_list[notify_nr++] = irq;
@@ -632,7 +633,7 @@
*/
skb->ip_summed = CHECKSUM_UNNECESSARY;
skb->proto_csum_valid = 1;
- skb->proto_csum_blank = txreq.csum_blank;
+ skb->proto_csum_blank = !!(txreq.flags & NETTXF_csum_blank);

netif->stats.rx_bytes += txreq.size;
netif->stats.rx_packets++;
@@ -706,7 +707,7 @@
s8 st,
u16 offset,
u16 size,
- u16 csum_valid)
+ u16 flags)
{
RING_IDX i = netif->rx.rsp_prod_pvt;
netif_rx_response_t *resp;
@@ -714,7 +715,7 @@

resp = RING_GET_RESPONSE(&netif->rx, i);
resp->offset = offset;
- resp->csum_valid = csum_valid;
+ resp->flags = flags;
resp->id = id;
resp->status = (s16)size;
if (st < 0)
diff -r de95bab19b18 -r a21cbe9a111b linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c
--- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c Fri Dec 2 10:10:01 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c Fri Dec 2 12:10:25 2005
@@ -660,7 +660,7 @@
tx->gref = np->grant_tx_ref[id] = ref;
tx->offset = (unsigned long)skb->data & ~PAGE_MASK;
tx->size = skb->len;
- tx->csum_blank = (skb->ip_summed == CHECKSUM_HW);
+ tx->flags = (skb->ip_summed == CHECKSUM_HW) ? NETTXF_csum_blank : 0;

np->tx.req_prod_pvt = i + 1;
RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&np->tx, notify);
@@ -775,7 +775,7 @@
skb->len = rx->status;
skb->tail = skb->data + skb->len;

- if ( rx->csum_valid )
+ if ( rx->flags & NETRXF_csum_valid )
skb->ip_summed = CHECKSUM_UNNECESSARY;

np->stats.rx_packets++;
@@ -957,7 +957,8 @@
tx->gref = np->grant_tx_ref[i];
tx->offset = (unsigned long)skb->data & ~PAGE_MASK;
tx->size = skb->len;
- tx->csum_blank = (skb->ip_summed == CHECKSUM_HW);
+ tx->flags = (skb->ip_summed == CHECKSUM_HW) ?
+ NETTXF_csum_blank : 0;

np->stats.tx_bytes += skb->len;
np->stats.tx_packets++;
diff -r de95bab19b18 -r a21cbe9a111b xen/include/public/io/netif.h
--- a/xen/include/public/io/netif.h Fri Dec 2 10:10:01 2005
+++ b/xen/include/public/io/netif.h Fri Dec 2 12:10:25 2005
@@ -18,17 +18,21 @@
* or rsp_event field in the shared ring.
*/

+/* Protocol checksum field is blank in the packet (hardware offload)? */
+#define _NETTXF_csum_blank (0)
+#define NETTXF_csum_blank (1U<<_NETTXF_csum_blank)
+
typedef struct netif_tx_request {
grant_ref_t gref; /* Reference to buffer page */
- uint16_t offset:15; /* Offset within buffer page */
- uint16_t csum_blank:1; /* Proto csum field blank? */
+ uint16_t offset; /* Offset within buffer page */
+ uint16_t flags; /* NETTXF_* */
uint16_t id; /* Echoed in response message. */
uint16_t size; /* Packet size in bytes. */
} netif_tx_request_t;

typedef struct netif_tx_response {
uint16_t id;
- int8_t status;
+ int16_t status; /* NETIF_RSP_* */
} netif_tx_response_t;

typedef struct {
@@ -36,11 +40,15 @@
grant_ref_t gref; /* Reference to incoming granted frame */
} netif_rx_request_t;

+/* Protocol checksum already validated (e.g., performed by hardware)? */
+#define _NETRXF_csum_valid (0)
+#define NETRXF_csum_valid (1U<<_NETRXF_csum_valid)
+
typedef struct {
- uint16_t offset; /* Offset in page of start of received packet */
- uint16_t csum_valid; /* Protocol checksum is validated? */
uint16_t id;
- int16_t status; /* -ve: BLKIF_RSP_* ; +ve: Rx'ed pkt size. */
+ uint16_t offset; /* Offset in page of start of received packet */
+ uint16_t flags; /* NETRXF_* */
+ int16_t status; /* -ve: BLKIF_RSP_* ; +ve: Rx'ed pkt size. */
} netif_rx_response_t;

/*

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog