mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
IB/core: Introduce capabilitymask2 field in ClassPortInfo mad
Change struct ib_class_port_info to conform to IB Spec 1.3
That in order to get specific capability mask from ClassPortInfo mad.
>From the IB Spec, ClassPortInfo section:
"CapabilityMask2 Bits 0-26: Additional class-specific capabilities...
RespTimeValue the rest 5 bits"
The new struct now has one field for capabilitymask2 (previously was the
reserved field) and the resp_time field.
And it fixes up qib and srpt, use of the field repurposed to be used as
capabilitymask2:
IB/qib: Change pma_get_classportinfo
IB/srpt: Adjust the use of ib_class_port_info
Signed-off-by: Erez Shitrit <[email protected]>
Reviewed-by: Leon Romanovsky <[email protected]>
Reviewed-by: Hal Rosenstock <[email protected]>
Signed-off-by: Doug Ledford <[email protected]>
This commit is contained in:
parent
c16d2750a0
commit
507f6afa3a
3 changed files with 63 additions and 5 deletions
|
|
@ -239,12 +239,15 @@ struct ib_vendor_mad {
|
|||
|
||||
#define IB_MGMT_CLASSPORTINFO_ATTR_ID cpu_to_be16(0x0001)
|
||||
|
||||
#define IB_CLASS_PORT_INFO_RESP_TIME_MASK 0x1F
|
||||
#define IB_CLASS_PORT_INFO_RESP_TIME_FIELD_SIZE 5
|
||||
|
||||
struct ib_class_port_info {
|
||||
u8 base_version;
|
||||
u8 class_version;
|
||||
__be16 capability_mask;
|
||||
u8 reserved[3];
|
||||
u8 resp_time_value;
|
||||
/* 27 bits for cap_mask2, 5 bits for resp_time */
|
||||
__be32 cap_mask2_resp_time;
|
||||
u8 redirect_gid[16];
|
||||
__be32 redirect_tcslfl;
|
||||
__be16 redirect_lid;
|
||||
|
|
@ -259,6 +262,59 @@ struct ib_class_port_info {
|
|||
__be32 trap_qkey;
|
||||
};
|
||||
|
||||
/**
|
||||
* ib_get_cpi_resp_time - Returns the resp_time value from
|
||||
* cap_mask2_resp_time in ib_class_port_info.
|
||||
* @cpi: A struct ib_class_port_info mad.
|
||||
*/
|
||||
static inline u8 ib_get_cpi_resp_time(struct ib_class_port_info *cpi)
|
||||
{
|
||||
return (u8)(be32_to_cpu(cpi->cap_mask2_resp_time) &
|
||||
IB_CLASS_PORT_INFO_RESP_TIME_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* ib_set_cpi_resptime - Sets the response time in an
|
||||
* ib_class_port_info mad.
|
||||
* @cpi: A struct ib_class_port_info.
|
||||
* @rtime: The response time to set.
|
||||
*/
|
||||
static inline void ib_set_cpi_resp_time(struct ib_class_port_info *cpi,
|
||||
u8 rtime)
|
||||
{
|
||||
cpi->cap_mask2_resp_time =
|
||||
(cpi->cap_mask2_resp_time &
|
||||
cpu_to_be32(~IB_CLASS_PORT_INFO_RESP_TIME_MASK)) |
|
||||
cpu_to_be32(rtime & IB_CLASS_PORT_INFO_RESP_TIME_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* ib_get_cpi_capmask2 - Returns the capmask2 value from
|
||||
* cap_mask2_resp_time in ib_class_port_info.
|
||||
* @cpi: A struct ib_class_port_info mad.
|
||||
*/
|
||||
static inline u32 ib_get_cpi_capmask2(struct ib_class_port_info *cpi)
|
||||
{
|
||||
return (be32_to_cpu(cpi->cap_mask2_resp_time) >>
|
||||
IB_CLASS_PORT_INFO_RESP_TIME_FIELD_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
* ib_set_cpi_capmask2 - Sets the capmask2 in an
|
||||
* ib_class_port_info mad.
|
||||
* @cpi: A struct ib_class_port_info.
|
||||
* @capmask2: The capmask2 to set.
|
||||
*/
|
||||
static inline void ib_set_cpi_capmask2(struct ib_class_port_info *cpi,
|
||||
u32 capmask2)
|
||||
{
|
||||
cpi->cap_mask2_resp_time =
|
||||
(cpi->cap_mask2_resp_time &
|
||||
cpu_to_be32(IB_CLASS_PORT_INFO_RESP_TIME_MASK)) |
|
||||
cpu_to_be32(capmask2 <<
|
||||
IB_CLASS_PORT_INFO_RESP_TIME_FIELD_SIZE);
|
||||
}
|
||||
|
||||
struct ib_mad_notice_attr {
|
||||
u8 generic_type;
|
||||
u8 prod_type_msb;
|
||||
|
|
|
|||
Loading…
Reference in a new issue