RDMA/core: Add iWARP protocol statistics attributes in sysfs
This patch adds a sysfs attribute group called "proto_stats" under /sys/class/infiniband/$device/ and populates this group with protocol statistics if they exist for a given device. Currently, only iWARP stats are defined, but the code is designed to allow InfiniBand protocol stats if they become available. These stats are per-device and more importantly -not- per port. Details: - Add union rdma_protocol_stats in ib_verbs.h. This union allows defining transport-specific stats. Currently only iwarp stats are defined. - Add struct iw_protocol_stats to define the current set of iwarp protocol stats. - Add new ib_device method called get_proto_stats() to return protocol statistics. - Add logic in core/sysfs.c to create iwarp protocol stats attributes if the device is an RNIC and has a get_proto_stats() method. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
committed by
Roland Dreier
parent
a7d834c4bc
commit
7f624d023b
@@ -226,6 +226,57 @@ static inline int ib_width_enum_to_int(enum ib_port_width width)
|
||||
}
|
||||
}
|
||||
|
||||
struct ib_protocol_stats {
|
||||
/* TBD... */
|
||||
};
|
||||
|
||||
struct iw_protocol_stats {
|
||||
u64 ipInReceives;
|
||||
u64 ipInHdrErrors;
|
||||
u64 ipInTooBigErrors;
|
||||
u64 ipInNoRoutes;
|
||||
u64 ipInAddrErrors;
|
||||
u64 ipInUnknownProtos;
|
||||
u64 ipInTruncatedPkts;
|
||||
u64 ipInDiscards;
|
||||
u64 ipInDelivers;
|
||||
u64 ipOutForwDatagrams;
|
||||
u64 ipOutRequests;
|
||||
u64 ipOutDiscards;
|
||||
u64 ipOutNoRoutes;
|
||||
u64 ipReasmTimeout;
|
||||
u64 ipReasmReqds;
|
||||
u64 ipReasmOKs;
|
||||
u64 ipReasmFails;
|
||||
u64 ipFragOKs;
|
||||
u64 ipFragFails;
|
||||
u64 ipFragCreates;
|
||||
u64 ipInMcastPkts;
|
||||
u64 ipOutMcastPkts;
|
||||
u64 ipInBcastPkts;
|
||||
u64 ipOutBcastPkts;
|
||||
|
||||
u64 tcpRtoAlgorithm;
|
||||
u64 tcpRtoMin;
|
||||
u64 tcpRtoMax;
|
||||
u64 tcpMaxConn;
|
||||
u64 tcpActiveOpens;
|
||||
u64 tcpPassiveOpens;
|
||||
u64 tcpAttemptFails;
|
||||
u64 tcpEstabResets;
|
||||
u64 tcpCurrEstab;
|
||||
u64 tcpInSegs;
|
||||
u64 tcpOutSegs;
|
||||
u64 tcpRetransSegs;
|
||||
u64 tcpInErrs;
|
||||
u64 tcpOutRsts;
|
||||
};
|
||||
|
||||
union rdma_protocol_stats {
|
||||
struct ib_protocol_stats ib;
|
||||
struct iw_protocol_stats iw;
|
||||
};
|
||||
|
||||
struct ib_port_attr {
|
||||
enum ib_port_state state;
|
||||
enum ib_mtu max_mtu;
|
||||
@@ -943,6 +994,8 @@ struct ib_device {
|
||||
|
||||
struct iw_cm_verbs *iwcm;
|
||||
|
||||
int (*get_protocol_stats)(struct ib_device *device,
|
||||
union rdma_protocol_stats *stats);
|
||||
int (*query_device)(struct ib_device *device,
|
||||
struct ib_device_attr *device_attr);
|
||||
int (*query_port)(struct ib_device *device,
|
||||
|
Reference in New Issue
Block a user