[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 32/47] hw/net/net_rx_pkt: Enforce alignment for eth_header
From: |
Akihiko Odaki |
Subject: |
[PATCH v3 32/47] hw/net/net_rx_pkt: Enforce alignment for eth_header |
Date: |
Sun, 23 Apr 2023 13:18:18 +0900 |
eth_strip_vlan and eth_strip_vlan_ex refers to ehdr_buf as struct
eth_header. Enforce alignment for the structure.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Sriram Yagnaraman <sriram.yagnaraman@est.tech>
---
hw/net/net_rx_pkt.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/hw/net/net_rx_pkt.c b/hw/net/net_rx_pkt.c
index 6125a063d7..1de42b4f51 100644
--- a/hw/net/net_rx_pkt.c
+++ b/hw/net/net_rx_pkt.c
@@ -23,7 +23,10 @@
struct NetRxPkt {
struct virtio_net_hdr virt_hdr;
- uint8_t ehdr_buf[sizeof(struct eth_header) + sizeof(struct vlan_header)];
+ struct {
+ struct eth_header eth;
+ struct vlan_header vlan;
+ } ehdr_buf;
struct iovec *vec;
uint16_t vec_len_total;
uint16_t vec_len;
@@ -89,7 +92,7 @@ net_rx_pkt_pull_data(struct NetRxPkt *pkt,
if (pkt->ehdr_buf_len) {
net_rx_pkt_iovec_realloc(pkt, iovcnt + 1);
- pkt->vec[0].iov_base = pkt->ehdr_buf;
+ pkt->vec[0].iov_base = &pkt->ehdr_buf;
pkt->vec[0].iov_len = pkt->ehdr_buf_len;
pkt->tot_len = pllen + pkt->ehdr_buf_len;
@@ -120,7 +123,7 @@ void net_rx_pkt_attach_iovec(struct NetRxPkt *pkt,
assert(pkt);
if (strip_vlan) {
- pkt->ehdr_buf_len = eth_strip_vlan(iov, iovcnt, iovoff, pkt->ehdr_buf,
+ pkt->ehdr_buf_len = eth_strip_vlan(iov, iovcnt, iovoff, &pkt->ehdr_buf,
&ploff, &tci);
} else {
pkt->ehdr_buf_len = 0;
@@ -142,7 +145,7 @@ void net_rx_pkt_attach_iovec_ex(struct NetRxPkt *pkt,
if (strip_vlan) {
pkt->ehdr_buf_len = eth_strip_vlan_ex(iov, iovcnt, iovoff, vet,
- pkt->ehdr_buf,
+ &pkt->ehdr_buf,
&ploff, &tci);
} else {
pkt->ehdr_buf_len = 0;
--
2.40.0
- [PATCH v3 29/47] igb: Rename a variable in igb_receive_internal(), (continued)
- [PATCH v3 29/47] igb: Rename a variable in igb_receive_internal(), Akihiko Odaki, 2023/04/23
- [PATCH v3 30/47] net/eth: Use void pointers, Akihiko Odaki, 2023/04/23
- [PATCH v3 28/47] e1000e: Rename a variable in e1000e_receive_internal(), Akihiko Odaki, 2023/04/23
- [PATCH v3 31/47] net/eth: Always add VLAN tag, Akihiko Odaki, 2023/04/23
- [PATCH v3 33/47] tests/qtest/libqos/igb: Set GPIE.Multiple_MSIX, Akihiko Odaki, 2023/04/23
- [PATCH v3 35/47] igb: Use UDP for RSS hash, Akihiko Odaki, 2023/04/23
- [PATCH v3 36/47] igb: Implement Rx SCTP CSO, Akihiko Odaki, 2023/04/23
- [PATCH v3 34/47] igb: Implement MSI-X single vector mode, Akihiko Odaki, 2023/04/23
- [PATCH v3 32/47] hw/net/net_rx_pkt: Enforce alignment for eth_header,
Akihiko Odaki <=
- [PATCH v3 38/47] igb: Strip the second VLAN tag for extended VLAN, Akihiko Odaki, 2023/04/23
- [PATCH v3 37/47] igb: Implement Tx SCTP CSO, Akihiko Odaki, 2023/04/23
- [PATCH v3 39/47] igb: Filter with the second VLAN tag for extended VLAN, Akihiko Odaki, 2023/04/23
- [PATCH v3 41/47] igb: Implement Rx PTP2 timestamp, Akihiko Odaki, 2023/04/23
- [PATCH v3 44/47] igb: Notify only new interrupts, Akihiko Odaki, 2023/04/23
- [PATCH v3 45/47] vmxnet3: Do not depend on PC, Akihiko Odaki, 2023/04/23