diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index c70441f..f7d61ab 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -916,7 +916,7 @@ static int add_recvbuf_small(struct virtnet_info *vi, struct receive_queue *rq, void *ctx = (void *)(unsigned long)xdp_headroom; int len = vi->hdr_len + VIRTNET_RX_PAD + GOOD_PACKET_LEN + xdp_headroom; int err; - + //printk("[Peter] add_recvbuf_small name = %s\n", rq->vq->name); len = SKB_DATA_ALIGN(len) + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); if (unlikely(!skb_page_frag_refill(len, alloc_frag, gfp))) @@ -939,7 +939,7 @@ static int add_recvbuf_big(struct virtnet_info *vi, struct receive_queue *rq, struct page *first, *list = NULL; char *p; int i, err, offset; - + //printk("[Peter] add_recvbuf_big name = %s\n", rq->vq->name); sg_init_table(rq->sg, MAX_SKB_FRAGS + 2); /* page in rq->sg[MAX_SKB_FRAGS + 1] is list tail */ @@ -1002,7 +1002,7 @@ static int add_recvbuf_mergeable(struct virtnet_info *vi, void *ctx; int err; unsigned int len, hole; - + //printk("[Peter] add_recvbuf_mergeable name = %s\n", rq->vq->name); len = get_mergeable_buf_len(rq, &rq->mrg_avg_pkt_len); if (unlikely(!skb_page_frag_refill(len + headroom, alloc_frag, gfp))) return -ENOMEM; @@ -2463,9 +2463,15 @@ static ssize_t mergeable_rx_buffer_size_show(struct netdev_rx_queue *queue, return sprintf(buf, "%u\n", get_mergeable_buf_len(&vi->rq[queue_index], avg)); } - +//added by peter +extern volatile int g_trigger_bug; +ssize_t mergeable_rx_buffer_size_store(struct netdev_rx_queue *queue, + const char* buf, size_t len) { + kstrtos32(buf, 10, &g_trigger_bug); + printk("[Peter] g_trigger_bug set to %d\n", g_trigger_bug); +} static struct rx_queue_attribute mergeable_rx_buffer_size_attribute = - __ATTR_RO(mergeable_rx_buffer_size); + __ATTR_RW(mergeable_rx_buffer_size); // modified by peter static struct attribute *virtio_net_mrg_rx_attrs[] = { &mergeable_rx_buffer_size_attribute.attr,