dcb: Add dcb_ieee_getapp_mask() for drivers to query APP settings
With multiple APP entries per selector and protocol drivers or stacks may want to pick a specific value or stripe traffic across many priorities. Also if an APP entry in use is deleted the stack/driver may want to choose from the existing APP entries. To facilitate this and avoid having duplicate code to walk the APP ring provide a routine dcb_ieee_getapp_mask() to return a u8 bitmask of all priorities set for the specified selector and protocol. This routine and bitmask is a helper for DCB kernel users. Signed-off-by: John Fastabend <john.r.fastabend@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f9ae7e4b51
commit
a364c8cf80
|
@ -32,6 +32,7 @@ u8 dcb_setapp(struct net_device *, struct dcb_app *);
|
|||
u8 dcb_getapp(struct net_device *, struct dcb_app *);
|
||||
int dcb_ieee_setapp(struct net_device *, struct dcb_app *);
|
||||
int dcb_ieee_delapp(struct net_device *, struct dcb_app *);
|
||||
u8 dcb_ieee_getapp_mask(struct net_device *, struct dcb_app *);
|
||||
|
||||
int dcbnl_notify(struct net_device *dev, int event, int cmd, u32 seq, u32 pid);
|
||||
|
||||
|
|
|
@ -1928,6 +1928,32 @@ out:
|
|||
}
|
||||
EXPORT_SYMBOL(dcb_setapp);
|
||||
|
||||
/**
|
||||
* dcb_ieee_getapp_mask - retrieve the IEEE DCB application priority
|
||||
*
|
||||
* Helper routine which on success returns a non-zero 802.1Qaz user
|
||||
* priority bitmap otherwise returns 0 to indicate the dcb_app was
|
||||
* not found in APP list.
|
||||
*/
|
||||
u8 dcb_ieee_getapp_mask(struct net_device *dev, struct dcb_app *app)
|
||||
{
|
||||
struct dcb_app_type *itr;
|
||||
u8 prio = 0;
|
||||
|
||||
spin_lock(&dcb_lock);
|
||||
list_for_each_entry(itr, &dcb_app_list, list) {
|
||||
if (itr->app.selector == app->selector &&
|
||||
itr->app.protocol == app->protocol &&
|
||||
(strncmp(itr->name, dev->name, IFNAMSIZ) == 0)) {
|
||||
prio |= 1 << itr->app.priority;
|
||||
}
|
||||
}
|
||||
spin_unlock(&dcb_lock);
|
||||
|
||||
return prio;
|
||||
}
|
||||
EXPORT_SYMBOL(dcb_ieee_getapp_mask);
|
||||
|
||||
/**
|
||||
* dcb_ieee_setapp - add IEEE dcb application data to app list
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue