mirror of
https://github.com/raspberrypi/linux.git
synced 2026-01-03 00:03:44 +00:00
cxgb4: Add MPS TCAM refcounting for raw mac filters
This patch adds TCAM reference counting support for raw mac filters. Signed-off-by: Raju Rangoju <rajur@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
28b3870578
commit
5fab51581f
@@ -1919,5 +1919,21 @@ int cxgb4_alloc_encap_mac_filt(struct adapter *adap, unsigned int viid,
|
||||
u8 dip_hit, u8 lookup_type, bool sleep_ok);
|
||||
int cxgb4_free_encap_mac_filt(struct adapter *adap, unsigned int viid,
|
||||
int idx, bool sleep_ok);
|
||||
int cxgb4_free_raw_mac_filt(struct adapter *adap,
|
||||
unsigned int viid,
|
||||
const u8 *addr,
|
||||
const u8 *mask,
|
||||
unsigned int idx,
|
||||
u8 lookup_type,
|
||||
u8 port_id,
|
||||
bool sleep_ok);
|
||||
int cxgb4_alloc_raw_mac_filt(struct adapter *adap,
|
||||
unsigned int viid,
|
||||
const u8 *addr,
|
||||
const u8 *mask,
|
||||
unsigned int idx,
|
||||
u8 lookup_type,
|
||||
u8 port_id,
|
||||
bool sleep_ok);
|
||||
|
||||
#endif /* __CXGB4_H__ */
|
||||
|
||||
@@ -54,6 +54,52 @@ unlock:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int cxgb4_free_raw_mac_filt(struct adapter *adap,
|
||||
unsigned int viid,
|
||||
const u8 *addr,
|
||||
const u8 *mask,
|
||||
unsigned int idx,
|
||||
u8 lookup_type,
|
||||
u8 port_id,
|
||||
bool sleep_ok)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (!cxgb4_mps_ref_dec(adap, idx))
|
||||
ret = t4_free_raw_mac_filt(adap, viid, addr,
|
||||
mask, idx, lookup_type,
|
||||
port_id, sleep_ok);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int cxgb4_alloc_raw_mac_filt(struct adapter *adap,
|
||||
unsigned int viid,
|
||||
const u8 *addr,
|
||||
const u8 *mask,
|
||||
unsigned int idx,
|
||||
u8 lookup_type,
|
||||
u8 port_id,
|
||||
bool sleep_ok)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = t4_alloc_raw_mac_filt(adap, viid, addr,
|
||||
mask, idx, lookup_type,
|
||||
port_id, sleep_ok);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (cxgb4_mps_ref_inc(adap, addr, ret, mask)) {
|
||||
ret = -ENOMEM;
|
||||
t4_free_raw_mac_filt(adap, viid, addr,
|
||||
mask, idx, lookup_type,
|
||||
port_id, sleep_ok);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int cxgb4_free_encap_mac_filt(struct adapter *adap, unsigned int viid,
|
||||
int idx, bool sleep_ok)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user