Commit 5bbc644b authored by Michael Kelley's avatar Michael Kelley Committed by Jakub Kicinski
Browse files

hv_netvsc: Remove rmsg_pgcnt



init_page_array() now always creates a single page buffer array entry
for the rndis message, even if the rndis message crosses a page
boundary. As such, the number of page buffer array entries used for
the rndis message must no longer be tracked -- it is always just 1.
Remove the rmsg_pgcnt field and use "1" where the value is needed.

Cc: <stable@vger.kernel.org> # 6.1.x
Signed-off-by: default avatarMichael Kelley <mhklinux@outlook.com>
Link: https://patch.msgid.link/20250513000604.1396-5-mhklinux@outlook.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 41a6328b
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -158,7 +158,6 @@ struct hv_netvsc_packet {
	u8 cp_partial; /* partial copy into send buffer */

	u8 rmsg_size; /* RNDIS header and PPI size */
	u8 rmsg_pgcnt; /* page count of RNDIS header and PPI */
	u8 page_buf_cnt;

	u16 q_idx;
+3 −4
Original line number Diff line number Diff line
@@ -953,8 +953,7 @@ static void netvsc_copy_to_send_buf(struct netvsc_device *net_device,
		     + pend_size;
	int i;
	u32 padding = 0;
	u32 page_count = packet->cp_partial ? packet->rmsg_pgcnt :
		packet->page_buf_cnt;
	u32 page_count = packet->cp_partial ? 1 : packet->page_buf_cnt;
	u32 remain;

	/* Add padding */
@@ -1137,7 +1136,7 @@ static inline int netvsc_send_pkt(
		u32 desc_size;

		if (packet->cp_partial)
			pb += packet->rmsg_pgcnt;
			pb++;

		ret = netvsc_dma_map(ndev_ctx->device_ctx, packet, pb);
		if (ret) {
@@ -1299,7 +1298,7 @@ int netvsc_send(struct net_device *ndev,
		packet->send_buf_index = section_index;

		if (packet->cp_partial) {
			packet->page_buf_cnt -= packet->rmsg_pgcnt;
			packet->page_buf_cnt--;
			packet->total_data_buflen = msd_len + packet->rmsg_size;
		} else {
			packet->page_buf_cnt = 0;
+0 −1
Original line number Diff line number Diff line
@@ -343,7 +343,6 @@ static u32 init_page_array(void *hdr, u32 len, struct sk_buff *skb,
	pb[0].len = len;
	pb[0].pfn = virt_to_hvpfn(hdr);
	packet->rmsg_size = len;
	packet->rmsg_pgcnt = 1;

	pb[1].offset = offset_in_hvpage(skb->data);
	pb[1].len = skb_headlen(skb);