@@ -65,6 +65,7 @@ static const struct model_db {
{VENDOR_ARM, PART_103xx, 0, 0, ROC_MODEL_CN103xx_A0, "cn10kb_a0"},
{VENDOR_ARM, PART_105xxN, 0, 0, ROC_MODEL_CNF105xxN_A0, "cnf10kb_a0"},
{VENDOR_CAVIUM, PART_98xx, 0, 0, ROC_MODEL_CN98xx_A0, "cn98xx_a0"},
+ {VENDOR_CAVIUM, PART_98xx, 0, 1, ROC_MODEL_CN98xx_A1, "cn98xx_a1"},
{VENDOR_CAVIUM, PART_96xx, 0, 0, ROC_MODEL_CN96xx_A0, "cn96xx_a0"},
{VENDOR_CAVIUM, PART_96xx, 0, 1, ROC_MODEL_CN96xx_B0, "cn96xx_b0"},
{VENDOR_CAVIUM, PART_96xx, 2, 0, ROC_MODEL_CN96xx_C0, "cn96xx_c0"},
@@ -21,6 +21,7 @@ struct roc_model {
#define ROC_MODEL_CNF95xxN_A1 BIT_ULL(14)
#define ROC_MODEL_CNF95xxN_B0 BIT_ULL(15)
#define ROC_MODEL_CN98xx_A0 BIT_ULL(16)
+#define ROC_MODEL_CN98xx_A1 BIT_ULL(17)
#define ROC_MODEL_CN106xx_A0 BIT_ULL(20)
#define ROC_MODEL_CNF105xx_A0 BIT_ULL(21)
#define ROC_MODEL_CNF105xxN_A0 BIT_ULL(22)
@@ -38,10 +39,11 @@ struct roc_model {
} __plt_cache_aligned;
#define ROC_MODEL_CN96xx_Ax (ROC_MODEL_CN96xx_A0 | ROC_MODEL_CN96xx_B0)
+#define ROC_MODEL_CN98xx_Ax (ROC_MODEL_CN98xx_A0 | ROC_MODEL_CN98xx_A1)
#define ROC_MODEL_CN9K \
(ROC_MODEL_CN96xx_Ax | ROC_MODEL_CN96xx_C0 | ROC_MODEL_CNF95xx_A0 | \
ROC_MODEL_CNF95xx_B0 | ROC_MODEL_CNF95xxMM_A0 | \
- ROC_MODEL_CNF95xxO_A0 | ROC_MODEL_CNF95xxN_A0 | ROC_MODEL_CN98xx_A0 | \
+ ROC_MODEL_CNF95xxO_A0 | ROC_MODEL_CNF95xxN_A0 | ROC_MODEL_CN98xx_Ax | \
ROC_MODEL_CNF95xxN_A1 | ROC_MODEL_CNF95xxN_B0)
#define ROC_MODEL_CNF9K \
(ROC_MODEL_CNF95xx_A0 | ROC_MODEL_CNF95xx_B0 | \
@@ -111,10 +113,22 @@ roc_model_is_cn10k(void)
static inline uint64_t
roc_model_is_cn98xx(void)
{
+ return (roc_model->flag & ROC_MODEL_CN98xx_Ax);
+}
+
+static inline uint64_t
+roc_model_is_cn98xx_a0(void)
+{
return (roc_model->flag & ROC_MODEL_CN98xx_A0);
}
static inline uint64_t
+roc_model_is_cn98xx_a1(void)
+{
+ return (roc_model->flag & ROC_MODEL_CN98xx_A1);
+}
+
+static inline uint64_t
roc_model_is_cn96_a0(void)
{
return roc_model->flag & ROC_MODEL_CN96xx_A0;