Skip to content

Commit 01b38de

Browse files
LorenzoBianconidavem330
authored andcommitted
net: ethernet: mtk_wed: do not assume offload callbacks are always set
Check if wlan.offload_enable and wlan.offload_disable callbacks are set in mtk_wed_flow_add/mtk_wed_flow_remove since mt7996 will not rely on them. Signed-off-by: Lorenzo Bianconi <[email protected]> Reviewed-by: Simon Horman <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent c123e0d commit 01b38de

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

drivers/net/ethernet/mediatek/mtk_wed.c

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1713,19 +1713,20 @@ mtk_wed_irq_set_mask(struct mtk_wed_device *dev, u32 mask)
17131713
int mtk_wed_flow_add(int index)
17141714
{
17151715
struct mtk_wed_hw *hw = hw_list[index];
1716-
int ret;
1716+
int ret = 0;
17171717

1718-
if (!hw || !hw->wed_dev)
1719-
return -ENODEV;
1718+
mutex_lock(&hw_lock);
17201719

1721-
if (hw->num_flows) {
1722-
hw->num_flows++;
1723-
return 0;
1720+
if (!hw || !hw->wed_dev) {
1721+
ret = -ENODEV;
1722+
goto out;
17241723
}
17251724

1726-
mutex_lock(&hw_lock);
1727-
if (!hw->wed_dev) {
1728-
ret = -ENODEV;
1725+
if (!hw->wed_dev->wlan.offload_enable)
1726+
goto out;
1727+
1728+
if (hw->num_flows) {
1729+
hw->num_flows++;
17291730
goto out;
17301731
}
17311732

@@ -1744,14 +1745,15 @@ void mtk_wed_flow_remove(int index)
17441745
{
17451746
struct mtk_wed_hw *hw = hw_list[index];
17461747

1747-
if (!hw)
1748-
return;
1748+
mutex_lock(&hw_lock);
17491749

1750-
if (--hw->num_flows)
1751-
return;
1750+
if (!hw || !hw->wed_dev)
1751+
goto out;
17521752

1753-
mutex_lock(&hw_lock);
1754-
if (!hw->wed_dev)
1753+
if (!hw->wed_dev->wlan.offload_disable)
1754+
goto out;
1755+
1756+
if (--hw->num_flows)
17551757
goto out;
17561758

17571759
hw->wed_dev->wlan.offload_disable(hw->wed_dev);

0 commit comments

Comments
 (0)