net/ice/base: add helper function to redirect flags
authorQi Zhang <qi.z.zhang@intel.com>
Fri, 17 Sep 2021 14:43:17 +0000 (22:43 +0800)
committerQi Zhang <qi.z.zhang@intel.com>
Tue, 21 Sep 2021 13:17:58 +0000 (15:17 +0200)
Add internal helper function ice_flg_redirect to redirect parser flags
to packet flags.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Junfeng Guo <junfeng.guo@intel.com>
drivers/net/ice/base/ice_flg_rd.c
drivers/net/ice/base/ice_flg_rd.h

index 292916d..833986c 100644 (file)
@@ -51,3 +51,26 @@ struct ice_flg_rd_item *ice_flg_rd_table_get(struct ice_hw *hw)
                                        ice_parser_sect_item_get,
                                        _flg_rd_parse_item, false);
 }
+
+/**
+ * ice_flg_redirect - redirect a parser flag to packet flag
+ * @table: flag redirect table
+ * @psr_flg: parser flag to redirect
+ */
+u64 ice_flg_redirect(struct ice_flg_rd_item *table, u64 psr_flg)
+{
+       u64 flg = 0;
+       int i;
+
+       for (i = 0; i < 64; i++) {
+               struct ice_flg_rd_item *item = &table[i];
+
+               if (!item->expose)
+                       continue;
+
+               if (psr_flg & (1ul << item->intr_flg_id))
+                       flg |= (1ul << i);
+       }
+
+       return flg;
+}
index e65350f..6c3e01b 100644 (file)
@@ -13,4 +13,5 @@ struct ice_flg_rd_item {
 
 void ice_flg_rd_dump(struct ice_hw *hw, struct ice_flg_rd_item *item);
 struct ice_flg_rd_item *ice_flg_rd_table_get(struct ice_hw *hw);
+u64 ice_flg_redirect(struct ice_flg_rd_item *table, u64 psr_flg);
 #endif /* _ICE_FLG_RD_H_ */