diff options
Diffstat (limited to 'drivers/net/ethernet/intel/i40evf/i40evf_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/i40evf/i40evf_main.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c index dae121877935..5f71532be7f1 100644 --- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c +++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 /******************************************************************************* * * Intel Ethernet Controller XL710 Family Linux Virtual Function Driver @@ -2749,7 +2750,7 @@ static int i40evf_parse_cls_flower(struct i40evf_adapter *adapter, if (key->src) { vf->mask.tcp_spec.src_port |= cpu_to_be16(0xffff); - vf->data.tcp_spec.src_port = key->dst; + vf->data.tcp_spec.src_port = key->src; } } vf->field_flags = field_flags; @@ -2791,14 +2792,7 @@ static int i40evf_configure_clsflower(struct i40evf_adapter *adapter, { int tc = tc_classid_to_hwtc(adapter->netdev, cls_flower->classid); struct i40evf_cloud_filter *filter = NULL; - int err = 0, count = 50; - - while (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK, - &adapter->crit_section)) { - udelay(1); - if (--count == 0) - return -EINVAL; - } + int err = -EINVAL, count = 50; if (tc < 0) { dev_err(&adapter->pdev->dev, "Invalid traffic class\n"); @@ -2806,10 +2800,16 @@ static int i40evf_configure_clsflower(struct i40evf_adapter *adapter, } filter = kzalloc(sizeof(*filter), GFP_KERNEL); - if (!filter) { - err = -ENOMEM; - goto clearout; + if (!filter) + return -ENOMEM; + + while (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK, + &adapter->crit_section)) { + if (--count == 0) + goto err; + udelay(1); } + filter->cookie = cls_flower->cookie; /* set the mask to all zeroes to begin with */ @@ -2834,7 +2834,7 @@ static int i40evf_configure_clsflower(struct i40evf_adapter *adapter, err: if (err) kfree(filter); -clearout: + clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); return err; } |