net/ice/base: support eCPRI over UDP type 0 flow
[dpdk.git] / drivers / net / ice / base / ice_acl_ctrl.c
index 02a1dd3..3c4d45c 100644 (file)
@@ -25,19 +25,21 @@ static void ice_acl_init_entry(struct ice_acl_scen *scen)
         * normal priority: start from the highest index, 50% of total entries
         * high priority: start from the lowest index, 25% of total entries
         */
-       scen->first_idx[ICE_LOW] = scen->num_entry - 1;
-       scen->first_idx[ICE_NORMAL] = scen->num_entry - scen->num_entry / 4 - 1;
-       scen->first_idx[ICE_HIGH] = 0;
-
-       scen->last_idx[ICE_LOW] = scen->num_entry - scen->num_entry / 4;
-       scen->last_idx[ICE_NORMAL] = scen->num_entry / 4;
-       scen->last_idx[ICE_HIGH] = scen->num_entry / 4 - 1;
+       scen->first_idx[ICE_ACL_PRIO_LOW] = scen->num_entry - 1;
+       scen->first_idx[ICE_ACL_PRIO_NORMAL] = scen->num_entry -
+               scen->num_entry / 4 - 1;
+       scen->first_idx[ICE_ACL_PRIO_HIGH] = 0;
+
+       scen->last_idx[ICE_ACL_PRIO_LOW] = scen->num_entry -
+               scen->num_entry / 4;
+       scen->last_idx[ICE_ACL_PRIO_NORMAL] = scen->num_entry / 4;
+       scen->last_idx[ICE_ACL_PRIO_HIGH] = scen->num_entry / 4 - 1;
 }
 
 /**
  * ice_acl_scen_assign_entry_idx
  * @scen: pointer to the scenario struct
- * @prior: the priority of the flow entry being allocated
+ * @prio: the priority of the flow entry being allocated
  *
  * To find the index of an available entry in scenario
  *
@@ -46,16 +48,16 @@ static void ice_acl_init_entry(struct ice_acl_scen *scen)
  */
 static u16
 ice_acl_scen_assign_entry_idx(struct ice_acl_scen *scen,
-                             enum ice_acl_entry_prior prior)
+                             enum ice_acl_entry_prio prio)
 {
        u16 first_idx, last_idx, i;
        s8 step;
 
-       if (prior >= ICE_MAX_PRIOR)
+       if (prio >= ICE_ACL_MAX_PRIO)
                return ICE_ACL_SCEN_ENTRY_INVAL;
 
-       first_idx = scen->first_idx[prior];
-       last_idx = scen->last_idx[prior];
+       first_idx = scen->first_idx[prio];
+       last_idx = scen->last_idx[prio];
        step = first_idx <= last_idx ? 1 : -1;
 
        for (i = first_idx; i != last_idx + step; i += step)
@@ -149,10 +151,8 @@ static enum ice_status ice_acl_init_tbl(struct ice_hw *hw)
        u16 idx;
 
        tbl = hw->acl_tbl;
-       if (!tbl) {
-               status = ICE_ERR_CFG;
-               return status;
-       }
+       if (!tbl)
+               return ICE_ERR_CFG;
 
        ice_memset(&buf, 0, sizeof(buf), ICE_NONDMA_MEM);
        ice_memset(&act_buf, 0, sizeof(act_buf), ICE_NONDMA_MEM);
@@ -526,7 +526,7 @@ ice_acl_alloc_partition(struct ice_hw *hw, struct ice_acl_scen *req)
                        break;
                }
 
-               row = (dir > 0) ? (row + width) : (row - width);
+               row = dir > 0 ? row + width : row - width;
                if (row > hw->acl_tbl->last_tcam ||
                    row < hw->acl_tbl->first_tcam) {
                        /* All rows have been checked. Increment 'off' that
@@ -668,8 +668,7 @@ static void
 ice_acl_assign_act_mem_for_scen(struct ice_acl_tbl *tbl,
                                struct ice_acl_scen *scen,
                                struct ice_aqc_acl_scen *scen_buf,
-                               u8 current_tcam_idx,
-                               u8 target_tcam_idx)
+                               u8 current_tcam_idx, u8 target_tcam_idx)
 {
        u8 i;
 
@@ -761,10 +760,8 @@ ice_acl_create_scen(struct ice_hw *hw, u16 match_width, u16 num_entries,
        scen->num_entry = num_entries;
 
        status = ice_acl_alloc_partition(hw, scen);
-       if (status) {
-               ice_free(hw, scen);
-               return status;
-       }
+       if (status)
+               goto out;
 
        ice_memset(&scen_buf, 0, sizeof(scen_buf), ICE_NONDMA_MEM);
 
@@ -829,8 +826,7 @@ ice_acl_create_scen(struct ice_hw *hw, u16 match_width, u16 num_entries,
        if (status) {
                ice_debug(hw, ICE_DBG_ACL, "AQ allocation of ACL scenario failed. status: %d\n",
                          status);
-               ice_free(hw, scen);
-               return status;
+               goto out;
        }
 
        scen->id = *scen_id;
@@ -838,6 +834,10 @@ ice_acl_create_scen(struct ice_hw *hw, u16 match_width, u16 num_entries,
        ice_acl_init_entry(scen);
        LIST_ADD(&scen->list_entry, &hw->acl_tbl->scens);
 
+out:
+       if (status)
+               ice_free(hw, scen);
+
        return status;
 }
 
@@ -955,7 +955,7 @@ enum ice_status ice_acl_destroy_tbl(struct ice_hw *hw)
  * ice_acl_add_entry - Add a flow entry to an ACL scenario
  * @hw: pointer to the HW struct
  * @scen: scenario to add the entry to
- * @prior: priority level of the entry being added
+ * @prio: priority level of the entry being added
  * @keys: buffer of the value of the key to be programmed to the ACL entry
  * @inverts: buffer of the value of the key inverts to be programmed
  * @acts: pointer to a buffer containing formatted actions
@@ -969,7 +969,7 @@ enum ice_status ice_acl_destroy_tbl(struct ice_hw *hw)
  */
 enum ice_status
 ice_acl_add_entry(struct ice_hw *hw, struct ice_acl_scen *scen,
-                 enum ice_acl_entry_prior prior, u8 *keys, u8 *inverts,
+                 enum ice_acl_entry_prio prio, u8 *keys, u8 *inverts,
                  struct ice_acl_act_entry *acts, u8 acts_cnt, u16 *entry_idx)
 {
        u8 i, entry_tcam, num_cscd, offset;
@@ -980,7 +980,7 @@ ice_acl_add_entry(struct ice_hw *hw, struct ice_acl_scen *scen,
        if (!scen)
                return ICE_ERR_DOES_NOT_EXIST;
 
-       *entry_idx = ice_acl_scen_assign_entry_idx(scen, prior);
+       *entry_idx = ice_acl_scen_assign_entry_idx(scen, prio);
        if (*entry_idx >= scen->num_entry) {
                *entry_idx = 0;
                return ICE_ERR_MAX_LIMIT;