igc: Fix 'sw_idx' type in struct igc_nfc_rule
The 'sw_idx' field from 'struct igc_nfc_rule' is u16 type but it is assigned an u32 value in igc_ethtool_init_nfc_rule(). This patch changes 'sw_idx' type to u32 so they match. Also, it makes more sense to call this field 'location' since it holds the NFC rule location. Signed-off-by: Andre Guedes <andre.guedes@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
committed by
Jeff Kirsher
parent
16fdc16c6b
commit
d3ba9e6f61
@@ -463,7 +463,7 @@ struct igc_nfc_filter {
|
|||||||
struct igc_nfc_rule {
|
struct igc_nfc_rule {
|
||||||
struct hlist_node nfc_node;
|
struct hlist_node nfc_node;
|
||||||
struct igc_nfc_filter filter;
|
struct igc_nfc_filter filter;
|
||||||
u16 sw_idx;
|
u32 location;
|
||||||
u16 action;
|
u16 action;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -940,11 +940,11 @@ static int igc_ethtool_get_nfc_rule(struct igc_adapter *adapter,
|
|||||||
cmd->data = IGC_MAX_RXNFC_RULES;
|
cmd->data = IGC_MAX_RXNFC_RULES;
|
||||||
|
|
||||||
hlist_for_each_entry(rule, &adapter->nfc_rule_list, nfc_node) {
|
hlist_for_each_entry(rule, &adapter->nfc_rule_list, nfc_node) {
|
||||||
if (fsp->location <= rule->sw_idx)
|
if (fsp->location <= rule->location)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!rule || fsp->location != rule->sw_idx)
|
if (!rule || fsp->location != rule->location)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!rule->filter.match_flags)
|
if (!rule->filter.match_flags)
|
||||||
@@ -991,7 +991,7 @@ static int igc_ethtool_get_nfc_rules(struct igc_adapter *adapter,
|
|||||||
hlist_for_each_entry(rule, &adapter->nfc_rule_list, nfc_node) {
|
hlist_for_each_entry(rule, &adapter->nfc_rule_list, nfc_node) {
|
||||||
if (cnt == cmd->rule_cnt)
|
if (cnt == cmd->rule_cnt)
|
||||||
return -EMSGSIZE;
|
return -EMSGSIZE;
|
||||||
rule_locs[cnt] = rule->sw_idx;
|
rule_locs[cnt] = rule->location;
|
||||||
cnt++;
|
cnt++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1240,7 +1240,7 @@ int igc_disable_nfc_rule(struct igc_adapter *adapter,
|
|||||||
|
|
||||||
static int igc_ethtool_update_nfc_rule(struct igc_adapter *adapter,
|
static int igc_ethtool_update_nfc_rule(struct igc_adapter *adapter,
|
||||||
struct igc_nfc_rule *input,
|
struct igc_nfc_rule *input,
|
||||||
u16 sw_idx)
|
u32 location)
|
||||||
{
|
{
|
||||||
struct igc_nfc_rule *rule, *parent;
|
struct igc_nfc_rule *rule, *parent;
|
||||||
int err = -EINVAL;
|
int err = -EINVAL;
|
||||||
@@ -1250,13 +1250,13 @@ static int igc_ethtool_update_nfc_rule(struct igc_adapter *adapter,
|
|||||||
|
|
||||||
hlist_for_each_entry(rule, &adapter->nfc_rule_list, nfc_node) {
|
hlist_for_each_entry(rule, &adapter->nfc_rule_list, nfc_node) {
|
||||||
/* hash found, or no matching entry */
|
/* hash found, or no matching entry */
|
||||||
if (rule->sw_idx >= sw_idx)
|
if (rule->location >= location)
|
||||||
break;
|
break;
|
||||||
parent = rule;
|
parent = rule;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if there is an old rule occupying our place remove it */
|
/* if there is an old rule occupying our place remove it */
|
||||||
if (rule && rule->sw_idx == sw_idx) {
|
if (rule && rule->location == location) {
|
||||||
if (!input)
|
if (!input)
|
||||||
err = igc_disable_nfc_rule(adapter, rule);
|
err = igc_disable_nfc_rule(adapter, rule);
|
||||||
|
|
||||||
@@ -1289,7 +1289,7 @@ static void igc_ethtool_init_nfc_rule(struct igc_nfc_rule *rule,
|
|||||||
INIT_HLIST_NODE(&rule->nfc_node);
|
INIT_HLIST_NODE(&rule->nfc_node);
|
||||||
|
|
||||||
rule->action = fsp->ring_cookie;
|
rule->action = fsp->ring_cookie;
|
||||||
rule->sw_idx = fsp->location;
|
rule->location = fsp->location;
|
||||||
|
|
||||||
if ((fsp->flow_type & FLOW_EXT) && fsp->m_ext.vlan_tci) {
|
if ((fsp->flow_type & FLOW_EXT) && fsp->m_ext.vlan_tci) {
|
||||||
rule->filter.vlan_tci = ntohs(fsp->h_ext.vlan_tci);
|
rule->filter.vlan_tci = ntohs(fsp->h_ext.vlan_tci);
|
||||||
@@ -1412,7 +1412,7 @@ static int igc_ethtool_add_nfc_rule(struct igc_adapter *adapter,
|
|||||||
if (err)
|
if (err)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
igc_ethtool_update_nfc_rule(adapter, rule, rule->sw_idx);
|
igc_ethtool_update_nfc_rule(adapter, rule, rule->location);
|
||||||
|
|
||||||
spin_unlock(&adapter->nfc_rule_lock);
|
spin_unlock(&adapter->nfc_rule_lock);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user