wext: uninline stream addition functions
With 78, 111 and 85 bytes respectively (on x86-64), the functions iwe_stream_add_event(), iwe_stream_add_point() and iwe_stream_add_value() really shouldn't be inlines. It appears that at least my compiler already decided the same, and created a single instance of each one of them for each file using it, but that's still a number of instances in the system overall, which this reduces. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
2cc6f5a715
commit
10b2eb6949
|
@ -505,25 +505,8 @@ static inline int iwe_stream_event_len_adjust(struct iw_request_info *info,
|
||||||
/*
|
/*
|
||||||
* Wrapper to add an Wireless Event to a stream of events.
|
* Wrapper to add an Wireless Event to a stream of events.
|
||||||
*/
|
*/
|
||||||
static inline char *
|
char *iwe_stream_add_event(struct iw_request_info *info, char *stream,
|
||||||
iwe_stream_add_event(struct iw_request_info *info, char *stream, char *ends,
|
char *ends, struct iw_event *iwe, int event_len);
|
||||||
struct iw_event *iwe, int event_len)
|
|
||||||
{
|
|
||||||
int lcp_len = iwe_stream_lcp_len(info);
|
|
||||||
|
|
||||||
event_len = iwe_stream_event_len_adjust(info, event_len);
|
|
||||||
|
|
||||||
/* Check if it's possible */
|
|
||||||
if(likely((stream + event_len) < ends)) {
|
|
||||||
iwe->len = event_len;
|
|
||||||
/* Beware of alignement issues on 64 bits */
|
|
||||||
memcpy(stream, (char *) iwe, IW_EV_LCP_PK_LEN);
|
|
||||||
memcpy(stream + lcp_len, &iwe->u,
|
|
||||||
event_len - lcp_len);
|
|
||||||
stream += event_len;
|
|
||||||
}
|
|
||||||
return stream;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline char *
|
static inline char *
|
||||||
iwe_stream_add_event_check(struct iw_request_info *info, char *stream,
|
iwe_stream_add_event_check(struct iw_request_info *info, char *stream,
|
||||||
|
@ -541,27 +524,8 @@ iwe_stream_add_event_check(struct iw_request_info *info, char *stream,
|
||||||
* Wrapper to add an short Wireless Event containing a pointer to a
|
* Wrapper to add an short Wireless Event containing a pointer to a
|
||||||
* stream of events.
|
* stream of events.
|
||||||
*/
|
*/
|
||||||
static inline char *
|
char *iwe_stream_add_point(struct iw_request_info *info, char *stream,
|
||||||
iwe_stream_add_point(struct iw_request_info *info, char *stream, char *ends,
|
char *ends, struct iw_event *iwe, char *extra);
|
||||||
struct iw_event *iwe, char *extra)
|
|
||||||
{
|
|
||||||
int event_len = iwe_stream_point_len(info) + iwe->u.data.length;
|
|
||||||
int point_len = iwe_stream_point_len(info);
|
|
||||||
int lcp_len = iwe_stream_lcp_len(info);
|
|
||||||
|
|
||||||
/* Check if it's possible */
|
|
||||||
if(likely((stream + event_len) < ends)) {
|
|
||||||
iwe->len = event_len;
|
|
||||||
memcpy(stream, (char *) iwe, IW_EV_LCP_PK_LEN);
|
|
||||||
memcpy(stream + lcp_len,
|
|
||||||
((char *) &iwe->u) + IW_EV_POINT_OFF,
|
|
||||||
IW_EV_POINT_PK_LEN - IW_EV_LCP_PK_LEN);
|
|
||||||
if (iwe->u.data.length && extra)
|
|
||||||
memcpy(stream + point_len, extra, iwe->u.data.length);
|
|
||||||
stream += event_len;
|
|
||||||
}
|
|
||||||
return stream;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline char *
|
static inline char *
|
||||||
iwe_stream_add_point_check(struct iw_request_info *info, char *stream,
|
iwe_stream_add_point_check(struct iw_request_info *info, char *stream,
|
||||||
|
@ -580,25 +544,8 @@ iwe_stream_add_point_check(struct iw_request_info *info, char *stream,
|
||||||
* Be careful, this one is tricky to use properly :
|
* Be careful, this one is tricky to use properly :
|
||||||
* At the first run, you need to have (value = event + IW_EV_LCP_LEN).
|
* At the first run, you need to have (value = event + IW_EV_LCP_LEN).
|
||||||
*/
|
*/
|
||||||
static inline char *
|
char *iwe_stream_add_value(struct iw_request_info *info, char *event,
|
||||||
iwe_stream_add_value(struct iw_request_info *info, char *event, char *value,
|
char *value, char *ends, struct iw_event *iwe,
|
||||||
char *ends, struct iw_event *iwe, int event_len)
|
int event_len);
|
||||||
{
|
|
||||||
int lcp_len = iwe_stream_lcp_len(info);
|
|
||||||
|
|
||||||
/* Don't duplicate LCP */
|
|
||||||
event_len -= IW_EV_LCP_LEN;
|
|
||||||
|
|
||||||
/* Check if it's possible */
|
|
||||||
if(likely((value + event_len) < ends)) {
|
|
||||||
/* Add new value */
|
|
||||||
memcpy(value, &iwe->u, event_len);
|
|
||||||
value += event_len;
|
|
||||||
/* Patch LCP */
|
|
||||||
iwe->len = value - event;
|
|
||||||
memcpy(event, (char *) iwe, lcp_len);
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* _IW_HANDLER_H */
|
#endif /* _IW_HANDLER_H */
|
||||||
|
|
|
@ -1119,3 +1119,70 @@ int compat_wext_handle_ioctl(struct net *net, unsigned int cmd,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
char *iwe_stream_add_event(struct iw_request_info *info, char *stream,
|
||||||
|
char *ends, struct iw_event *iwe, int event_len)
|
||||||
|
{
|
||||||
|
int lcp_len = iwe_stream_lcp_len(info);
|
||||||
|
|
||||||
|
event_len = iwe_stream_event_len_adjust(info, event_len);
|
||||||
|
|
||||||
|
/* Check if it's possible */
|
||||||
|
if (likely((stream + event_len) < ends)) {
|
||||||
|
iwe->len = event_len;
|
||||||
|
/* Beware of alignement issues on 64 bits */
|
||||||
|
memcpy(stream, (char *) iwe, IW_EV_LCP_PK_LEN);
|
||||||
|
memcpy(stream + lcp_len, &iwe->u,
|
||||||
|
event_len - lcp_len);
|
||||||
|
stream += event_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(iwe_stream_add_event);
|
||||||
|
|
||||||
|
char *iwe_stream_add_point(struct iw_request_info *info, char *stream,
|
||||||
|
char *ends, struct iw_event *iwe, char *extra)
|
||||||
|
{
|
||||||
|
int event_len = iwe_stream_point_len(info) + iwe->u.data.length;
|
||||||
|
int point_len = iwe_stream_point_len(info);
|
||||||
|
int lcp_len = iwe_stream_lcp_len(info);
|
||||||
|
|
||||||
|
/* Check if it's possible */
|
||||||
|
if (likely((stream + event_len) < ends)) {
|
||||||
|
iwe->len = event_len;
|
||||||
|
memcpy(stream, (char *) iwe, IW_EV_LCP_PK_LEN);
|
||||||
|
memcpy(stream + lcp_len,
|
||||||
|
((char *) &iwe->u) + IW_EV_POINT_OFF,
|
||||||
|
IW_EV_POINT_PK_LEN - IW_EV_LCP_PK_LEN);
|
||||||
|
if (iwe->u.data.length && extra)
|
||||||
|
memcpy(stream + point_len, extra, iwe->u.data.length);
|
||||||
|
stream += event_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(iwe_stream_add_point);
|
||||||
|
|
||||||
|
char *iwe_stream_add_value(struct iw_request_info *info, char *event,
|
||||||
|
char *value, char *ends, struct iw_event *iwe,
|
||||||
|
int event_len)
|
||||||
|
{
|
||||||
|
int lcp_len = iwe_stream_lcp_len(info);
|
||||||
|
|
||||||
|
/* Don't duplicate LCP */
|
||||||
|
event_len -= IW_EV_LCP_LEN;
|
||||||
|
|
||||||
|
/* Check if it's possible */
|
||||||
|
if (likely((value + event_len) < ends)) {
|
||||||
|
/* Add new value */
|
||||||
|
memcpy(value, &iwe->u, event_len);
|
||||||
|
value += event_len;
|
||||||
|
/* Patch LCP */
|
||||||
|
iwe->len = value - event;
|
||||||
|
memcpy(event, (char *) iwe, lcp_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(iwe_stream_add_value);
|
||||||
|
|
Loading…
Reference in New Issue