Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F162278168
D27639.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D27639.diff
View Options
diff --git a/sys/dev/ixl/ixl.h b/sys/dev/ixl/ixl.h
--- a/sys/dev/ixl/ixl.h
+++ b/sys/dev/ixl/ixl.h
@@ -390,6 +390,7 @@
u64 rx_packets;
u64 rx_bytes;
u64 desc_errs;
+ u64 csum_errs;
};
/*
diff --git a/sys/dev/ixl/ixl_pf_main.c b/sys/dev/ixl/ixl_pf_main.c
--- a/sys/dev/ixl/ixl_pf_main.c
+++ b/sys/dev/ixl/ixl_pf_main.c
@@ -808,6 +808,11 @@
vsi_list = SYSCTL_CHILDREN(vsi->vsi_node);
ixl_add_sysctls_eth_stats(&vsi->sysctl_ctx, vsi_list, &vsi->eth_stats);
+ /* Copy of netstat RX errors counter for validation purposes */
+ SYSCTL_ADD_UQUAD(&vsi->sysctl_ctx, vsi_list, OID_AUTO, "rx_errors",
+ CTLFLAG_RD, &vsi->ierrors,
+ "RX packet errors");
+
if (queues_sysctls)
ixl_vsi_add_queues_stats(vsi, &vsi->sysctl_ctx);
}
@@ -2183,7 +2188,7 @@
struct ixl_pf *pf;
struct ifnet *ifp;
struct i40e_eth_stats *es;
- u64 tx_discards;
+ u64 tx_discards, csum_errs;
struct i40e_hw_port_stats *nsd;
@@ -2196,6 +2201,11 @@
tx_discards = es->tx_discards + nsd->tx_dropped_link_down;
+ csum_errs = 0;
+ for (int i = 0; i < vsi->num_rx_queues; i++)
+ csum_errs += vsi->rx_queues[i].rxr.csum_errs;
+ nsd->checksum_error = csum_errs;
+
/* Update ifnet stats */
IXL_SET_IPACKETS(vsi, es->rx_unicast +
es->rx_multicast +
@@ -2209,7 +2219,8 @@
IXL_SET_OMCASTS(vsi, es->tx_multicast);
IXL_SET_IERRORS(vsi, nsd->crc_errors + nsd->illegal_bytes +
- nsd->rx_undersize + nsd->rx_oversize + nsd->rx_fragments +
+ nsd->checksum_error + nsd->rx_length_errors +
+ nsd->rx_undersize + nsd->rx_fragments + nsd->rx_oversize +
nsd->rx_jabber);
IXL_SET_OERRORS(vsi, es->tx_errors);
IXL_SET_IQDROPS(vsi, es->rx_discards + nsd->eth.rx_discards);
diff --git a/sys/dev/ixl/ixl_txrx.c b/sys/dev/ixl/ixl_txrx.c
--- a/sys/dev/ixl/ixl_txrx.c
+++ b/sys/dev/ixl/ixl_txrx.c
@@ -51,7 +51,7 @@
#endif
/* Local Prototypes */
-static void ixl_rx_checksum(if_rxd_info_t ri, u32 status, u32 error, u8 ptype);
+static u8 ixl_rx_checksum(if_rxd_info_t ri, u32 status, u32 error, u8 ptype);
static int ixl_isc_txd_encap(void *arg, if_pkt_info_t pi);
static void ixl_isc_txd_flush(void *arg, uint16_t txqid, qidx_t pidx);
@@ -720,7 +720,7 @@
rxr->rx_packets++;
if ((if_getcapenable(vsi->ifp) & IFCAP_RXCSUM) != 0)
- ixl_rx_checksum(ri, status, error, ptype);
+ rxr->csum_errs += ixl_rx_checksum(ri, status, error, ptype);
ri->iri_flowid = le32toh(cur->wb.qword0.hi_dword.rss);
ri->iri_rsstype = ixl_ptype_to_hash(ptype);
ri->iri_vtag = vtag;
@@ -737,7 +737,7 @@
* doesn't spend time verifying the checksum.
*
*********************************************************************/
-static void
+static u8
ixl_rx_checksum(if_rxd_info_t ri, u32 status, u32 error, u8 ptype)
{
struct i40e_rx_ptype_decoded decoded;
@@ -746,7 +746,7 @@
/* No L3 or L4 checksum was calculated */
if (!(status & (1 << I40E_RX_DESC_STATUS_L3L4P_SHIFT)))
- return;
+ return (0);
decoded = decode_rx_desc_ptype(ptype);
@@ -756,7 +756,7 @@
if (status &
(1 << I40E_RX_DESC_STATUS_IPV6EXADD_SHIFT)) {
ri->iri_csum_flags = 0;
- return;
+ return (1);
}
}
@@ -764,17 +764,19 @@
/* IPv4 checksum error */
if (error & (1 << I40E_RX_DESC_ERROR_IPE_SHIFT))
- return;
+ return (1);
ri->iri_csum_flags |= CSUM_L3_VALID;
ri->iri_csum_flags |= CSUM_L4_CALC;
/* L4 checksum error */
if (error & (1 << I40E_RX_DESC_ERROR_L4E_SHIFT))
- return;
+ return (1);
ri->iri_csum_flags |= CSUM_L4_VALID;
ri->iri_csum_data |= htons(0xffff);
+
+ return (0);
}
/* Set Report Status queue fields to 0 */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Jul 12, 3:42 PM (10 h, 17 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35001007
Default Alt Text
D27639.diff (3 KB)
Attached To
Mode
D27639: ixl(4): Report RX errors as sum of all RX error counters
Attached
Detach File
Event Timeline
Log In to Comment