Skip to content

Commit e3446eb

Browse files
davidarinzonmngyadam
authored andcommitted
AL2 5.15 Update ena driver to 2.8.9g
Singed-off-by: David Arinzon <darinzon@amazon.com> Signed-off-by: SeongJae Park <sjpark@amazon.com>
1 parent 70fb327 commit e3446eb

File tree

6 files changed

+61
-24
lines changed

6 files changed

+61
-24
lines changed

drivers/amazon/net/ena/ena_admin_defs.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,10 @@ struct ena_admin_basic_stats {
435435
u32 tx_drops_low;
436436

437437
u32 tx_drops_high;
438+
439+
u32 rx_overruns_low;
440+
441+
u32 rx_overruns_high;
438442
};
439443

440444
/* ENI Statistics Command. */
@@ -1223,6 +1227,10 @@ struct ena_admin_aenq_keep_alive_desc {
12231227
u32 tx_drops_low;
12241228

12251229
u32 tx_drops_high;
1230+
1231+
u32 rx_overruns_low;
1232+
1233+
u32 rx_overruns_high;
12261234
};
12271235

12281236
struct ena_admin_ena_mmio_req_read_less_resp {

drivers/amazon/net/ena/ena_devlink.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ void ena_devlink_params_get(struct devlink *devlink)
108108
if (!ena_is_devlink_params_registered(devlink))
109109
return;
110110
#endif
111-
err = devlink_param_driverinit_value_get(devlink,
112-
ENA_DEVLINK_PARAM_ID_LLQ_HEADER_SIZE,
113-
&val);
111+
err = devl_param_driverinit_value_get(devlink,
112+
ENA_DEVLINK_PARAM_ID_LLQ_HEADER_SIZE,
113+
&val);
114114
if (err) {
115115
netdev_err(adapter->netdev, "Failed to query LLQ header size param\n");
116116
return;
@@ -119,7 +119,7 @@ void ena_devlink_params_get(struct devlink *devlink)
119119
adapter->large_llq_header_enabled = val.vbool;
120120
#ifdef ENA_PHC_SUPPORT
121121

122-
err = devlink_param_driverinit_value_get(devlink, ENA_DEVLINK_PARAM_ID_PHC_ENABLE, &val);
122+
err = devl_param_driverinit_value_get(devlink, ENA_DEVLINK_PARAM_ID_PHC_ENABLE, &val);
123123
if (err) {
124124
netdev_err(adapter->netdev, "Failed to query PHC param\n");
125125
return;
@@ -140,9 +140,9 @@ void ena_devlink_disable_large_llq_header_param(struct devlink *devlink)
140140

141141
#endif
142142
value.vbool = false;
143-
devlink_param_driverinit_value_set(devlink,
144-
ENA_DEVLINK_PARAM_ID_LLQ_HEADER_SIZE,
145-
value);
143+
devl_param_driverinit_value_set(devlink,
144+
ENA_DEVLINK_PARAM_ID_LLQ_HEADER_SIZE,
145+
value);
146146
}
147147

148148
#ifdef ENA_PHC_SUPPORT
@@ -157,7 +157,7 @@ void ena_devlink_disable_phc_param(struct devlink *devlink)
157157

158158
#endif
159159
value.vbool = false;
160-
devlink_param_driverinit_value_set(devlink, ENA_DEVLINK_PARAM_ID_PHC_ENABLE, value);
160+
devl_param_driverinit_value_set(devlink, ENA_DEVLINK_PARAM_ID_PHC_ENABLE, value);
161161
}
162162

163163
#endif /* ENA_PHC_SUPPORT */
@@ -277,13 +277,13 @@ static int ena_devlink_configure_params(struct devlink *devlink)
277277
}
278278

279279
value.vbool = adapter->large_llq_header_enabled;
280-
devlink_param_driverinit_value_set(devlink,
281-
ENA_DEVLINK_PARAM_ID_LLQ_HEADER_SIZE,
282-
value);
280+
devl_param_driverinit_value_set(devlink,
281+
ENA_DEVLINK_PARAM_ID_LLQ_HEADER_SIZE,
282+
value);
283283

284284
#ifdef ENA_PHC_SUPPORT
285285
value.vbool = ena_phc_is_enabled(adapter);
286-
devlink_param_driverinit_value_set(devlink, ENA_DEVLINK_PARAM_ID_PHC_ENABLE, value);
286+
devl_param_driverinit_value_set(devlink, ENA_DEVLINK_PARAM_ID_PHC_ENABLE, value);
287287

288288
#endif /* ENA_PHC_SUPPORT */
289289
#ifdef ENA_DEVLINK_RELOAD_SUPPORT_ADVERTISEMENT_NEEDED

drivers/amazon/net/ena/ena_netdev.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ MODULE_VERSION(DRV_MODULE_GENERATION);
4646

4747
#define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_IFUP | \
4848
NETIF_MSG_IFDOWN | NETIF_MSG_TX_ERR | NETIF_MSG_RX_ERR)
49+
50+
#define ENA_HIGH_LOW_TO_U64(high, low) ((((u64)(high)) << 32) | (low))
4951
#ifndef ENA_LINEAR_FRAG_SUPPORTED
5052

5153
#define ENA_SKB_PULL_MIN_LEN 64
@@ -3222,6 +3224,7 @@ static struct rtnl_link_stats64 *ena_get_stats64(struct net_device *netdev,
32223224
struct ena_ring *rx_ring, *tx_ring;
32233225
u64 xdp_rx_drops = 0;
32243226
unsigned int start;
3227+
u64 rx_overruns;
32253228
u64 rx_drops;
32263229
u64 tx_drops;
32273230
int i;
@@ -3268,6 +3271,7 @@ static struct rtnl_link_stats64 *ena_get_stats64(struct net_device *netdev,
32683271
start = ena_u64_stats_fetch_begin(&adapter->syncp);
32693272
rx_drops = adapter->dev_stats.rx_drops;
32703273
tx_drops = adapter->dev_stats.tx_drops;
3274+
rx_overruns = adapter->dev_stats.rx_overruns;
32713275
} while (ena_u64_stats_fetch_retry(&adapter->syncp, start));
32723276

32733277
stats->rx_dropped = rx_drops + xdp_rx_drops;
@@ -3282,8 +3286,9 @@ static struct rtnl_link_stats64 *ena_get_stats64(struct net_device *netdev,
32823286
stats->rx_fifo_errors = 0;
32833287
stats->rx_missed_errors = 0;
32843288
stats->tx_window_errors = 0;
3289+
stats->rx_over_errors = rx_overruns;
32853290

3286-
stats->rx_errors = 0;
3291+
stats->rx_errors = stats->rx_over_errors;
32873292
stats->tx_errors = 0;
32883293
#ifndef NDO_GET_STATS_64_V2
32893294
return stats;
@@ -4987,21 +4992,24 @@ static void ena_keep_alive_wd(void *adapter_data,
49874992
{
49884993
struct ena_adapter *adapter = (struct ena_adapter *)adapter_data;
49894994
struct ena_admin_aenq_keep_alive_desc *desc;
4995+
u64 rx_overruns;
49904996
u64 rx_drops;
49914997
u64 tx_drops;
49924998

49934999
desc = (struct ena_admin_aenq_keep_alive_desc *)aenq_e;
49945000
adapter->last_keep_alive_jiffies = jiffies;
49955001

4996-
rx_drops = ((u64)desc->rx_drops_high << 32) | desc->rx_drops_low;
4997-
tx_drops = ((u64)desc->tx_drops_high << 32) | desc->tx_drops_low;
5002+
rx_drops = ENA_HIGH_LOW_TO_U64(desc->rx_drops_high, desc->rx_drops_low);
5003+
tx_drops = ENA_HIGH_LOW_TO_U64(desc->tx_drops_high, desc->tx_drops_low);
5004+
rx_overruns = ENA_HIGH_LOW_TO_U64(desc->rx_overruns_high, desc->rx_overruns_low);
49985005

49995006
u64_stats_update_begin(&adapter->syncp);
50005007
/* These stats are accumulated by the device, so the counters indicate
50015008
* all drops since last reset.
50025009
*/
50035010
adapter->dev_stats.rx_drops = rx_drops;
50045011
adapter->dev_stats.tx_drops = tx_drops;
5012+
adapter->dev_stats.rx_overruns = rx_overruns;
50055013
u64_stats_update_end(&adapter->syncp);
50065014
}
50075015

drivers/amazon/net/ena/ena_netdev.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
#define DRV_MODULE_GEN_MAJOR 2
3131
#define DRV_MODULE_GEN_MINOR 8
32-
#define DRV_MODULE_GEN_SUBMINOR 6
32+
#define DRV_MODULE_GEN_SUBMINOR 9
3333

3434
#define DRV_MODULE_NAME "ena"
3535
#ifndef DRV_MODULE_GENERATION
@@ -361,6 +361,7 @@ struct ena_stats_dev {
361361
u64 admin_q_pause;
362362
u64 rx_drops;
363363
u64 tx_drops;
364+
u64 rx_overruns;
364365
u64 reset_fail;
365366
};
366367

drivers/amazon/net/ena/ena_phc.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
#include "ena_phc.h"
88

99
#ifdef ENA_PHC_SUPPORT
10-
10+
#ifdef ENA_PHC_SUPPORT_ADJFREQ
1111
static int ena_phc_adjfreq(struct ptp_clock_info *clock_info, s32 ppb)
1212
{
1313
return -EOPNOTSUPP;
1414
}
15+
#endif /* ENA_PHC_SUPPORT_ADJFREQ */
1516

1617
static int ena_phc_adjtime(struct ptp_clock_info *clock_info, s64 delta)
1718
{
@@ -109,7 +110,9 @@ static struct ptp_clock_info ena_ptp_clock_info = {
109110
.n_ext_ts = 0,
110111
.n_per_out = 0,
111112
.pps = 0,
113+
#ifdef ENA_PHC_SUPPORT_ADJFREQ
112114
.adjfreq = ena_phc_adjfreq,
115+
#endif /* ENA_PHC_SUPPORT_ADJFREQ */
113116
.adjtime = ena_phc_adjtime,
114117
#ifdef ENA_PHC_SUPPORT_GETTIME64
115118
#ifdef ENA_PHC_SUPPORT_GETTIME64_EXTENDED

drivers/amazon/net/ena/kcompat.h

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -790,9 +790,9 @@ do { \
790790
#define ENA_DEVLINK_RECEIVES_DEVICE_ON_ALLOC
791791
#endif
792792

793-
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 16, 0) || \
793+
#if (KERNEL_VERSION(5, 16, 0) <= LINUX_VERSION_CODE && LINUX_VERSION_CODE < KERNEL_VERSION(6, 3, 0)) || \
794794
(defined(SUSE_VERSION) && (SUSE_VERSION == 15 && SUSE_PATCHLEVEL >= 4)) || \
795-
(defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(9, 0))
795+
(defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(9, 0) && !(defined(FEDORA_RELEASE)))
796796
#define ENA_DEVLINK_RELOAD_SUPPORT_ADVERTISEMENT_NEEDED
797797
#endif
798798

@@ -866,8 +866,8 @@ static inline void netdev_rss_key_fill(void *buffer, size_t len)
866866
* UEK ***********|--------------|--------|------|
867867
*/
868868
#if (defined(IS_UEK) && !ENA_KERNEL_VERSION_GTE(4, 1, 12, 124, 43, 1)) || \
869-
(defined(ubuntu)) || \
870-
(!defined(IS_UEK) && !defined(ubuntu) && \
869+
(defined(UBUNTU_VERSION_CODE)) || \
870+
(!defined(IS_UEK) && !defined(UBUNTU_VERSION_CODE) && \
871871
!(KERNEL_VERSION(4, 4, 216) <= LINUX_VERSION_CODE && LINUX_VERSION_CODE < KERNEL_VERSION(4, 5, 0)))
872872
static inline int page_ref_count(struct page *page)
873873
{
@@ -967,7 +967,11 @@ xdp_prepare_buff(struct xdp_buff *xdp, unsigned char *hard_start,
967967
#define ENA_XDP_XMIT_FREES_FAILED_DESCS_INTERNALLY
968968
#endif
969969

970-
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) && \
970+
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) && \
971+
!(LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 188) && \
972+
LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)) && \
973+
!(LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 251) && \
974+
LINUX_VERSION_CODE < KERNEL_VERSION(5, 5, 0))) && \
971975
!(defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8, 6)) && \
972976
!(defined(SUSE_VERSION) && (SUSE_VERSION == 15 && SUSE_PATCHLEVEL >= 4)) && \
973977
!(defined(SUSE_VERSION) && (SUSE_VERSION == 15 && SUSE_PATCHLEVEL == 3) && \
@@ -989,7 +993,8 @@ static inline void eth_hw_addr_set(struct net_device *dev, const u8 *addr)
989993
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0) || \
990994
(defined(RHEL_RELEASE_CODE) && \
991995
RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8, 7) && \
992-
RHEL_RELEASE_CODE != RHEL_RELEASE_VERSION(9, 0))
996+
RHEL_RELEASE_CODE != RHEL_RELEASE_VERSION(9, 0)) || \
997+
(defined(SUSE_VERSION) && (SUSE_VERSION == 15 && SUSE_PATCHLEVEL >= 5))
993998
#define ENA_ETHTOOL_RX_BUFF_SIZE_CHANGE
994999
#endif
9951000

@@ -1062,6 +1067,10 @@ static inline bool ktime_after(const ktime_t cmp1, const ktime_t cmp2)
10621067
#define ENA_PHC_SUPPORT_GETTIME64_EXTENDED
10631068
#endif /* ENA_PHC_SUPPORT_GETTIME64_EXTENDED */
10641069

1070+
#if ((LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0)))
1071+
#define ENA_PHC_SUPPORT_ADJFREQ
1072+
#endif /* ENA_PHC_SUPPORT_ADJFREQ */
1073+
10651074
#if ((LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0)) && \
10661075
!(RHEL_RELEASE_CODE && (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 4))))
10671076
#define ptp_clock_register(info, parent) ptp_clock_register(info)
@@ -1093,7 +1102,10 @@ static inline void ena_netif_napi_add(struct net_device *dev,
10931102
int (*poll)(struct napi_struct *, int))
10941103
{
10951104
#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 0)) && \
1096-
!(RHEL_RELEASE_CODE && (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(9, 2)))
1105+
!(RHEL_RELEASE_CODE && \
1106+
((RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8, 8)) && \
1107+
(RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(9, 0))) || \
1108+
(RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(9, 2)))
10971109
#ifndef NAPI_POLL_WEIGHT
10981110
#define NAPI_POLL_WEIGHT 64
10991111
#endif
@@ -1103,6 +1115,11 @@ static inline void ena_netif_napi_add(struct net_device *dev,
11031115
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 0) */
11041116
}
11051117

1118+
#if defined(ENA_DEVLINK_SUPPORT) && LINUX_VERSION_CODE < KERNEL_VERSION(6, 3, 0)
1119+
#define devl_param_driverinit_value_get devlink_param_driverinit_value_get
1120+
#define devl_param_driverinit_value_set devlink_param_driverinit_value_set
1121+
#endif
1122+
11061123
#if (RHEL_RELEASE_CODE && (RHEL_RELEASE_CODE <= RHEL_RELEASE_VERSION(7, 4))) || \
11071124
(defined(UBUNTU_VERSION_CODE) && UBUNTU_VERSION_CODE < UBUNTU_VERSION(4, 5, 0, 0)) || \
11081125
(defined(IS_UEK) && !ENA_KERNEL_VERSION_GTE(4, 1, 12, 105, 0, 0))

0 commit comments

Comments
 (0)