net/ice/base: change profile priority for RSS reply

1. Add call to replay RSS configurations
2. Add RSS configurations to end of list and not the head to avoid
inversion on replay.

Signed-off-by: Vignesh Sridhar <vignesh.sridhar@intel.com>
Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Reviewed-by: Qiming Yang <qiming.yang@intel.com>
Reviewed-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
This commit is contained in:
Qi Zhang 2019-03-25 13:44:47 +08:00 committed by Ferruh Yigit
parent bd984f155f
commit bf36ae6b85
3 changed files with 22 additions and 2 deletions

View File

@ -3854,7 +3854,10 @@ enum ice_status ice_replay_vsi(struct ice_hw *hw, u16 vsi_handle)
if (status) if (status)
return status; return status;
} }
/* Replay per VSI all RSS configurations */
status = ice_replay_rss_cfg(hw, vsi_handle);
if (status)
return status;
/* Replay per VSI all filters */ /* Replay per VSI all filters */
status = ice_replay_vsi_all_fltr(hw, vsi_handle); status = ice_replay_vsi_all_fltr(hw, vsi_handle);
if (!status) if (!status)

View File

@ -1672,7 +1672,8 @@ ice_add_rss_vsi_ctx(struct ice_hw *hw, u16 vsi_handle,
rss_cfg->hashed_flds = prof->segs[prof->segs_cnt - 1].match; rss_cfg->hashed_flds = prof->segs[prof->segs_cnt - 1].match;
rss_cfg->packet_hdr = prof->segs[prof->segs_cnt - 1].hdrs; rss_cfg->packet_hdr = prof->segs[prof->segs_cnt - 1].hdrs;
LIST_ADD(&rss_cfg->l_entry, &hw->vsi_ctx[vsi_handle]->rss_list_head); LIST_ADD_TAIL(&rss_cfg->l_entry,
&hw->vsi_ctx[vsi_handle]->rss_list_head);
return ICE_SUCCESS; return ICE_SUCCESS;
} }

View File

@ -462,6 +462,22 @@ LIST_HEAD(ice_list_head, ice_list_entry);
#define LIST_ADD(entry, list_head) LIST_INSERT_HEAD(list_head, entry, next) #define LIST_ADD(entry, list_head) LIST_INSERT_HEAD(list_head, entry, next)
#define LIST_ADD_AFTER(entry, list_entry) \ #define LIST_ADD_AFTER(entry, list_entry) \
LIST_INSERT_AFTER(list_entry, entry, next) LIST_INSERT_AFTER(list_entry, entry, next)
static inline void list_add_tail(struct ice_list_entry *entry,
struct ice_list_head *head)
{
struct ice_list_entry *tail = head->lh_first;
if (tail == NULL) {
LIST_INSERT_HEAD(head, entry, next);
return;
}
while (tail->next.le_next != NULL)
tail = tail->next.le_next;
LIST_INSERT_AFTER(tail, entry, next);
}
#define LIST_ADD_TAIL(entry, head) list_add_tail(entry, head)
#define LIST_FOR_EACH_ENTRY(pos, head, type, member) \ #define LIST_FOR_EACH_ENTRY(pos, head, type, member) \
for ((pos) = (head)->lh_first ? \ for ((pos) = (head)->lh_first ? \
container_of((head)->lh_first, struct type, member) : \ container_of((head)->lh_first, struct type, member) : \