Kasai Takanori
2008-Feb-20  07:37 UTC
[Xen-devel] About the specification of the transmission processing of netback driver
Hi All,
Please teach us the specification of the transmission processing of netback 
driver.
When the packet is transmitted by using VNIF on PV-domain and PV-ON-HVM,
the data of SKB is fragmented.
It is fragmented whenever the data of the packet is larger than that of 64 
bytes.
It seems like the specification from at first.
Why is the packet fragmented by 64 bytes?
Details are as follows:
・linux-2.6.18-xen.hg/drivers/xen/netback/netback.c
-----------------------------------------------------------------------------
  1177  /* Called after netfront has transmitted */
  1178  static void net_tx_action(unsigned long unused)
  1179  {
...
  1285                  data_len = (txreq.size > PKT_PROT_LEN &&
  1286                              ret < MAX_SKB_FRAGS) ?
  1287                          PKT_PROT_LEN : txreq.size;
  1288
  1289                  skb = alloc_skb(data_len + 16 + NET_IP_ALIGN,
  1290                                  GFP_ATOMIC | __GFP_NOWARN);
...
  1324                  if (data_len < txreq.size) {
  1325                          skb_shinfo(skb)->nr_frags++;
  1326                          skb_shinfo(skb)->frags[0].page   1327        
(void *)(unsigned long)pending_idx;
  1328                  } else {
-----------------------------------------------------------------------------
1285:
  When packet is 64 bytes or less, data_len is the sizes of the packet.
  But, it is 64 bytes that the packet is larger than 64 bytes
1324-1327:
  In a packet that is larger than 64 bytes, the remainder of the packet is 
fragmented.
Best Regards
--
Takanori Kasai 
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel