mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-18 22:34:48 +00:00
staging: wfx: simplify hif_set_mac_addr_condition()
The structure hif_mib_mac_addr_data_frame_condition come from hardware API. It is not intended to be manipulated in upper layers of the driver. In add, current code for hif_set_mac_addr_condition() is too dumb. It should pack data with hardware representation instead of leaving all work to the caller. Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20200115135338.14374-36-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c47b70e2c5
commit
a077126a20
@ -239,11 +239,17 @@ static inline int hif_set_tx_rate_retry_policy(struct wfx_vif *wvif,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline int hif_set_mac_addr_condition(struct wfx_vif *wvif,
|
static inline int hif_set_mac_addr_condition(struct wfx_vif *wvif,
|
||||||
struct hif_mib_mac_addr_data_frame_condition *arg)
|
int idx, const u8 *mac_addr)
|
||||||
{
|
{
|
||||||
|
struct hif_mib_mac_addr_data_frame_condition val = {
|
||||||
|
.condition_idx = idx,
|
||||||
|
.address_type = HIF_MAC_ADDR_A1,
|
||||||
|
};
|
||||||
|
|
||||||
|
ether_addr_copy(val.mac_address, mac_addr);
|
||||||
return hif_write_mib(wvif->wdev, wvif->id,
|
return hif_write_mib(wvif->wdev, wvif->id,
|
||||||
HIF_MIB_ID_MAC_ADDR_DATAFRAME_CONDITION,
|
HIF_MIB_ID_MAC_ADDR_DATAFRAME_CONDITION,
|
||||||
arg, sizeof(*arg));
|
&val, sizeof(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int hif_set_uc_mc_bc_condition(struct wfx_vif *wvif,
|
static inline int hif_set_uc_mc_bc_condition(struct wfx_vif *wvif,
|
||||||
|
@ -118,7 +118,6 @@ static int wfx_set_mcast_filter(struct wfx_vif *wvif,
|
|||||||
{
|
{
|
||||||
int i, ret;
|
int i, ret;
|
||||||
struct hif_mib_config_data_filter config = { };
|
struct hif_mib_config_data_filter config = { };
|
||||||
struct hif_mib_mac_addr_data_frame_condition filter_addr_val = { };
|
|
||||||
|
|
||||||
// Temporary workaround for filters
|
// Temporary workaround for filters
|
||||||
return hif_set_data_filtering(wvif, false, true);
|
return hif_set_data_filtering(wvif, false, true);
|
||||||
@ -126,14 +125,8 @@ static int wfx_set_mcast_filter(struct wfx_vif *wvif,
|
|||||||
if (!fp->enable)
|
if (!fp->enable)
|
||||||
return hif_set_data_filtering(wvif, false, true);
|
return hif_set_data_filtering(wvif, false, true);
|
||||||
|
|
||||||
// A1 Address match on list
|
|
||||||
for (i = 0; i < fp->num_addresses; i++) {
|
for (i = 0; i < fp->num_addresses; i++) {
|
||||||
filter_addr_val.condition_idx = i;
|
ret = hif_set_mac_addr_condition(wvif, i, fp->address_list[i]);
|
||||||
filter_addr_val.address_type = HIF_MAC_ADDR_A1;
|
|
||||||
ether_addr_copy(filter_addr_val.mac_address,
|
|
||||||
fp->address_list[i]);
|
|
||||||
ret = hif_set_mac_addr_condition(wvif,
|
|
||||||
&filter_addr_val);
|
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
config.mac_cond |= 1 << i;
|
config.mac_cond |= 1 << i;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user